linux/drivers/opp
Viresh Kumar cdd6ed90cd OPP: Use a single mechanism to free the OPP table
Currently there are two separate ways to free the OPP table based on how
it is created in the first place.

We call _dev_pm_opp_remove_table() to free the static and/or dynamic
OPP, OPP list devices, etc. This is done for the case where the OPP
table is added while initializing the OPPs, like via the path
dev_pm_opp_of_add_table().

We also call dev_pm_opp_put_opp_table() in some cases which eventually
frees the OPP table structure once the reference count reaches 0. This
is used by the first case as well as other cases like
dev_pm_opp_set_regulators() where the OPPs aren't necessarily
initialized at this point.

This whole thing is a bit unclear and messy and obstruct any further
cleanup/fixup of OPP core.

This patch tries to streamline this by keeping a single path for OPP
table destruction, i.e. dev_pm_opp_put_opp_table().

All the cleanup happens in _opp_table_kref_release() now after the
reference count reaches 0. _dev_pm_opp_remove_table() is removed as it
isn't required anymore.

We don't drop the reference to the OPP table after creating it from
_of_add_opp_table_v{1|2}() anymore and the same is dropped only when we
try to remove them.

Tested-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2018-09-19 14:56:46 -07:00
..
core.c OPP: Use a single mechanism to free the OPP table 2018-09-19 14:56:46 -07:00
cpu.c OPP: Don't remove dynamic OPPs from _dev_pm_opp_remove_table() 2018-09-19 14:56:45 -07:00
debugfs.c PM / OPP: "opp-hz" is optional for power domains 2018-05-09 10:15:18 +05:30
Kconfig
Makefile PM / OPP: Add ti-opp-supply driver 2017-12-17 19:17:44 +01:00
of.c OPP: Use a single mechanism to free the OPP table 2018-09-19 14:56:46 -07:00
opp.h OPP: Use a single mechanism to free the OPP table 2018-09-19 14:56:46 -07:00
ti-opp-supply.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00