Lines Matching refs:opp_table
37 struct opp_table *opp_table) in _find_opp_dev() argument
41 list_for_each_entry(opp_dev, &opp_table->dev_list, node) in _find_opp_dev()
48 static struct opp_table *_find_opp_table_unlocked(struct device *dev) in _find_opp_table_unlocked()
50 struct opp_table *opp_table; in _find_opp_table_unlocked() local
52 list_for_each_entry(opp_table, &opp_tables, node) { in _find_opp_table_unlocked()
53 if (_find_opp_dev(dev, opp_table)) { in _find_opp_table_unlocked()
54 _get_opp_table_kref(opp_table); in _find_opp_table_unlocked()
56 return opp_table; in _find_opp_table_unlocked()
74 struct opp_table *_find_opp_table(struct device *dev) in _find_opp_table()
76 struct opp_table *opp_table; in _find_opp_table() local
84 opp_table = _find_opp_table_unlocked(dev); in _find_opp_table()
87 return opp_table; in _find_opp_table()
157 struct opp_table *opp_table; in dev_pm_opp_get_max_clock_latency() local
160 opp_table = _find_opp_table(dev); in dev_pm_opp_get_max_clock_latency()
161 if (IS_ERR(opp_table)) in dev_pm_opp_get_max_clock_latency()
164 clock_latency_ns = opp_table->clock_latency_ns_max; in dev_pm_opp_get_max_clock_latency()
166 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_get_max_clock_latency()
180 struct opp_table *opp_table; in dev_pm_opp_get_max_volt_latency() local
190 opp_table = _find_opp_table(dev); in dev_pm_opp_get_max_volt_latency()
191 if (IS_ERR(opp_table)) in dev_pm_opp_get_max_volt_latency()
194 count = opp_table->regulator_count; in dev_pm_opp_get_max_volt_latency()
204 mutex_lock(&opp_table->lock); in dev_pm_opp_get_max_volt_latency()
210 list_for_each_entry(opp, &opp_table->opp_list, node) { in dev_pm_opp_get_max_volt_latency()
221 mutex_unlock(&opp_table->lock); in dev_pm_opp_get_max_volt_latency()
228 reg = opp_table->regulators[i]; in dev_pm_opp_get_max_volt_latency()
236 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_get_max_volt_latency()
266 struct opp_table *opp_table; in dev_pm_opp_get_suspend_opp_freq() local
269 opp_table = _find_opp_table(dev); in dev_pm_opp_get_suspend_opp_freq()
270 if (IS_ERR(opp_table)) in dev_pm_opp_get_suspend_opp_freq()
273 if (opp_table->suspend_opp && opp_table->suspend_opp->available) in dev_pm_opp_get_suspend_opp_freq()
274 freq = dev_pm_opp_get_freq(opp_table->suspend_opp); in dev_pm_opp_get_suspend_opp_freq()
276 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_get_suspend_opp_freq()
282 int _get_opp_count(struct opp_table *opp_table) in _get_opp_count() argument
287 mutex_lock(&opp_table->lock); in _get_opp_count()
289 list_for_each_entry(opp, &opp_table->opp_list, node) { in _get_opp_count()
294 mutex_unlock(&opp_table->lock); in _get_opp_count()
308 struct opp_table *opp_table; in dev_pm_opp_get_opp_count() local
311 opp_table = _find_opp_table(dev); in dev_pm_opp_get_opp_count()
312 if (IS_ERR(opp_table)) { in dev_pm_opp_get_opp_count()
313 count = PTR_ERR(opp_table); in dev_pm_opp_get_opp_count()
319 count = _get_opp_count(opp_table); in dev_pm_opp_get_opp_count()
320 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_get_opp_count()
353 struct opp_table *opp_table; in dev_pm_opp_find_freq_exact() local
356 opp_table = _find_opp_table(dev); in dev_pm_opp_find_freq_exact()
357 if (IS_ERR(opp_table)) { in dev_pm_opp_find_freq_exact()
358 int r = PTR_ERR(opp_table); in dev_pm_opp_find_freq_exact()
364 mutex_lock(&opp_table->lock); in dev_pm_opp_find_freq_exact()
366 list_for_each_entry(temp_opp, &opp_table->opp_list, node) { in dev_pm_opp_find_freq_exact()
377 mutex_unlock(&opp_table->lock); in dev_pm_opp_find_freq_exact()
378 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_find_freq_exact()
384 static noinline struct dev_pm_opp *_find_freq_ceil(struct opp_table *opp_table, in _find_freq_ceil() argument
389 mutex_lock(&opp_table->lock); in _find_freq_ceil()
391 list_for_each_entry(temp_opp, &opp_table->opp_list, node) { in _find_freq_ceil()
402 mutex_unlock(&opp_table->lock); in _find_freq_ceil()
428 struct opp_table *opp_table; in dev_pm_opp_find_freq_ceil() local
436 opp_table = _find_opp_table(dev); in dev_pm_opp_find_freq_ceil()
437 if (IS_ERR(opp_table)) in dev_pm_opp_find_freq_ceil()
438 return ERR_CAST(opp_table); in dev_pm_opp_find_freq_ceil()
440 opp = _find_freq_ceil(opp_table, freq); in dev_pm_opp_find_freq_ceil()
442 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_find_freq_ceil()
469 struct opp_table *opp_table; in dev_pm_opp_find_freq_floor() local
477 opp_table = _find_opp_table(dev); in dev_pm_opp_find_freq_floor()
478 if (IS_ERR(opp_table)) in dev_pm_opp_find_freq_floor()
479 return ERR_CAST(opp_table); in dev_pm_opp_find_freq_floor()
481 mutex_lock(&opp_table->lock); in dev_pm_opp_find_freq_floor()
483 list_for_each_entry(temp_opp, &opp_table->opp_list, node) { in dev_pm_opp_find_freq_floor()
496 mutex_unlock(&opp_table->lock); in dev_pm_opp_find_freq_floor()
497 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_find_freq_floor()
584 static int _generic_set_opp_regulator(const struct opp_table *opp_table, in _generic_set_opp_regulator() argument
591 struct regulator *reg = opp_table->regulators[0]; in _generic_set_opp_regulator()
595 if (WARN_ON(opp_table->regulator_count > 1)) { in _generic_set_opp_regulator()
608 ret = _generic_set_opp_clk_only(dev, opp_table->clk, old_freq, freq); in _generic_set_opp_regulator()
622 if (_generic_set_opp_clk_only(dev, opp_table->clk, freq, old_freq)) in _generic_set_opp_regulator()
643 struct opp_table *opp_table; in dev_pm_opp_set_rate() local
655 opp_table = _find_opp_table(dev); in dev_pm_opp_set_rate()
656 if (IS_ERR(opp_table)) { in dev_pm_opp_set_rate()
658 return PTR_ERR(opp_table); in dev_pm_opp_set_rate()
661 clk = opp_table->clk; in dev_pm_opp_set_rate()
683 old_opp = _find_freq_ceil(opp_table, &old_freq); in dev_pm_opp_set_rate()
689 opp = _find_freq_ceil(opp_table, &freq); in dev_pm_opp_set_rate()
701 if (!opp_table->regulators) { in dev_pm_opp_set_rate()
706 if (opp_table->genpd_performance_state) in dev_pm_opp_set_rate()
712 } else if (!opp_table->set_opp) { in dev_pm_opp_set_rate()
713 ret = _generic_set_opp_regulator(opp_table, dev, old_freq, freq, in dev_pm_opp_set_rate()
719 data = opp_table->set_opp_data; in dev_pm_opp_set_rate()
720 data->regulators = opp_table->regulators; in dev_pm_opp_set_rate()
721 data->regulator_count = opp_table->regulator_count; in dev_pm_opp_set_rate()
726 size = sizeof(*opp->supplies) * opp_table->regulator_count; in dev_pm_opp_set_rate()
735 ret = opp_table->set_opp(data); in dev_pm_opp_set_rate()
743 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_set_rate()
750 struct opp_table *opp_table) in _remove_opp_dev() argument
752 opp_debug_unregister(opp_dev, opp_table); in _remove_opp_dev()
758 struct opp_table *opp_table) in _add_opp_dev() argument
769 list_add(&opp_dev->node, &opp_table->dev_list); in _add_opp_dev()
772 ret = opp_debug_register(opp_dev, opp_table); in _add_opp_dev()
780 static struct opp_table *_allocate_opp_table(struct device *dev) in _allocate_opp_table()
782 struct opp_table *opp_table; in _allocate_opp_table() local
790 opp_table = kzalloc(sizeof(*opp_table), GFP_KERNEL); in _allocate_opp_table()
791 if (!opp_table) in _allocate_opp_table()
794 INIT_LIST_HEAD(&opp_table->dev_list); in _allocate_opp_table()
796 opp_dev = _add_opp_dev(dev, opp_table); in _allocate_opp_table()
798 kfree(opp_table); in _allocate_opp_table()
802 _of_init_opp_table(opp_table, dev); in _allocate_opp_table()
805 opp_table->clk = clk_get(dev, NULL); in _allocate_opp_table()
806 if (IS_ERR(opp_table->clk)) { in _allocate_opp_table()
807 ret = PTR_ERR(opp_table->clk); in _allocate_opp_table()
813 BLOCKING_INIT_NOTIFIER_HEAD(&opp_table->head); in _allocate_opp_table()
814 INIT_LIST_HEAD(&opp_table->opp_list); in _allocate_opp_table()
815 mutex_init(&opp_table->lock); in _allocate_opp_table()
816 kref_init(&opp_table->kref); in _allocate_opp_table()
819 list_add(&opp_table->node, &opp_tables); in _allocate_opp_table()
820 return opp_table; in _allocate_opp_table()
823 void _get_opp_table_kref(struct opp_table *opp_table) in _get_opp_table_kref() argument
825 kref_get(&opp_table->kref); in _get_opp_table_kref()
828 struct opp_table *dev_pm_opp_get_opp_table(struct device *dev) in dev_pm_opp_get_opp_table()
830 struct opp_table *opp_table; in dev_pm_opp_get_opp_table() local
835 opp_table = _find_opp_table_unlocked(dev); in dev_pm_opp_get_opp_table()
836 if (!IS_ERR(opp_table)) in dev_pm_opp_get_opp_table()
839 opp_table = _allocate_opp_table(dev); in dev_pm_opp_get_opp_table()
844 return opp_table; in dev_pm_opp_get_opp_table()
850 struct opp_table *opp_table = container_of(kref, struct opp_table, kref); in _opp_table_kref_release() local
854 if (!IS_ERR(opp_table->clk)) in _opp_table_kref_release()
855 clk_put(opp_table->clk); in _opp_table_kref_release()
857 opp_dev = list_first_entry(&opp_table->dev_list, struct opp_device, in _opp_table_kref_release()
860 _remove_opp_dev(opp_dev, opp_table); in _opp_table_kref_release()
863 WARN_ON(!list_empty(&opp_table->dev_list)); in _opp_table_kref_release()
865 mutex_destroy(&opp_table->lock); in _opp_table_kref_release()
866 list_del(&opp_table->node); in _opp_table_kref_release()
867 kfree(opp_table); in _opp_table_kref_release()
872 void dev_pm_opp_put_opp_table(struct opp_table *opp_table) in dev_pm_opp_put_opp_table() argument
874 kref_put_mutex(&opp_table->kref, _opp_table_kref_release, in dev_pm_opp_put_opp_table()
887 struct opp_table *opp_table = opp->opp_table; in _opp_kref_release() local
893 blocking_notifier_call_chain(&opp_table->head, OPP_EVENT_REMOVE, opp); in _opp_kref_release()
898 mutex_unlock(&opp_table->lock); in _opp_kref_release()
899 dev_pm_opp_put_opp_table(opp_table); in _opp_kref_release()
909 kref_put_mutex(&opp->kref, _opp_kref_release, &opp->opp_table->lock); in dev_pm_opp_put()
923 struct opp_table *opp_table; in dev_pm_opp_remove() local
926 opp_table = _find_opp_table(dev); in dev_pm_opp_remove()
927 if (IS_ERR(opp_table)) in dev_pm_opp_remove()
930 mutex_lock(&opp_table->lock); in dev_pm_opp_remove()
932 list_for_each_entry(opp, &opp_table->opp_list, node) { in dev_pm_opp_remove()
939 mutex_unlock(&opp_table->lock); in dev_pm_opp_remove()
948 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_remove()
952 struct dev_pm_opp *_opp_allocate(struct opp_table *table) in _opp_allocate()
974 struct opp_table *opp_table) in _opp_supported_by_regulators() argument
979 for (i = 0; i < opp_table->regulator_count; i++) { in _opp_supported_by_regulators()
980 reg = opp_table->regulators[i]; in _opp_supported_by_regulators()
996 struct opp_table *opp_table, in _opp_is_duplicate() argument
1009 list_for_each_entry(opp, &opp_table->opp_list, node) { in _opp_is_duplicate()
1043 struct opp_table *opp_table, bool rate_not_available) in _opp_add() argument
1048 mutex_lock(&opp_table->lock); in _opp_add()
1049 head = &opp_table->opp_list; in _opp_add()
1052 ret = _opp_is_duplicate(dev, new_opp, opp_table, &head); in _opp_add()
1054 mutex_unlock(&opp_table->lock); in _opp_add()
1060 mutex_unlock(&opp_table->lock); in _opp_add()
1062 new_opp->opp_table = opp_table; in _opp_add()
1066 _get_opp_table_kref(opp_table); in _opp_add()
1068 ret = opp_debug_create_one(new_opp, opp_table); in _opp_add()
1073 if (!_opp_supported_by_regulators(new_opp, opp_table)) { in _opp_add()
1104 int _opp_add_v1(struct opp_table *opp_table, struct device *dev, in _opp_add_v1() argument
1111 new_opp = _opp_allocate(opp_table); in _opp_add_v1()
1117 tol = u_volt * opp_table->voltage_tolerance_v1 / 100; in _opp_add_v1()
1124 ret = _opp_add(dev, new_opp, opp_table, false); in _opp_add_v1()
1136 blocking_notifier_call_chain(&opp_table->head, OPP_EVENT_ADD, new_opp); in _opp_add_v1()
1156 struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev, in dev_pm_opp_set_supported_hw()
1159 struct opp_table *opp_table; in dev_pm_opp_set_supported_hw() local
1161 opp_table = dev_pm_opp_get_opp_table(dev); in dev_pm_opp_set_supported_hw()
1162 if (!opp_table) in dev_pm_opp_set_supported_hw()
1166 WARN_ON(!list_empty(&opp_table->opp_list)); in dev_pm_opp_set_supported_hw()
1169 if (opp_table->supported_hw) in dev_pm_opp_set_supported_hw()
1170 return opp_table; in dev_pm_opp_set_supported_hw()
1172 opp_table->supported_hw = kmemdup(versions, count * sizeof(*versions), in dev_pm_opp_set_supported_hw()
1174 if (!opp_table->supported_hw) { in dev_pm_opp_set_supported_hw()
1175 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_set_supported_hw()
1179 opp_table->supported_hw_count = count; in dev_pm_opp_set_supported_hw()
1181 return opp_table; in dev_pm_opp_set_supported_hw()
1193 void dev_pm_opp_put_supported_hw(struct opp_table *opp_table) in dev_pm_opp_put_supported_hw() argument
1196 WARN_ON(!list_empty(&opp_table->opp_list)); in dev_pm_opp_put_supported_hw()
1198 kfree(opp_table->supported_hw); in dev_pm_opp_put_supported_hw()
1199 opp_table->supported_hw = NULL; in dev_pm_opp_put_supported_hw()
1200 opp_table->supported_hw_count = 0; in dev_pm_opp_put_supported_hw()
1202 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_put_supported_hw()
1216 struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name) in dev_pm_opp_set_prop_name()
1218 struct opp_table *opp_table; in dev_pm_opp_set_prop_name() local
1220 opp_table = dev_pm_opp_get_opp_table(dev); in dev_pm_opp_set_prop_name()
1221 if (!opp_table) in dev_pm_opp_set_prop_name()
1225 WARN_ON(!list_empty(&opp_table->opp_list)); in dev_pm_opp_set_prop_name()
1228 if (opp_table->prop_name) in dev_pm_opp_set_prop_name()
1229 return opp_table; in dev_pm_opp_set_prop_name()
1231 opp_table->prop_name = kstrdup(name, GFP_KERNEL); in dev_pm_opp_set_prop_name()
1232 if (!opp_table->prop_name) { in dev_pm_opp_set_prop_name()
1233 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_set_prop_name()
1237 return opp_table; in dev_pm_opp_set_prop_name()
1249 void dev_pm_opp_put_prop_name(struct opp_table *opp_table) in dev_pm_opp_put_prop_name() argument
1252 WARN_ON(!list_empty(&opp_table->opp_list)); in dev_pm_opp_put_prop_name()
1254 kfree(opp_table->prop_name); in dev_pm_opp_put_prop_name()
1255 opp_table->prop_name = NULL; in dev_pm_opp_put_prop_name()
1257 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_put_prop_name()
1261 static int _allocate_set_opp_data(struct opp_table *opp_table) in _allocate_set_opp_data() argument
1264 int len, count = opp_table->regulator_count; in _allocate_set_opp_data()
1282 opp_table->set_opp_data = data; in _allocate_set_opp_data()
1287 static void _free_set_opp_data(struct opp_table *opp_table) in _free_set_opp_data() argument
1289 kfree(opp_table->set_opp_data); in _free_set_opp_data()
1290 opp_table->set_opp_data = NULL; in _free_set_opp_data()
1305 struct opp_table *dev_pm_opp_set_regulators(struct device *dev, in dev_pm_opp_set_regulators()
1309 struct opp_table *opp_table; in dev_pm_opp_set_regulators() local
1313 opp_table = dev_pm_opp_get_opp_table(dev); in dev_pm_opp_set_regulators()
1314 if (!opp_table) in dev_pm_opp_set_regulators()
1318 if (WARN_ON(!list_empty(&opp_table->opp_list))) { in dev_pm_opp_set_regulators()
1324 if (opp_table->regulators) in dev_pm_opp_set_regulators()
1325 return opp_table; in dev_pm_opp_set_regulators()
1327 opp_table->regulators = kmalloc_array(count, in dev_pm_opp_set_regulators()
1328 sizeof(*opp_table->regulators), in dev_pm_opp_set_regulators()
1330 if (!opp_table->regulators) { in dev_pm_opp_set_regulators()
1345 opp_table->regulators[i] = reg; in dev_pm_opp_set_regulators()
1348 opp_table->regulator_count = count; in dev_pm_opp_set_regulators()
1351 ret = _allocate_set_opp_data(opp_table); in dev_pm_opp_set_regulators()
1355 return opp_table; in dev_pm_opp_set_regulators()
1359 regulator_put(opp_table->regulators[--i]); in dev_pm_opp_set_regulators()
1361 kfree(opp_table->regulators); in dev_pm_opp_set_regulators()
1362 opp_table->regulators = NULL; in dev_pm_opp_set_regulators()
1363 opp_table->regulator_count = 0; in dev_pm_opp_set_regulators()
1365 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_set_regulators()
1375 void dev_pm_opp_put_regulators(struct opp_table *opp_table) in dev_pm_opp_put_regulators() argument
1379 if (!opp_table->regulators) in dev_pm_opp_put_regulators()
1383 WARN_ON(!list_empty(&opp_table->opp_list)); in dev_pm_opp_put_regulators()
1385 for (i = opp_table->regulator_count - 1; i >= 0; i--) in dev_pm_opp_put_regulators()
1386 regulator_put(opp_table->regulators[i]); in dev_pm_opp_put_regulators()
1388 _free_set_opp_data(opp_table); in dev_pm_opp_put_regulators()
1390 kfree(opp_table->regulators); in dev_pm_opp_put_regulators()
1391 opp_table->regulators = NULL; in dev_pm_opp_put_regulators()
1392 opp_table->regulator_count = 0; in dev_pm_opp_put_regulators()
1395 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_put_regulators()
1411 struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char *name) in dev_pm_opp_set_clkname()
1413 struct opp_table *opp_table; in dev_pm_opp_set_clkname() local
1416 opp_table = dev_pm_opp_get_opp_table(dev); in dev_pm_opp_set_clkname()
1417 if (!opp_table) in dev_pm_opp_set_clkname()
1421 if (WARN_ON(!list_empty(&opp_table->opp_list))) { in dev_pm_opp_set_clkname()
1427 if (!IS_ERR(opp_table->clk)) in dev_pm_opp_set_clkname()
1428 clk_put(opp_table->clk); in dev_pm_opp_set_clkname()
1431 opp_table->clk = clk_get(dev, name); in dev_pm_opp_set_clkname()
1432 if (IS_ERR(opp_table->clk)) { in dev_pm_opp_set_clkname()
1433 ret = PTR_ERR(opp_table->clk); in dev_pm_opp_set_clkname()
1441 return opp_table; in dev_pm_opp_set_clkname()
1444 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_set_clkname()
1454 void dev_pm_opp_put_clkname(struct opp_table *opp_table) in dev_pm_opp_put_clkname() argument
1457 WARN_ON(!list_empty(&opp_table->opp_list)); in dev_pm_opp_put_clkname()
1459 clk_put(opp_table->clk); in dev_pm_opp_put_clkname()
1460 opp_table->clk = ERR_PTR(-EINVAL); in dev_pm_opp_put_clkname()
1462 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_put_clkname()
1476 struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, in dev_pm_opp_register_set_opp_helper()
1479 struct opp_table *opp_table; in dev_pm_opp_register_set_opp_helper() local
1484 opp_table = dev_pm_opp_get_opp_table(dev); in dev_pm_opp_register_set_opp_helper()
1485 if (!opp_table) in dev_pm_opp_register_set_opp_helper()
1489 if (WARN_ON(!list_empty(&opp_table->opp_list))) { in dev_pm_opp_register_set_opp_helper()
1490 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_register_set_opp_helper()
1495 if (!opp_table->set_opp) in dev_pm_opp_register_set_opp_helper()
1496 opp_table->set_opp = set_opp; in dev_pm_opp_register_set_opp_helper()
1498 return opp_table; in dev_pm_opp_register_set_opp_helper()
1509 void dev_pm_opp_unregister_set_opp_helper(struct opp_table *opp_table) in dev_pm_opp_unregister_set_opp_helper() argument
1512 WARN_ON(!list_empty(&opp_table->opp_list)); in dev_pm_opp_unregister_set_opp_helper()
1514 opp_table->set_opp = NULL; in dev_pm_opp_unregister_set_opp_helper()
1515 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_unregister_set_opp_helper()
1538 struct opp_table *opp_table; in dev_pm_opp_add() local
1541 opp_table = dev_pm_opp_get_opp_table(dev); in dev_pm_opp_add()
1542 if (!opp_table) in dev_pm_opp_add()
1545 ret = _opp_add_v1(opp_table, dev, freq, u_volt, true); in dev_pm_opp_add()
1547 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_add()
1568 struct opp_table *opp_table; in _opp_set_availability() local
1573 opp_table = _find_opp_table(dev); in _opp_set_availability()
1574 if (IS_ERR(opp_table)) { in _opp_set_availability()
1575 r = PTR_ERR(opp_table); in _opp_set_availability()
1580 mutex_lock(&opp_table->lock); in _opp_set_availability()
1583 list_for_each_entry(tmp_opp, &opp_table->opp_list, node) { in _opp_set_availability()
1602 mutex_unlock(&opp_table->lock); in _opp_set_availability()
1606 blocking_notifier_call_chain(&opp_table->head, OPP_EVENT_ENABLE, in _opp_set_availability()
1609 blocking_notifier_call_chain(&opp_table->head, in _opp_set_availability()
1616 mutex_unlock(&opp_table->lock); in _opp_set_availability()
1618 dev_pm_opp_put_opp_table(opp_table); in _opp_set_availability()
1670 struct opp_table *opp_table; in dev_pm_opp_register_notifier() local
1673 opp_table = _find_opp_table(dev); in dev_pm_opp_register_notifier()
1674 if (IS_ERR(opp_table)) in dev_pm_opp_register_notifier()
1675 return PTR_ERR(opp_table); in dev_pm_opp_register_notifier()
1677 ret = blocking_notifier_chain_register(&opp_table->head, nb); in dev_pm_opp_register_notifier()
1679 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_register_notifier()
1695 struct opp_table *opp_table; in dev_pm_opp_unregister_notifier() local
1698 opp_table = _find_opp_table(dev); in dev_pm_opp_unregister_notifier()
1699 if (IS_ERR(opp_table)) in dev_pm_opp_unregister_notifier()
1700 return PTR_ERR(opp_table); in dev_pm_opp_unregister_notifier()
1702 ret = blocking_notifier_chain_unregister(&opp_table->head, nb); in dev_pm_opp_unregister_notifier()
1704 dev_pm_opp_put_opp_table(opp_table); in dev_pm_opp_unregister_notifier()
1714 void _dev_pm_opp_remove_table(struct opp_table *opp_table, struct device *dev, in _dev_pm_opp_remove_table() argument
1720 if (list_is_singular(&opp_table->dev_list)) { in _dev_pm_opp_remove_table()
1722 list_for_each_entry_safe(opp, tmp, &opp_table->opp_list, node) { in _dev_pm_opp_remove_table()
1731 if (opp_table->genpd_performance_state) in _dev_pm_opp_remove_table()
1734 _remove_opp_dev(_find_opp_dev(dev, opp_table), opp_table); in _dev_pm_opp_remove_table()
1740 struct opp_table *opp_table; in _dev_pm_opp_find_and_remove_table() local
1743 opp_table = _find_opp_table(dev); in _dev_pm_opp_find_and_remove_table()
1744 if (IS_ERR(opp_table)) { in _dev_pm_opp_find_and_remove_table()
1745 int error = PTR_ERR(opp_table); in _dev_pm_opp_find_and_remove_table()
1755 _dev_pm_opp_remove_table(opp_table, dev, remove_all); in _dev_pm_opp_find_and_remove_table()
1757 dev_pm_opp_put_opp_table(opp_table); in _dev_pm_opp_find_and_remove_table()