From: Stephen Boyd <sboyd@kernel.org>
To: Varadarajan Narayanan <quic_varada@quicinc.com>
Cc: andersson@kernel.org, conor+dt@kernel.org,
devicetree@vger.kernel.org, djakov@kernel.org,
dmitry.baryshkov@linaro.org, konrad.dybcio@linaro.org,
krzysztof.kozlowski+dt@linaro.org, linux-arm-msm@vger.kernel.org,
linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org, mturquette@baylibre.com,
quic_anusha@quicinc.com, robh@kernel.org
Subject: Re: [PATCH v5 3/5] clk: qcom: common: Add interconnect clocks support
Date: Fri, 05 Apr 2024 14:25:41 -0700 [thread overview]
Message-ID: <9d738246b5043cd2a3c1dc7609805f0f.sboyd@kernel.org> (raw)
In-Reply-To: <ZgaceJT2FMsQVoPa@hu-varada-blr.qualcomm.com>
Quoting Varadarajan Narayanan (2024-03-29 03:48:24)
> On Thu, Mar 28, 2024 at 02:54:52PM -0700, Stephen Boyd wrote:
> > Quoting Varadarajan Narayanan (2024-03-28 00:59:34)
> > > diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c
> > > index 75f09e6e057e..9fa271812373 100644
> > > --- a/drivers/clk/qcom/common.c
> > > +++ b/drivers/clk/qcom/common.c
> > > @@ -234,6 +236,41 @@ static struct clk_hw *qcom_cc_clk_hw_get(struct of_phandle_args *clkspec,
> > > return cc->rclks[idx] ? &cc->rclks[idx]->hw : NULL;
> > > }
> > >
> > > +#if IS_ENABLED(CONFIG_INTERCONNECT_CLK)
> > > +static int qcom_cc_icc_register(struct device *dev,
> > > + const struct qcom_cc_desc *desc)
> > > +{
> > > + struct icc_clk_data *icd;
> > > + int i;
> > > +
> > > + if (!desc->icc_hws)
> > > + return 0;
> > > +
> > > + icd = devm_kcalloc(dev, desc->num_icc_hws, sizeof(*icd), GFP_KERNEL);
> > > + if (!icd)
> > > + return -ENOMEM;
> > > +
> > > + for (i = 0; i < desc->num_icc_hws; i++) {
> > > + icd[i].clk = devm_clk_hw_get_clk(dev, desc->icc_hws[i], "qcom");
> >
> > Make the con_id "icc" instead please, so we know the consumer is
> > icc_clk.
>
> Ok.
>
> > Even better would be for the icc_clk device itself to be the
> > one requesting with devm_clk_hw_get_clk() so that we associate the clk
> > handle with the consumer device. It would also help us make it so that
> > drivers defer probe until their clk isn't an orphan.
>
> Not sure if I understand the comments correctly.
>
> In one of the previous patches, had
> icd[i].clk = clks[noc_clks[i]]->hw.clk;
>
> This was said to be error prone since the clock would not be
> ref counted. Hence used devm_clk_hw_get_clk before doing
> icc_clk_register.
>
> Now, are you suggesting to use the direct clock pointer
> and do a devm_clk_hw_get_clk from the consumer driver?
> This will take care of the refcounting. However, we will
> have to add these clock entries to the consumer DT node.
> Is this ok?
Why do they need to be added to the consumer DT node? Why can't the
icc_clk device driver (icc_clk_driver?) use struct clk_hw instead of
struct clk in struct icc_clk_data? The answer cannot be that the icc_clk
driver cannot be changed.
> > > diff --git a/drivers/clk/qcom/common.h b/drivers/clk/qcom/common.h
> > > index 9c8f7b798d9f..d8ac26d83f3c 100644
> > > --- a/drivers/clk/qcom/common.h
> > > +++ b/drivers/clk/qcom/common.h
> > > @@ -29,6 +29,9 @@ struct qcom_cc_desc {
> > > size_t num_gdscs;
> > > struct clk_hw **clk_hws;
> > > size_t num_clk_hws;
> > > + struct clk_hw **icc_hws;
> > > + size_t num_icc_hws;
> > > + unsigned int first_id;
> >
> > 'first_id' is gross.
>
> will change it to 'icc_id'.
That's not what I meant :) The whole concept of having to pick some
random number is bad. At the least, hide that in the icc_clk driver so
that we don't have to put this in every clk provider that is also an
interconnect provider.
next prev parent reply other threads:[~2024-04-05 21:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-28 7:59 [PATCH v5 0/5] Add interconnect driver for IPQ9574 SoC Varadarajan Narayanan
2024-03-28 7:59 ` [PATCH v5 1/5] dt-bindings: interconnect: Add Qualcomm IPQ9574 support Varadarajan Narayanan
2024-03-30 10:30 ` Krzysztof Kozlowski
2024-03-28 7:59 ` [PATCH v5 2/5] interconnect: icc-clk: Add devm_icc_clk_register Varadarajan Narayanan
2024-03-28 7:59 ` [PATCH v5 3/5] clk: qcom: common: Add interconnect clocks support Varadarajan Narayanan
2024-03-28 21:54 ` Stephen Boyd
2024-03-29 10:48 ` Varadarajan Narayanan
2024-04-05 21:25 ` Stephen Boyd [this message]
2024-03-28 7:59 ` [PATCH v5 4/5] clk: qcom: ipq9574: Use icc-clk for enabling NoC related clocks Varadarajan Narayanan
2024-03-28 21:51 ` Stephen Boyd
2024-03-29 10:55 ` Varadarajan Narayanan
2024-03-29 12:10 ` Krzysztof Kozlowski
2024-03-30 9:30 ` Varadarajan Narayanan
2024-03-30 10:28 ` Krzysztof Kozlowski
2024-03-30 11:17 ` Varadarajan Narayanan
2024-04-01 14:20 ` kernel test robot
2024-03-28 7:59 ` [PATCH v5 5/5] arm64: dts: qcom: ipq9574: Add icc provider ability to gcc Varadarajan Narayanan
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=9d738246b5043cd2a3c1dc7609805f0f.sboyd@kernel.org \
--to=sboyd@kernel.org \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=djakov@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=linux-pm@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=quic_anusha@quicinc.com \
--cc=quic_varada@quicinc.com \
--cc=robh@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.