Lines Matching refs:opp
123 unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp) in dev_pm_opp_get_voltage() argument
130 tmp_opp = rcu_dereference(opp); in dev_pm_opp_get_voltage()
155 unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp) in dev_pm_opp_get_freq() argument
162 tmp_opp = rcu_dereference(opp); in dev_pm_opp_get_freq()
190 bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp) in dev_pm_opp_is_turbo() argument
196 tmp_opp = rcu_dereference(opp); in dev_pm_opp_is_turbo()
327 struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE); in dev_pm_opp_find_freq_exact() local
341 opp = temp_opp; in dev_pm_opp_find_freq_exact()
346 return opp; in dev_pm_opp_find_freq_exact()
375 struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE); in dev_pm_opp_find_freq_ceil() local
390 opp = temp_opp; in dev_pm_opp_find_freq_ceil()
391 *freq = opp->rate; in dev_pm_opp_find_freq_ceil()
396 return opp; in dev_pm_opp_find_freq_ceil()
425 struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE); in dev_pm_opp_find_freq_floor() local
444 opp = temp_opp; in dev_pm_opp_find_freq_floor()
447 if (!IS_ERR(opp)) in dev_pm_opp_find_freq_floor()
448 *freq = opp->rate; in dev_pm_opp_find_freq_floor()
450 return opp; in dev_pm_opp_find_freq_floor()
573 struct dev_pm_opp *opp = container_of(head, struct dev_pm_opp, rcu_head); in _kfree_opp_rcu() local
575 kfree_rcu(opp, rcu_head); in _kfree_opp_rcu()
591 struct dev_pm_opp *opp, bool notify) in _opp_remove() argument
598 srcu_notifier_call_chain(&dev_opp->srcu_head, OPP_EVENT_REMOVE, opp); in _opp_remove()
599 list_del_rcu(&opp->node); in _opp_remove()
600 call_srcu(&dev_opp->srcu_head.srcu, &opp->rcu_head, _kfree_opp_rcu); in _opp_remove()
620 struct dev_pm_opp *opp; in dev_pm_opp_remove() local
631 list_for_each_entry(opp, &dev_opp->opp_list, node) { in dev_pm_opp_remove()
632 if (opp->rate == freq) { in dev_pm_opp_remove()
644 _opp_remove(dev_opp, opp, true); in dev_pm_opp_remove()
653 struct dev_pm_opp *opp; in _allocate_opp() local
656 opp = kzalloc(sizeof(*opp), GFP_KERNEL); in _allocate_opp()
657 if (!opp) in _allocate_opp()
660 INIT_LIST_HEAD(&opp->node); in _allocate_opp()
664 kfree(opp); in _allocate_opp()
668 return opp; in _allocate_opp()
674 struct dev_pm_opp *opp; in _opp_add() local
685 list_for_each_entry_rcu(opp, &dev_opp->opp_list, node) { in _opp_add()
686 if (new_opp->rate > opp->rate) { in _opp_add()
687 head = &opp->node; in _opp_add()
691 if (new_opp->rate < opp->rate) in _opp_add()
696 __func__, opp->rate, opp->u_volt, opp->available, in _opp_add()
699 return opp->available && new_opp->u_volt == opp->u_volt ? in _opp_add()
779 static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev) in opp_parse_supplies() argument
786 if (!of_find_property(opp->np, "opp-microvolt", NULL)) in opp_parse_supplies()
789 count = of_property_count_u32_elems(opp->np, "opp-microvolt"); in opp_parse_supplies()
803 ret = of_property_read_u32_array(opp->np, "opp-microvolt", microvolt, in opp_parse_supplies()
811 opp->u_volt = microvolt[0]; in opp_parse_supplies()
814 opp->u_volt_min = opp->u_volt; in opp_parse_supplies()
815 opp->u_volt_max = opp->u_volt; in opp_parse_supplies()
817 opp->u_volt_min = microvolt[1]; in opp_parse_supplies()
818 opp->u_volt_max = microvolt[2]; in opp_parse_supplies()
821 if (!of_property_read_u32(opp->np, "opp-microamp", &val)) in opp_parse_supplies()
822 opp->u_amp = val; in opp_parse_supplies()
982 struct dev_pm_opp *new_opp, *tmp_opp, *opp = ERR_PTR(-ENODEV); in _opp_set_availability() local
1003 opp = tmp_opp; in _opp_set_availability()
1007 if (IS_ERR(opp)) { in _opp_set_availability()
1008 r = PTR_ERR(opp); in _opp_set_availability()
1013 if (opp->available == availability_req) in _opp_set_availability()
1016 *new_opp = *opp; in _opp_set_availability()
1021 list_replace_rcu(&opp->node, &new_opp->node); in _opp_set_availability()
1023 call_srcu(&dev_opp->srcu_head.srcu, &opp->rcu_head, _kfree_opp_rcu); in _opp_set_availability()
1134 struct dev_pm_opp *opp, *tmp; in dev_pm_opp_of_remove_table() local
1155 list_for_each_entry_safe(opp, tmp, &dev_opp->opp_list, node) { in dev_pm_opp_of_remove_table()
1156 if (!opp->dynamic) in dev_pm_opp_of_remove_table()
1157 _opp_remove(dev_opp, opp, true); in dev_pm_opp_of_remove_table()