Lines Matching refs:dev_opp
69 struct device_opp *dev_opp; member
135 struct device_opp *tmp_dev_opp, *dev_opp = ERR_PTR(-ENODEV); in _find_device_opp() local
144 dev_opp = tmp_dev_opp; in _find_device_opp()
149 return dev_opp; in _find_device_opp()
227 struct device_opp *dev_opp; in dev_pm_opp_get_opp_count() local
233 dev_opp = _find_device_opp(dev); in dev_pm_opp_get_opp_count()
234 if (IS_ERR(dev_opp)) { in dev_pm_opp_get_opp_count()
235 count = PTR_ERR(dev_opp); in dev_pm_opp_get_opp_count()
241 list_for_each_entry_rcu(temp_opp, &dev_opp->opp_list, node) { in dev_pm_opp_get_opp_count()
282 struct device_opp *dev_opp; in dev_pm_opp_find_freq_exact() local
287 dev_opp = _find_device_opp(dev); in dev_pm_opp_find_freq_exact()
288 if (IS_ERR(dev_opp)) { in dev_pm_opp_find_freq_exact()
289 int r = PTR_ERR(dev_opp); in dev_pm_opp_find_freq_exact()
294 list_for_each_entry_rcu(temp_opp, &dev_opp->opp_list, node) { in dev_pm_opp_find_freq_exact()
330 struct device_opp *dev_opp; in dev_pm_opp_find_freq_ceil() local
340 dev_opp = _find_device_opp(dev); in dev_pm_opp_find_freq_ceil()
341 if (IS_ERR(dev_opp)) in dev_pm_opp_find_freq_ceil()
342 return ERR_CAST(dev_opp); in dev_pm_opp_find_freq_ceil()
344 list_for_each_entry_rcu(temp_opp, &dev_opp->opp_list, node) { in dev_pm_opp_find_freq_ceil()
380 struct device_opp *dev_opp; in dev_pm_opp_find_freq_floor() local
390 dev_opp = _find_device_opp(dev); in dev_pm_opp_find_freq_floor()
391 if (IS_ERR(dev_opp)) in dev_pm_opp_find_freq_floor()
392 return ERR_CAST(dev_opp); in dev_pm_opp_find_freq_floor()
394 list_for_each_entry_rcu(temp_opp, &dev_opp->opp_list, node) { in dev_pm_opp_find_freq_floor()
421 struct device_opp *dev_opp; in _add_device_opp() local
427 dev_opp = kzalloc(sizeof(*dev_opp), GFP_KERNEL); in _add_device_opp()
428 if (!dev_opp) in _add_device_opp()
431 dev_opp->dev = dev; in _add_device_opp()
432 srcu_init_notifier_head(&dev_opp->srcu_head); in _add_device_opp()
433 INIT_LIST_HEAD(&dev_opp->opp_list); in _add_device_opp()
436 list_add_rcu(&dev_opp->node, &dev_opp_list); in _add_device_opp()
437 return dev_opp; in _add_device_opp()
470 struct device_opp *dev_opp = NULL; in _opp_add_dynamic() local
490 dev_opp = _find_device_opp(dev); in _opp_add_dynamic()
491 if (IS_ERR(dev_opp)) { in _opp_add_dynamic()
492 dev_opp = _add_device_opp(dev); in _opp_add_dynamic()
493 if (!dev_opp) { in _opp_add_dynamic()
498 head = &dev_opp->opp_list; in _opp_add_dynamic()
506 head = &dev_opp->opp_list; in _opp_add_dynamic()
507 list_for_each_entry_rcu(opp, &dev_opp->opp_list, node) { in _opp_add_dynamic()
526 new_opp->dev_opp = dev_opp; in _opp_add_dynamic()
534 srcu_notifier_call_chain(&dev_opp->srcu_head, OPP_EVENT_ADD, new_opp); in _opp_add_dynamic()
605 static void _opp_remove(struct device_opp *dev_opp, in _opp_remove() argument
612 srcu_notifier_call_chain(&dev_opp->srcu_head, OPP_EVENT_REMOVE, opp); in _opp_remove()
614 call_srcu(&dev_opp->srcu_head.srcu, &opp->rcu_head, _kfree_opp_rcu); in _opp_remove()
616 if (list_empty(&dev_opp->opp_list)) { in _opp_remove()
617 list_del_rcu(&dev_opp->node); in _opp_remove()
618 call_srcu(&dev_opp->srcu_head.srcu, &dev_opp->rcu_head, in _opp_remove()
639 struct device_opp *dev_opp; in dev_pm_opp_remove() local
645 dev_opp = _find_device_opp(dev); in dev_pm_opp_remove()
646 if (IS_ERR(dev_opp)) in dev_pm_opp_remove()
649 list_for_each_entry(opp, &dev_opp->opp_list, node) { in dev_pm_opp_remove()
662 _opp_remove(dev_opp, opp); in dev_pm_opp_remove()
690 struct device_opp *dev_opp; in _opp_set_availability() local
702 dev_opp = _find_device_opp(dev); in _opp_set_availability()
703 if (IS_ERR(dev_opp)) { in _opp_set_availability()
704 r = PTR_ERR(dev_opp); in _opp_set_availability()
710 list_for_each_entry(tmp_opp, &dev_opp->opp_list, node) { in _opp_set_availability()
732 call_srcu(&dev_opp->srcu_head.srcu, &opp->rcu_head, _kfree_opp_rcu); in _opp_set_availability()
736 srcu_notifier_call_chain(&dev_opp->srcu_head, OPP_EVENT_ENABLE, in _opp_set_availability()
739 srcu_notifier_call_chain(&dev_opp->srcu_head, OPP_EVENT_DISABLE, in _opp_set_availability()
817 struct device_opp *dev_opp = _find_device_opp(dev); in dev_pm_opp_get_notifier() local
819 if (IS_ERR(dev_opp)) in dev_pm_opp_get_notifier()
820 return ERR_CAST(dev_opp); /* matching type */ in dev_pm_opp_get_notifier()
822 return &dev_opp->srcu_head; in dev_pm_opp_get_notifier()
900 struct device_opp *dev_opp; in of_free_opp_table() local
904 dev_opp = _find_device_opp(dev); in of_free_opp_table()
905 if (IS_ERR(dev_opp)) { in of_free_opp_table()
906 int error = PTR_ERR(dev_opp); in of_free_opp_table()
919 list_for_each_entry_safe(opp, tmp, &dev_opp->opp_list, node) { in of_free_opp_table()
921 _opp_remove(dev_opp, opp); in of_free_opp_table()