Re: [PATCH] dt-bindings: ufs: Fix the compatible string definition

From: Vivek Gautam
Date: Tue Oct 16 2018 - 01:51:51 EST


On Mon, Oct 15, 2018 at 10:54 PM Doug Anderson <dianders@xxxxxxxxxxxx> wrote:
>
> Vivek,
>
> On Mon, Oct 15, 2018 at 8:23 AM Vivek Gautam
> <vivek.gautam@xxxxxxxxxxxxxx> wrote:
> >
> > Hi Doug,
> >
> > On Sat, Oct 13, 2018 at 3:09 AM Douglas Anderson <dianders@xxxxxxxxxxxx> wrote:
> > >
> > > If you look at the bindings for the UFS Host Controller it says:
> > >
> > > - compatible: must contain "jedec,ufs-1.1" or "jedec,ufs-2.0", may
> > > also list one or more of the following:
> > > "qcom,msm8994-ufshc"
> > > "qcom,msm8996-ufshc"
> > > "qcom,ufshc"
> > >
> > > My reading of that is that it's fine to just have either of these:
> > > 1. "qcom,msm8996-ufshc", "jedec,ufs-2.0"
> > > 2. "qcom,ufshc", "jedec,ufs-2.0"
> > >
> > > As far as I can tell neither of the above is actually a good idea.
> > >
> > > For #1 it turns out that the driver currently only keys off the
> > > compatible string "qcom,ufshc" so it won't actually probe.
> > >
> > > For #2 the driver won't probe but it's not a good idea to keep the SoC
> > > name out of the compatible string.
> > >
> > > Let's update the compatible string to make it really explicit. We'll
> > > include a nod to the existing driver and the old binding and say that
> > > we should always include the "qcom,ufshc" string in addition to the
> > > SoC compatible string.
> > >
> > > While we're at it we'll also include another example SoC known to have
> > > UFS: sdm845.
> > >
> > > Fixes: 47555a5c8a11 ("scsi: ufs: make the UFS variant a platform device")
> > > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
> > > ---
> > >
> > > .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 13 ++++++++-----
> > > 1 file changed, 8 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt b/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt
> > > index 2df00524bd21..69a06a1b732e 100644
> > > --- a/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt
> > > +++ b/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt
> > > @@ -4,11 +4,14 @@ UFSHC nodes are defined to describe on-chip UFS host controllers.
> > > Each UFS controller instance should have its own node.
> > >
> > > Required properties:
> > > -- compatible : must contain "jedec,ufs-1.1" or "jedec,ufs-2.0", may
> > > - also list one or more of the following:
> > > - "qcom,msm8994-ufshc"
> > > - "qcom,msm8996-ufshc"
> > > - "qcom,ufshc"
> > > +- compatible : must contain "jedec,ufs-1.1" or "jedec,ufs-2.0"
> > > +
> > > + For Qualcomm SoCs must contain, as below, an
> > > + SoC-specific compatible along with "qcom,ufshc" and
> > > + the appropriate jedec string:
> > > + "qcom,msm8994-ufshc", "qcom,ufshc", "jedec,ufs-2.0"
> > > + "qcom,msm8996-ufshc", "qcom,ufshc", "jedec,ufs-2.0"
> > > + "qcom,sdm845-ufshc", "qcom,ufshc", "jedec,ufs-2.0"
> >
> > Thanks for the patch. It looks good to me.
> > Reviewed-by: Vivek Gautam <vivek.gautam@xxxxxxxxxxxxxx>
>
> Thanks for the review!
>
>
> > P.S.: While you are at it, can you please move 'ufs-qcom.txt'
> > to Documentation/devicetree/bindings/phy/qcom,ufs-phy.txt.
> > The current name and file location is misleading.
>
> I'd rather someone at Qualcomm do this. Do you have a suggested
> person? The reason I feel that Qualcomm needs to get involved is that
> I see that when I look at the file you refer to says it's for:
>
> "qcom,ufs-phy-qmp-20nm" for 20nm ufs phy,
> "qcom,ufs-phy-qmp-14nm" for legacy 14nm ufs phy,
> "qcom,msm8996-ufs-phy-qmp-14nm" for 14nm ufs phy
> present on MSM8996 chipset.
>
> ...but there's another Qualcomm file, 'qcom-qmp-phy.txt'. That
> handles the compatible string:
>
> "qcom,sdm845-qmp-ufs-phy" for UFS QMP phy on sdm845.
>
> So I'm a little confused. Should the SDM845 UFS PHY been handled by
> the older UFS PHY driver? ...or should all the older UFS PHYs be
> moved to be handled by the newer QMP PHY driver? ...or are they
> really different hardware blocks, in which case how would you describe
> the difference (both are described as UFS QMP PHYs I think).

As you rightly said "ufs/ufs-qcom.txt" describes the bindings for
14nm, and 20nm ufs phy. These phys are however handled by the older
ufs phy driver present at:
drivers/phy/qualcomm/phy-qcom-ufs-qmp-{14nm,20nm}.c
The sdm845 UFS phy driver is handled by the new consolidated qmp phy
driver: drivers/phy/qualcomm/phy-qcom-qmp.c whose bindings are
described by 'qcom-qmp-phy.txt'.
We didn't attempt to move the 14nm phy to new driver as we already had
8996 using the bindings.

So, really these are two separate drivers with different bindings. I
believe it should be okay to move the file. If you are fine, I can
attempt to post a small patch to do that.
Thanks.

>
> BTW: I have a patch attempting to fixup the QMP PHY bindings at
> <https://lkml.kernel.org/r/20181012213632.252346-1-dianders@xxxxxxxxxxxx>.

Sure, I will review this as well. Thanks for reminiding.

Best regards
Vivek


--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation