From: Varadarajan Narayanan <quic_varada@quicinc.com>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: <ilia.lin@kernel.org>, <agross@kernel.org>,
<andersson@kernel.org>, <konrad.dybcio@linaro.org>,
<rafael@kernel.org>, <viresh.kumar@linaro.org>,
<robh+dt@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>,
<conor+dt@kernel.org>, <mturquette@baylibre.com>,
<sboyd@kernel.org>, <quic_kathirav@quicinc.com>,
<linux-pm@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-clk@vger.kernel.org>
Subject: Re: [PATCH v1 04/10] clk: qcom: apss-ipq6018: ipq5332: add safe source switch for a53pll
Date: Tue, 12 Sep 2023 14:29:45 +0530 [thread overview]
Message-ID: <20230912085944.GA25503@varda-linux.qualcomm.com> (raw)
In-Reply-To: <CAA8EJppXxiX7+6nhfKyJYDU0i2pkBzXL5J3EQUapLJXxx3b=HA@mail.gmail.com>
On Thu, Sep 07, 2023 at 04:54:56PM +0300, Dmitry Baryshkov wrote:
> On Thu, 7 Sept 2023 at 08:22, Varadarajan Narayanan
> <quic_varada@quicinc.com> wrote:
> >
> > Stromer Plus PLL found on IPQ53xx doesn't support dynamic
> > frequency scaling. To achieve the same, we need to park the APPS
> > PLL source to GPLL0, re configure the PLL and then switch the
> > source to APSS_PLL_EARLY.
> >
> > To support this, register a clock notifier to get the PRE_RATE
> > and POST_RATE notification. Change the APSS PLL source to GPLL0
> > when PRE_RATE notification is received, then configure the PLL
> > and then change back the source to APSS_PLL_EARLY.
>
> This means that we are changing the parents behind the back of CCF,
> which is not great.
Unfortunately, we are not aware of any other way to do this.
Please let me know if there is a better way to do this, will
implement that and post a revision.
> > Signed-off-by: Kathiravan T <quic_kathirav@quicinc.com>
> > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> > ---
> > drivers/clk/qcom/apss-ipq6018.c | 54 ++++++++++++++++++++++++++++++++++++++++-
> > 1 file changed, 53 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/clk/qcom/apss-ipq6018.c b/drivers/clk/qcom/apss-ipq6018.c
> > index 4e13a08..ffb6ab5 100644
> > --- a/drivers/clk/qcom/apss-ipq6018.c
> > +++ b/drivers/clk/qcom/apss-ipq6018.c
> > @@ -9,8 +9,11 @@
> > #include <linux/clk-provider.h>
> > #include <linux/regmap.h>
> > #include <linux/module.h>
> > +#include <linux/clk.h>
> > +#include <linux/soc/qcom/smem.h>
> >
> > #include <dt-bindings/clock/qcom,apss-ipq.h>
> > +#include <dt-bindings/arm/qcom,ids.h>
> >
> > #include "common.h"
> > #include "clk-regmap.h"
> > @@ -84,15 +87,64 @@ static const struct qcom_cc_desc apss_ipq6018_desc = {
> > .num_clks = ARRAY_SIZE(apss_ipq6018_clks),
> > };
> >
> > +static int cpu_clk_notifier_fn(struct notifier_block *nb, unsigned long action,
> > + void *data)
> > +{
> > + u8 index;
> > + int err;
> > +
> > + if (action == PRE_RATE_CHANGE)
> > + index = P_GPLL0;
>
> I don't see P_GPLL0 being supported in the ipq6018 driver.
This comes from one of the dependency patches mentioned in the
cover letter [https://lore.kernel.org/linux-arm-msm/20230904-gpll_cleanup-v1-0-de2c448f1188@quicinc.com/].
Please refer to patch https://lore.kernel.org/linux-arm-msm/20230904-gpll_cleanup-v1-6-de2c448f1188@quicinc.com/.
>
> > + else if (action == POST_RATE_CHANGE)
> > + index = P_APSS_PLL_EARLY;
>
> You also have to handle ABORT_RATE_CHANGE here.
ok.
> > + else
> > + return 0;
> > +
> > + err = clk_rcg2_mux_closest_ops.set_parent(&apcs_alias0_clk_src.clkr.hw,
> > + index);
> > +
> > + return notifier_from_errno(err);
> > +}
> > +
> > +static struct notifier_block cpu_clk_notifier = {
> > + .notifier_call = cpu_clk_notifier_fn,
> > +};
> > +
> > static int apss_ipq6018_probe(struct platform_device *pdev)
> > {
> > struct regmap *regmap;
> > + u32 soc_id;
> > + int ret;
> > +
> > + ret = qcom_smem_get_soc_id(&soc_id);
> > + if (ret)
> > + return ret;
> >
> > regmap = dev_get_regmap(pdev->dev.parent, NULL);
> > if (!regmap)
> > return -ENODEV;
> >
> > - return qcom_cc_really_probe(pdev, &apss_ipq6018_desc, regmap);
> > + ret = qcom_cc_really_probe(pdev, &apss_ipq6018_desc, regmap);
> > + if (ret)
> > + return ret;
> > +
> > + switch (soc_id) {
> > + /*
> > + * Only below variants of IPQ53xx support scaling
> > + */
> > + case QCOM_ID_IPQ5332:
> > + case QCOM_ID_IPQ5322:
> > + case QCOM_ID_IPQ5300:
>
> Please use compat strings instead of using the soc-id.
We have a common compatible string for all IPQ53xx CPUs across
boards. The CPU variant is identified from fuse settings. Not
sure how we can differentiate between the variants using compat
strings. Can you kindly help.
Thanks
varada
> > + ret = clk_notifier_register(apcs_alias0_clk_src.clkr.hw.clk,
> > + &cpu_clk_notifier);
> > + if (ret)
> > + return ret;
> > + break;
> > + default:
> > + break;
> > + }
> > +
> > + return 0;
> > }
> >
> > static struct platform_driver apss_ipq6018_driver = {
> > --
> > 2.7.4
> >
>
>
> --
> With best wishes
>
> Dmitry
next prev parent reply other threads:[~2023-09-12 9:00 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-07 5:21 [PATCH v1 00/10] Enable cpufreq for IPQ5332 & IPQ9574 Varadarajan Narayanan
2023-09-07 5:21 ` [PATCH v1 01/10] clk: qcom: clk-alpha-pll: introduce stromer plus ops Varadarajan Narayanan
2023-09-07 8:24 ` Konrad Dybcio
2023-09-07 13:39 ` Dmitry Baryshkov
2023-09-29 7:21 ` Varadarajan Narayanan
2023-09-07 5:21 ` [PATCH v1 02/10] clk: qcom: apss-ipq-pll: Use stromer plus ops for stromer plus pll Varadarajan Narayanan
2023-09-07 13:38 ` Dmitry Baryshkov
2023-09-07 5:21 ` [PATCH v1 03/10] clk: qcom: apss-ipq-pll: Fix 'l' value for ipq5332_pll_config Varadarajan Narayanan
2023-09-07 8:25 ` Konrad Dybcio
2023-09-07 13:40 ` Dmitry Baryshkov
2023-09-07 5:21 ` [PATCH v1 04/10] clk: qcom: apss-ipq6018: ipq5332: add safe source switch for a53pll Varadarajan Narayanan
2023-09-07 8:31 ` Konrad Dybcio
2023-09-29 7:32 ` Varadarajan Narayanan
2023-09-29 8:29 ` Dmitry Baryshkov
2023-09-07 8:51 ` kernel test robot
2023-09-07 13:54 ` Dmitry Baryshkov
2023-09-12 8:59 ` Varadarajan Narayanan [this message]
2023-09-07 5:21 ` [PATCH v1 05/10] dt-bindings: cpufreq: qcom-cpufreq-nvmem: document IPQ5332 Varadarajan Narayanan
2023-09-07 6:03 ` Krzysztof Kozlowski
2023-09-27 11:24 ` Viresh Kumar
2023-09-07 5:21 ` [PATCH v1 06/10] cpufreq: qti: Enable cpufreq for ipq53xx Varadarajan Narayanan
2023-09-07 8:34 ` Konrad Dybcio
2023-09-07 13:57 ` Dmitry Baryshkov
2023-09-07 15:46 ` Bryan O'Donoghue
2023-09-07 5:21 ` [PATCH v1 07/10] arm64: dts: qcom: ipq5332: populate the opp table based on the eFuse Varadarajan Narayanan
2023-09-07 6:03 ` Krzysztof Kozlowski
2023-09-07 13:59 ` Dmitry Baryshkov
2023-10-05 9:57 ` Varadarajan Narayanan
2023-10-05 11:39 ` Dmitry Baryshkov
2023-10-05 14:42 ` Varadarajan Narayanan
2023-10-05 19:39 ` Dmitry Baryshkov
2023-10-12 10:11 ` Varadarajan Narayanan
2023-09-07 5:21 ` [PATCH v1 08/10] dt-bindings: cpufreq: qcom-cpufreq-nvmem: document IPQ9574 Varadarajan Narayanan
2023-09-07 6:04 ` Krzysztof Kozlowski
2023-09-27 11:24 ` Viresh Kumar
2023-09-07 5:21 ` [PATCH v1 09/10] cpufreq: qti: Introduce cpufreq for ipq95xx Varadarajan Narayanan
2023-09-07 14:22 ` Dmitry Baryshkov
2023-09-07 5:21 ` [PATCH v1 10/10] arm64: dts: qcom: ipq9574: populate the opp table based on the eFuse Varadarajan Narayanan
2023-09-07 6: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=20230912085944.GA25503@varda-linux.qualcomm.com \
--to=quic_varada@quicinc.com \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=ilia.lin@kernel.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=linux-pm@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=quic_kathirav@quicinc.com \
--cc=rafael@kernel.org \
--cc=robh+dt@kernel.org \
--cc=sboyd@kernel.org \
--cc=viresh.kumar@linaro.org \
/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;
as well as URLs for NNTP newsgroup(s).