From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: "Andy Gross" <agross@kernel.org>,
"Bjorn Andersson" <bjorn.andersson@linaro.org>,
"Stephen Boyd" <swboyd@chromium.org>,
"Michael Turquette" <mturquette@baylibre.com>,
"Taniya Das" <quic_tdas@quicinc.com>,
"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Prasad Malisetty" <quic_pmaliset@quicinc.com>,
"Johan Hovold" <johan+linaro@kernel.org>,
linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org,
linux-pci@vger.kernel.org
Subject: Re: [PATCH v4 2/5] clk: qcom: regmap: add pipe clk implementation
Date: Mon, 2 May 2022 16:40:04 +0530 [thread overview]
Message-ID: <20220502111004.GH5053@thinkpad> (raw)
In-Reply-To: <c47616bf-a0c3-3ad5-c3e2-ba2ae33110d0@linaro.org>
On Mon, May 02, 2022 at 01:35:34PM +0300, Dmitry Baryshkov wrote:
[...]
> > > +static int pipe_is_enabled(struct clk_hw *hw)
> > > +{
> > > + struct clk_regmap_pipe *pipe = to_clk_regmap_pipe(hw);
> > > + struct clk_regmap *clkr = to_clk_regmap(hw);
> > > + unsigned int mask = GENMASK(pipe->width + pipe->shift - 1, pipe->shift);
> > > + unsigned int val;
> > > +
> > > + regmap_read(clkr->regmap, pipe->reg, &val);
> > > + val = (val & mask) >> pipe->shift;
> > > +
> > > + WARN_ON(unlikely(val != pipe->enable_val && val != pipe->disable_val));
> > > +
> > > + return val == pipe->enable_val;
> >
> > Selecting the clk parents in the enable/disable callback seems fine to me but
> > the way it is implemented doesn't look right.
> >
> > First this "pipe_clksrc" is a mux clk by design, since we can only select the
> > parent. But you are converting it to a gate clk now.
> >
> > Instead of that, my proposal would be to make this clk a composite one i.e,.
> > gate clk + mux clk. So even though the gate clk here would be a hack, we are
> > not changing the definition of mux clk.
>
> This is what I had before, in revisions 1-3. Which proved to work, but is
> problematic a bit.
>
> In the very end, it is not easily possible to make a difference between a
> clock reparented to the bi_tcxo and a disabled clock. E.g. if some user
> reparents the clock to the tcxo, then the driver will consider the clock
> disabled, but the clock framework will think that the clock is still
> enabled.
I don't understand this. How can you make this clock disabled? It just has 4
parents, right?
>
> Thus we have to remove "safe" clock (bi_tcxo) from the list of parents. In
> case of pipe clocks (and ufs symbol clocks) this will leave us with just a
> single possible parent. Then having the mux part just doesn't make sense. It
> is just a gated clock. And this simplified a lot of things.
>
> >
> > So you can introduce a new ops like "clk_regmap_mux_gate_ops" and implement the
> > parent switching logic in the enable/disable callbacks. Additional benefit of
> > this ops is, in the future we can also support "gate + mux" clks easily.
>
> If the need arises, we can easily resurrect the regmap_mux_safe patchset,
> fix the race pointed out by Johan, remove extra src-val mapping for safe
> value and use it for such clocks. I can post it separately, if you wish. But
> I'm not sure that it makes sense to use it for single-parent clocks.
>
> >
> > Also, please don't use the "enable_val/disable_val" members. It should be
> > something like "mux_sel_pre/mux_sel_post".
>
> Why? Could you please elaborate?
>
It aligns with my question above. I don't see how this clk can be
enabled/disabled.
Thanks,
Mani
next prev parent reply other threads:[~2022-05-02 11:10 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-01 19:21 [PATCH v4 0/5] PCI: qcom: Rework pipe_clk/pipe_clk_src handling Dmitry Baryshkov
2022-05-01 19:21 ` [PATCH v4 1/5] PCI: qcom: Remove unnecessary pipe_clk handling Dmitry Baryshkov
2022-05-02 10:13 ` Manivannan Sadhasivam
2022-05-09 9:41 ` Johan Hovold
2022-05-01 19:21 ` [PATCH v4 2/5] clk: qcom: regmap: add pipe clk implementation Dmitry Baryshkov
2022-05-02 10:10 ` Manivannan Sadhasivam
2022-05-02 10:35 ` Dmitry Baryshkov
2022-05-02 11:10 ` Manivannan Sadhasivam [this message]
2022-05-02 11:18 ` Dmitry Baryshkov
2022-05-02 15:06 ` Manivannan Sadhasivam
2022-05-02 15:24 ` Dmitry Baryshkov
2022-05-06 12:54 ` Johan Hovold
2022-05-06 15:25 ` Manivannan Sadhasivam
2022-05-06 12:40 ` Johan Hovold
2022-05-06 13:00 ` Dmitry Baryshkov
2022-05-09 10:29 ` Johan Hovold
2022-05-11 14:17 ` Dmitry Baryshkov
2022-05-13 8:22 ` Johan Hovold
2022-05-11 14:34 ` Manivannan Sadhasivam
2022-05-06 12:31 ` Johan Hovold
2022-05-06 12:40 ` Dmitry Baryshkov
2022-05-09 10:28 ` Johan Hovold
2022-05-09 10:17 ` Johan Hovold
2022-05-01 19:21 ` [PATCH v4 3/5] clk: qcom: gcc-sm8450: use new clk_regmap_pipe_ops for PCIe pipe clocks Dmitry Baryshkov
2022-05-01 19:21 ` [PATCH v4 4/5] clk: qcom: gcc-sc7280: " Dmitry Baryshkov
2022-05-01 19:21 ` [PATCH v4 5/5] PCI: qcom: Drop manual pipe_clk_src handling Dmitry Baryshkov
2022-05-09 10:24 ` Johan Hovold
2022-05-11 13:19 ` [PATCH v4 0/5] PCI: qcom: Rework pipe_clk/pipe_clk_src handling Lorenzo Pieralisi
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=20220502111004.GH5053@thinkpad \
--to=manivannan.sadhasivam@linaro.org \
--cc=agross@kernel.org \
--cc=bhelgaas@google.com \
--cc=bjorn.andersson@linaro.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=johan+linaro@kernel.org \
--cc=kw@linux.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mturquette@baylibre.com \
--cc=quic_pmaliset@quicinc.com \
--cc=quic_tdas@quicinc.com \
--cc=swboyd@chromium.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.