Lines Matching refs:opp

99 unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)  in dev_pm_opp_get_voltage()  argument
101 if (IS_ERR_OR_NULL(opp)) { in dev_pm_opp_get_voltage()
106 return opp->supplies[0].u_volt; in dev_pm_opp_get_voltage()
117 unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp) in dev_pm_opp_get_freq() argument
119 if (IS_ERR_OR_NULL(opp) || !opp->available) { in dev_pm_opp_get_freq()
124 return opp->rate; in dev_pm_opp_get_freq()
138 bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp) in dev_pm_opp_is_turbo() argument
140 if (IS_ERR_OR_NULL(opp) || !opp->available) { in dev_pm_opp_is_turbo()
145 return opp->turbo; in dev_pm_opp_is_turbo()
181 struct dev_pm_opp *opp; in dev_pm_opp_get_max_volt_latency() local
210 list_for_each_entry(opp, &opp_table->opp_list, node) { in dev_pm_opp_get_max_volt_latency()
211 if (!opp->available) in dev_pm_opp_get_max_volt_latency()
214 if (opp->supplies[i].u_volt_min < uV[i].min) in dev_pm_opp_get_max_volt_latency()
215 uV[i].min = opp->supplies[i].u_volt_min; in dev_pm_opp_get_max_volt_latency()
216 if (opp->supplies[i].u_volt_max > uV[i].max) in dev_pm_opp_get_max_volt_latency()
217 uV[i].max = opp->supplies[i].u_volt_max; in dev_pm_opp_get_max_volt_latency()
284 struct dev_pm_opp *opp; in _get_opp_count() local
289 list_for_each_entry(opp, &opp_table->opp_list, node) { in _get_opp_count()
290 if (opp->available) in _get_opp_count()
354 struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE); in dev_pm_opp_find_freq_exact() local
369 opp = temp_opp; in dev_pm_opp_find_freq_exact()
372 dev_pm_opp_get(opp); in dev_pm_opp_find_freq_exact()
380 return opp; in dev_pm_opp_find_freq_exact()
387 struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE); in _find_freq_ceil() local
393 opp = temp_opp; in _find_freq_ceil()
394 *freq = opp->rate; in _find_freq_ceil()
397 dev_pm_opp_get(opp); in _find_freq_ceil()
404 return opp; in _find_freq_ceil()
429 struct dev_pm_opp *opp; in dev_pm_opp_find_freq_ceil() local
440 opp = _find_freq_ceil(opp_table, freq); in dev_pm_opp_find_freq_ceil()
444 return opp; in dev_pm_opp_find_freq_ceil()
470 struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE); in dev_pm_opp_find_freq_floor() local
489 opp = temp_opp; in dev_pm_opp_find_freq_floor()
494 if (!IS_ERR(opp)) in dev_pm_opp_find_freq_floor()
495 dev_pm_opp_get(opp); in dev_pm_opp_find_freq_floor()
499 if (!IS_ERR(opp)) in dev_pm_opp_find_freq_floor()
500 *freq = opp->rate; in dev_pm_opp_find_freq_floor()
502 return opp; in dev_pm_opp_find_freq_floor()
645 struct dev_pm_opp *old_opp, *opp; in dev_pm_opp_set_rate() local
689 opp = _find_freq_ceil(opp_table, &freq); in dev_pm_opp_set_rate()
690 if (IS_ERR(opp)) { in dev_pm_opp_set_rate()
691 ret = PTR_ERR(opp); in dev_pm_opp_set_rate()
709 opp->pstate); in dev_pm_opp_set_rate()
715 opp->supplies); in dev_pm_opp_set_rate()
726 size = sizeof(*opp->supplies) * opp_table->regulator_count; in dev_pm_opp_set_rate()
733 memcpy(data->new_opp.supplies, opp->supplies, size); in dev_pm_opp_set_rate()
738 dev_pm_opp_put(opp); in dev_pm_opp_set_rate()
879 void _opp_free(struct dev_pm_opp *opp) in _opp_free() argument
881 kfree(opp); in _opp_free()
886 struct dev_pm_opp *opp = container_of(kref, struct dev_pm_opp, kref); in _opp_kref_release() local
887 struct opp_table *opp_table = opp->opp_table; in _opp_kref_release()
893 blocking_notifier_call_chain(&opp_table->head, OPP_EVENT_REMOVE, opp); in _opp_kref_release()
894 opp_debug_remove_one(opp); in _opp_kref_release()
895 list_del(&opp->node); in _opp_kref_release()
896 kfree(opp); in _opp_kref_release()
902 void dev_pm_opp_get(struct dev_pm_opp *opp) in dev_pm_opp_get() argument
904 kref_get(&opp->kref); in dev_pm_opp_get()
907 void dev_pm_opp_put(struct dev_pm_opp *opp) in dev_pm_opp_put() argument
909 kref_put_mutex(&opp->kref, _opp_kref_release, &opp->opp_table->lock); in dev_pm_opp_put()
922 struct dev_pm_opp *opp; in dev_pm_opp_remove() local
932 list_for_each_entry(opp, &opp_table->opp_list, node) { in dev_pm_opp_remove()
933 if (opp->rate == freq) { in dev_pm_opp_remove()
942 dev_pm_opp_put(opp); in dev_pm_opp_remove()
954 struct dev_pm_opp *opp; in _opp_allocate() local
959 supply_size = sizeof(*opp->supplies) * count; in _opp_allocate()
962 opp = kzalloc(sizeof(*opp) + supply_size, GFP_KERNEL); in _opp_allocate()
963 if (!opp) in _opp_allocate()
967 opp->supplies = (struct dev_pm_opp_supply *)(opp + 1); in _opp_allocate()
968 INIT_LIST_HEAD(&opp->node); in _opp_allocate()
970 return opp; in _opp_allocate()
973 static bool _opp_supported_by_regulators(struct dev_pm_opp *opp, in _opp_supported_by_regulators() argument
983 opp->supplies[i].u_volt_min, in _opp_supported_by_regulators()
984 opp->supplies[i].u_volt_max)) { in _opp_supported_by_regulators()
986 __func__, opp->supplies[i].u_volt_min, in _opp_supported_by_regulators()
987 opp->supplies[i].u_volt_max); in _opp_supported_by_regulators()
999 struct dev_pm_opp *opp; in _opp_is_duplicate() local
1009 list_for_each_entry(opp, &opp_table->opp_list, node) { in _opp_is_duplicate()
1010 if (new_opp->rate > opp->rate) { in _opp_is_duplicate()
1011 *head = &opp->node; in _opp_is_duplicate()
1015 if (new_opp->rate < opp->rate) in _opp_is_duplicate()
1020 __func__, opp->rate, opp->supplies[0].u_volt, in _opp_is_duplicate()
1021 opp->available, new_opp->rate, in _opp_is_duplicate()
1025 return opp->available && in _opp_is_duplicate()
1026 new_opp->supplies[0].u_volt == opp->supplies[0].u_volt ? -EBUSY : -EEXIST; in _opp_is_duplicate()
1569 struct dev_pm_opp *tmp_opp, *opp = ERR_PTR(-ENODEV); in _opp_set_availability() local
1585 opp = tmp_opp; in _opp_set_availability()
1590 if (IS_ERR(opp)) { in _opp_set_availability()
1591 r = PTR_ERR(opp); in _opp_set_availability()
1596 if (opp->available == availability_req) in _opp_set_availability()
1599 opp->available = availability_req; in _opp_set_availability()
1601 dev_pm_opp_get(opp); in _opp_set_availability()
1607 opp); in _opp_set_availability()
1610 OPP_EVENT_DISABLE, opp); in _opp_set_availability()
1612 dev_pm_opp_put(opp); in _opp_set_availability()
1717 struct dev_pm_opp *opp, *tmp; in _dev_pm_opp_remove_table() local
1722 list_for_each_entry_safe(opp, tmp, &opp_table->opp_list, node) { in _dev_pm_opp_remove_table()
1723 if (remove_all || !opp->dynamic) in _dev_pm_opp_remove_table()
1724 dev_pm_opp_put(opp); in _dev_pm_opp_remove_table()