linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Martin Botka <martin.botka@somainline.org>,
	~postmarketos/upstreaming@lists.sr.ht,
	Konrad Dybcio <konrad.dybcio@somainline.org>,
	AngeloGioacchino Del Regno 
	<angelogioacchino.delregno@somainline.org>,
	Marijn Suijten <marijn.suijten@somainline.org>,
	jamipkettunen@somainline.org, Andy Gross <agross@kernel.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH V3 3/3] mailbox: qcom-apcs: Add SM6125 compatible
Date: Mon, 21 Jun 2021 22:52:34 -0500	[thread overview]
Message-ID: <YNFegmmCzk6JUTN+@yoga> (raw)
In-Reply-To: <CABb+yY3RpQYvNBHvpwZearpBPph0uj8YQwX2qu=TX=QAO6OFBw@mail.gmail.com>

On Mon 21 Jun 22:34 CDT 2021, Jassi Brar wrote:

> On Mon, Jun 21, 2021 at 9:27 PM Bjorn Andersson
> <bjorn.andersson@linaro.org> wrote:
> >
> > On Mon 21 Jun 20:00 CDT 2021, Jassi Brar wrote:
> >
> > > On Mon, Jun 21, 2021 at 6:35 PM Bjorn Andersson
> > > <bjorn.andersson@linaro.org> wrote:
> > > >
> > > > On Mon 21 Jun 18:19 CDT 2021, Rob Herring wrote:
> > > >
> > > > > On Mon, Jun 21, 2021 at 5:10 PM Jassi Brar <jassisinghbrar@gmail.com> wrote:
> > > > > >
> > > > > > On Mon, Jun 21, 2021 at 2:46 PM Rob Herring <robh+dt@kernel.org> wrote:
> > > > > > >
> > > > > > > On Sun, Jun 20, 2021 at 10:03 PM Jassi Brar <jassisinghbrar@gmail.com> wrote:
> > > > > > > >
> > > > > > > > On Sat, Jun 12, 2021 at 4:46 AM Martin Botka
> > > > > > > > <martin.botka@somainline.org> wrote:
> > > > > > > > >
> > > > > > > > > This commit adds compatible for the SM6125 SoC
> > > > > > > > >
> > > > > > > > > Signed-off-by: Martin Botka <martin.botka@somainline.org>
> > > > > > > > > ---
> > > > > > > > > Changes in V2:
> > > > > > > > > None
> > > > > > > > > Changes in V3:
> > > > > > > > > Change compatible to apcs-hmss-global
> > > > > > > > >  drivers/mailbox/qcom-apcs-ipc-mailbox.c | 5 +++++
> > > > > > > > >  1 file changed, 5 insertions(+)
> > > > > > > > >
> > > > > > > > > diff --git a/drivers/mailbox/qcom-apcs-ipc-mailbox.c b/drivers/mailbox/qcom-apcs-ipc-mailbox.c
> > > > > > > > > index f25324d03842..f24c5ad8d658 100644
> > > > > > > > > --- a/drivers/mailbox/qcom-apcs-ipc-mailbox.c
> > > > > > > > > +++ b/drivers/mailbox/qcom-apcs-ipc-mailbox.c
> > > > > > > > > @@ -57,6 +57,10 @@ static const struct qcom_apcs_ipc_data sdm660_apcs_data = {
> > > > > > > > >         .offset = 8, .clk_name = NULL
> > > > > > > > >  };
> > > > > > > > >
> > > > > > > > > +static const struct qcom_apcs_ipc_data sm6125_apcs_data = {
> > > > > > > > > +       .offset = 8, .clk_name = NULL
> > > > > > > > > +};
> > > > > > > > > +
> > > > > > > > >  static const struct qcom_apcs_ipc_data apps_shared_apcs_data = {
> > > > > > > > >         .offset = 12, .clk_name = NULL
> > > > > > > > >  };
> > > > > > > > > @@ -166,6 +170,7 @@ static const struct of_device_id qcom_apcs_ipc_of_match[] = {
> > > > > > > > >         { .compatible = "qcom,sc8180x-apss-shared", .data = &apps_shared_apcs_data },
> > > > > > > > >         { .compatible = "qcom,sdm660-apcs-hmss-global", .data = &sdm660_apcs_data },
> > > > > > > > >         { .compatible = "qcom,sdm845-apss-shared", .data = &apps_shared_apcs_data },
> > > > > > > > > +       { .compatible = "qcom,sm6125-apcs-hmss-global", .data = &sm6125_apcs_data },
> > > > > > > > >         { .compatible = "qcom,sm8150-apss-shared", .data = &apps_shared_apcs_data },
> > > > > > > > >         { .compatible = "qcom,sdx55-apcs-gcc", .data = &sdx55_apcs_data },
> > > > > > > > >         {}
> > > > > > > > >
> > > > > > > > These all are basically different names for the same controller.
> > > > > > > > The 'offset' is a configuration parameter and the 'clock', when NULL,
> > > > > > > > is basically some "always-on" clock.
> > > > > > > > I am sure we wouldn't be doing it, if the controller was third-party.
> > > > > > >
> > > > > > > If newer implementations are 'the same', then they should have a
> > > > > > > fallback compatible to the existing one that is the same and no driver
> > > > > > > change is needed. If the differences are board or instance (within an
> > > > > > > SoC) specific, then a DT property would be appropriate.
> > > > > > >
> > > > > > The controllers (13 now) only differ by the 'offset' where the
> > > > > > registers are mapped. Clock-name is a pure s/w artifact.
> > > > > > So, maybe we could push all these in DT.
> > > > >
> > > > > Why is 'reg' not used for the offset?
> > > > >
> > > >
> > > > The DT node and its "reg" describes the whole IP block.
> > > >
> > > > The particular register that we care of has, as you can see, moved
> > > > around during the various platforms and some incarnations of this IP
> > > > block provides controls for CPU-related clocks as well.
> > > >
> > > > We can certainly have the multiple compatible points to the same
> > > > apcs_data, but I'm not able to spot a reasonable "catch-all compatible"
> > > > given that I don't see any natural groupings.
> > > >
> > > Any platform that comes later may reuse the already available compatible.
> > > For example drop this patch and reuse "qcom,sdm660-apcs-hmss-global" ?
> > >
> >
> > The problem is that this would change the meaning of
> > "qcom,sdm660-apcs-hmss-global" from meaning "The apcs hmss global block
> > _in_ sdm660" to "any random apcs block with the mailbox register at
> > offset 8".
> >
> To me, the deeper problem seems to be naming a controller "The apcs
> hmss global block _in_ sdm660" just because the h/w manual hasn't
> given a name to it.  But that is okay too, if we name the subsequent
> controllers as "the same as one in sdm660" and provide the h/w
> configuration 'offset' via a DT property.
> 

As I said, I'd need to dig through the hardware documentation for the
various platforms to see if I can find what the common denominators are.
We've always seen this as "the apcs hmss global block _in_ <platform>".

> > > > > In any case, we can't really get rid of the first 13 instances though...
> > > > >
> > > >
> > > > Right, we have the problem that we have DTBs out there that relies on
> > > > these compatibles, but as Jassi requests we'd have to start describing
> > > > the internal register layout in DT - which this binding purposefully
> > > > avoids.
> > > >
> > > Not these strings, but 'offset' and 'clock-name' as optional
> > > properties that new platforms can use.
> > >
> >
> > Relying on completely generic compatibles to match the driver and then
> > distinguish each platform using additional properties is exactly what
> > Qualcomm does downstream.  The community has clarified countless times
> > that this is not the way to write DT bindings.
> >
> Yes, and I don't suggest it otherwise. For h/w quirks and
> extra/missing features, it does make sense to have different
> compatibles.
> 

But what you're suggesting assumes that they are the same and that we're
done implementing all the software for this block. The platform specific
compatible allows us to postpone that question.

> However, for _trivial_ variations let us get that value from DT.
> 'offset' is anyway a h/w property.
> That way we won't be distinguishing platforms using dt properties, but
> only support different platforms seamlessly.
> 

As I said previously, this goes against the direction provided by the DT
maintainers. If a property is platform specific this should be expressed
by the compatible.

> On second thought, we have grown from 2 to 13 aliases in 4 yrs. I only
> have to ignore 3 times/annum to lead a peaceful life ;)
> 

True, but I'll try to find some time to see if we have some reuse of the
IP block to allow us to use some generic compatible.

We'd still need a patch in the DT binding for every single platform, but
we should be able to avoid the compatible additions in the driver.

Regards,
Bjorn

  reply	other threads:[~2021-06-22  3:52 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-12  9:46 [PATCH V3 1/3] socinfo: Add missing SoC ID for SM6125 Martin Botka
2021-06-12  9:46 ` [PATCH V3 2/3] dt-bindings: mailbox: Add binding for sm6125 Martin Botka
2021-06-24 19:26   ` Rob Herring
2021-06-12  9:46 ` [PATCH V3 3/3] mailbox: qcom-apcs: Add SM6125 compatible Martin Botka
2021-06-21  4:03   ` Jassi Brar
2021-06-21 17:02     ` Martin Botka
2021-06-21 19:46     ` Rob Herring
2021-06-21 23:10       ` Jassi Brar
2021-06-21 23:19         ` Rob Herring
2021-06-21 23:35           ` Bjorn Andersson
2021-06-22  1:00             ` Jassi Brar
2021-06-22  2:27               ` Bjorn Andersson
2021-06-22  3:34                 ` Jassi Brar
2021-06-22  3:52                   ` Bjorn Andersson [this message]
2021-06-22 14:36                     ` AngeloGioacchino Del Regno
2021-06-22 14:43                       ` Jassi Brar
2021-06-24 21:07                       ` Bjorn Andersson
2021-06-24 22:59                         ` AngeloGioacchino Del Regno
2021-06-25  0:02                           ` Bjorn Andersson
2021-06-26 16:50                             ` Jassi Brar
2021-06-22 14:37                     ` Jassi Brar

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=YNFegmmCzk6JUTN+@yoga \
    --to=bjorn.andersson@linaro.org \
    --cc=agross@kernel.org \
    --cc=angelogioacchino.delregno@somainline.org \
    --cc=jamipkettunen@somainline.org \
    --cc=jassisinghbrar@gmail.com \
    --cc=konrad.dybcio@somainline.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=martin.botka@somainline.org \
    --cc=robh+dt@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;
as well as URLs for NNTP newsgroup(s).