Most of the drivers using using pm_runtime_enable() or pm_clk_create() follow the same pattern: call the function in the probe() path and call correspondingly pm_runtime_disable() or pm_clk_destroy() from the probe()'s error path and from the remove() function. This common code pattern has several drawbacks. I.e. driver authors have to ensure that the disable/destroy call in the error path really corresponds to the proper error clause. Or that the disable/destroy call is not missed in the remove() callback. Add two devres helpers replacing these code patterns with relevant devm function call, removing the need to call corresponding disable/destroy functions. As an example modify Qualcomm clock controller code to use new helpers. In this case we are able to drop error path and remove functions completely, simplifying the drivers in question. Changes since v2: - Expand commit messages - Drop extra clock controller changes not strictly relevant to these two helpers Changes since v1: - Add a patch making Qualcomm clock controller drivers actually execute these helpers, thus demonstrating their usage and the necessity ---------------------------------------------------------------- Dmitry Baryshkov (3): PM: runtime: add devm_pm_runtime_enable helper PM: runtime: add devm_pm_clk_create helper clk: qcom: use devm_pm_runtime_enable and devm_pm_clk_create drivers/base/power/clock_ops.c | 17 +++++++++++++++++ drivers/base/power/runtime.c | 17 +++++++++++++++++ drivers/clk/qcom/camcc-sc7180.c | 25 ++++++++++--------------- drivers/clk/qcom/lpass-gfm-sm8250.c | 21 +++++++++------------ drivers/clk/qcom/lpasscorecc-sc7180.c | 18 ++---------------- drivers/clk/qcom/mss-sc7180.c | 30 ++++++++---------------------- drivers/clk/qcom/q6sstop-qcs404.c | 32 +++++++++----------------------- drivers/clk/qcom/turingcc-qcs404.c | 30 ++++++++---------------------- include/linux/pm_clock.h | 5 +++++ include/linux/pm_runtime.h | 4 ++++ 10 files changed, 89 insertions(+), 110 deletions(-)