From: "Luca Weiss" <luca.weiss@fairphone.com>
To: "Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>
Cc: "Andy Gross" <agross@kernel.org>,
"Bjorn Andersson" <andersson@kernel.org>,
"Konrad Dybcio" <konrad.dybcio@linaro.org>,
"Michael Turquette" <mturquette@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
<~postmarketos/upstreaming@lists.sr.ht>,
<phone-devel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
<linux-clk@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<devicetree@vger.kernel.org>
Subject: Re: [PATCH v3 1/2] clk: qcom: camcc-sm6350: add pm_runtime support
Date: Tue, 07 Mar 2023 15:54:01 +0100 [thread overview]
Message-ID: <CR08JR9XAIUO.3KF8TBTQ9UQP1@otso> (raw)
In-Reply-To: <CAA8EJprzOLuLU8_tvRtQ9bX8M9xOqMFFnjuj-DwGz+24XPAQFg@mail.gmail.com>
On Tue Feb 14, 2023 at 1:32 PM CET, Dmitry Baryshkov wrote:
> On Tue, 14 Feb 2023 at 13:01, Luca Weiss <luca.weiss@fairphone.com> wrote:
> >
> > Make sure that we can enable and disable the power domains used for
> > camcc when the clocks are and aren't used.
> >
> > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> > ---
> > drivers/clk/qcom/camcc-sm6350.c | 25 ++++++++++++++++++++++++-
> > 1 file changed, 24 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/clk/qcom/camcc-sm6350.c b/drivers/clk/qcom/camcc-sm6350.c
> > index acba9f99d960..fc5532e2ee5b 100644
> > --- a/drivers/clk/qcom/camcc-sm6350.c
> > +++ b/drivers/clk/qcom/camcc-sm6350.c
> > @@ -7,6 +7,8 @@
> > #include <linux/clk-provider.h>
> > #include <linux/module.h>
> > #include <linux/platform_device.h>
> > +#include <linux/pm_clock.h>
> > +#include <linux/pm_runtime.h>
> > #include <linux/regmap.h>
> >
> > #include <dt-bindings/clock/qcom,sm6350-camcc.h>
> > @@ -1869,6 +1871,19 @@ MODULE_DEVICE_TABLE(of, camcc_sm6350_match_table);
> > static int camcc_sm6350_probe(struct platform_device *pdev)
> > {
> > struct regmap *regmap;
> > + int ret;
> > +
> > + ret = devm_pm_runtime_enable(&pdev->dev);
> > + if (ret < 0)
> > + return ret;
> > +
> > + ret = devm_pm_clk_create(&pdev->dev);
> > + if (ret < 0)
> > + return ret;
>
> This makes me wonder, what is the use for the pm_clk in your case? The
> driver doesn't seem to use of_pm_clk_add_clk(), of_pm_clk_add_clks()
> or pm_clk_add_clk(). So pm_clk_suspend() and pm_clk_resume() do
> nothing.
You're right that we're not using any of these functions in the driver.
However still when camcc is not used, the associated power domain turns
off correctly so that part works as expected.
Honestly these lines have been copied from a different driver and I'm
not familiar enough with the pm_runtime APIs to know what to use here
without using the pm_clk* and pm_clk_suspend.
Basically we need, if any clock is being used in the driver, the
power-domain needs to be enabled as well, and if nothing is used the
power-domain can be disabled again.
Please advise.
Regards
Luca
>
> > +
> > + ret = pm_runtime_get(&pdev->dev);
> > + if (ret)
> > + return ret;
> >
> > regmap = qcom_cc_map(pdev, &camcc_sm6350_desc);
> > if (IS_ERR(regmap))
> > @@ -1879,14 +1894,22 @@ static int camcc_sm6350_probe(struct platform_device *pdev)
> > clk_agera_pll_configure(&camcc_pll2, regmap, &camcc_pll2_config);
> > clk_fabia_pll_configure(&camcc_pll3, regmap, &camcc_pll3_config);
> >
> > - return qcom_cc_really_probe(pdev, &camcc_sm6350_desc, regmap);
> > + ret = qcom_cc_really_probe(pdev, &camcc_sm6350_desc, regmap);
> > + pm_runtime_put(&pdev->dev);
> > +
> > + return ret;
> > }
> >
> > +static const struct dev_pm_ops camcc_pm_ops = {
> > + SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
> > +};
> > +
> > static struct platform_driver camcc_sm6350_driver = {
> > .probe = camcc_sm6350_probe,
> > .driver = {
> > .name = "sm6350-camcc",
> > .of_match_table = camcc_sm6350_match_table,
> > + .pm = &camcc_pm_ops,
> > },
> > };
> >
> >
> > --
> > 2.39.1
> >
>
>
> --
> With best wishes
> Dmitry
next prev parent reply other threads:[~2023-03-07 15:03 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-14 11:01 [PATCH v3 0/2] Add pm_runtime support to SM6350 camcc Luca Weiss
2023-02-14 11:01 ` [PATCH v3 1/2] clk: qcom: camcc-sm6350: add pm_runtime support Luca Weiss
2023-02-14 12:32 ` Dmitry Baryshkov
2023-03-07 14:54 ` Luca Weiss [this message]
2023-03-07 15:06 ` Dmitry Baryshkov
2023-03-10 9:39 ` Luca Weiss
2023-02-14 11:01 ` [PATCH v3 2/2] arm64: dts: qcom: sm6350: add power domain to camcc Luca Weiss
2023-02-14 11:03 ` Krzysztof Kozlowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CR08JR9XAIUO.3KF8TBTQ9UQP1@otso \
--to=luca.weiss@fairphone.com \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=phone-devel@vger.kernel.org \
--cc=robh+dt@kernel.org \
--cc=sboyd@kernel.org \
--cc=~postmarketos/upstreaming@lists.sr.ht \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox