Message ID | 20231118123944.2202630-5-quic_skakitap@quicinc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add runtime PM support for videocc on SM8150 | expand |
On 11/18/23 13:39, Satya Priya Kakitapalli wrote: > Add runtime PM support to ensure the supply rails are enabled > when necessary. > > Signed-off-by: Satya Priya Kakitapalli <quic_skakitap@quicinc.com> > --- > Changes since v1: > - None. > > drivers/clk/qcom/videocc-sm8150.c | 20 ++++++++++++++++++-- > 1 file changed, 18 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/qcom/videocc-sm8150.c b/drivers/clk/qcom/videocc-sm8150.c > index 52a9a453a143..b57df5ff96c4 100644 > --- a/drivers/clk/qcom/videocc-sm8150.c > +++ b/drivers/clk/qcom/videocc-sm8150.c > @@ -6,6 +6,7 @@ > #include <linux/clk-provider.h> > #include <linux/module.h> > #include <linux/platform_device.h> > +#include <linux/pm_runtime.h> > #include <linux/regmap.h> > > #include <dt-bindings/clock/qcom,videocc-sm8150.h> > @@ -240,17 +241,32 @@ MODULE_DEVICE_TABLE(of, video_cc_sm8150_match_table); > static int video_cc_sm8150_probe(struct platform_device *pdev) > { > struct regmap *regmap; > + int ret; > + > + ret = devm_pm_runtime_enable(&pdev->dev); > + if (ret) > + return ret; > + > + ret = pm_runtime_resume_and_get(&pdev->dev); > + if (ret) > + return ret; > > regmap = qcom_cc_map(pdev, &video_cc_sm8150_desc); > - if (IS_ERR(regmap)) > + if (IS_ERR(regmap)) { > + pm_runtime_put(&pdev->dev); Shouldn't this be _sync? Konrad
On 11/23/2023 1:31 AM, Konrad Dybcio wrote: > > > On 11/18/23 13:39, Satya Priya Kakitapalli wrote: >> Add runtime PM support to ensure the supply rails are enabled >> when necessary. >> >> Signed-off-by: Satya Priya Kakitapalli <quic_skakitap@quicinc.com> >> --- >> Changes since v1: >> - None. >> >> drivers/clk/qcom/videocc-sm8150.c | 20 ++++++++++++++++++-- >> 1 file changed, 18 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/clk/qcom/videocc-sm8150.c >> b/drivers/clk/qcom/videocc-sm8150.c >> index 52a9a453a143..b57df5ff96c4 100644 >> --- a/drivers/clk/qcom/videocc-sm8150.c >> +++ b/drivers/clk/qcom/videocc-sm8150.c >> @@ -6,6 +6,7 @@ >> #include <linux/clk-provider.h> >> #include <linux/module.h> >> #include <linux/platform_device.h> >> +#include <linux/pm_runtime.h> >> #include <linux/regmap.h> >> #include <dt-bindings/clock/qcom,videocc-sm8150.h> >> @@ -240,17 +241,32 @@ MODULE_DEVICE_TABLE(of, >> video_cc_sm8150_match_table); >> static int video_cc_sm8150_probe(struct platform_device *pdev) >> { >> struct regmap *regmap; >> + int ret; >> + >> + ret = devm_pm_runtime_enable(&pdev->dev); >> + if (ret) >> + return ret; >> + >> + ret = pm_runtime_resume_and_get(&pdev->dev); >> + if (ret) >> + return ret; >> regmap = qcom_cc_map(pdev, &video_cc_sm8150_desc); >> - if (IS_ERR(regmap)) >> + if (IS_ERR(regmap)) { >> + pm_runtime_put(&pdev->dev); > Shouldn't this be _sync? > Yes, will update it on v2 > Konrad
diff --git a/drivers/clk/qcom/videocc-sm8150.c b/drivers/clk/qcom/videocc-sm8150.c index 52a9a453a143..b57df5ff96c4 100644 --- a/drivers/clk/qcom/videocc-sm8150.c +++ b/drivers/clk/qcom/videocc-sm8150.c @@ -6,6 +6,7 @@ #include <linux/clk-provider.h> #include <linux/module.h> #include <linux/platform_device.h> +#include <linux/pm_runtime.h> #include <linux/regmap.h> #include <dt-bindings/clock/qcom,videocc-sm8150.h> @@ -240,17 +241,32 @@ MODULE_DEVICE_TABLE(of, video_cc_sm8150_match_table); static int video_cc_sm8150_probe(struct platform_device *pdev) { struct regmap *regmap; + int ret; + + ret = devm_pm_runtime_enable(&pdev->dev); + if (ret) + return ret; + + ret = pm_runtime_resume_and_get(&pdev->dev); + if (ret) + return ret; regmap = qcom_cc_map(pdev, &video_cc_sm8150_desc); - if (IS_ERR(regmap)) + if (IS_ERR(regmap)) { + pm_runtime_put(&pdev->dev); return PTR_ERR(regmap); + } clk_trion_pll_configure(&video_pll0, regmap, &video_pll0_config); /* Keep VIDEO_CC_XO_CLK ALWAYS-ON */ regmap_update_bits(regmap, 0x984, 0x1, 0x1); - return qcom_cc_really_probe(pdev, &video_cc_sm8150_desc, regmap); + ret = qcom_cc_really_probe(pdev, &video_cc_sm8150_desc, regmap); + + pm_runtime_put(&pdev->dev); + + return ret; } static struct platform_driver video_cc_sm8150_driver = {
Add runtime PM support to ensure the supply rails are enabled when necessary. Signed-off-by: Satya Priya Kakitapalli <quic_skakitap@quicinc.com> --- Changes since v1: - None. drivers/clk/qcom/videocc-sm8150.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-)