RE: [PATCH V3 4/5] dt-bindings: mmc: fsl-imx-esdhc: add clock bindings

From: Aisheng Dong
Date: Sat Mar 06 2021 - 00:19:04 EST


> From: Rob Herring <robh+dt@xxxxxxxxxx>
> Sent: Friday, March 5, 2021 10:14 PM
>
> On Fri, Mar 5, 2021 at 8:09 AM Aisheng Dong <aisheng.dong@xxxxxxx>
> wrote:
> >
> > Hi Rob,
> >
> > > From: Peng Fan (OSS) <peng.fan@xxxxxxxxxxx>
> > > Sent: Thursday, February 25, 2021 11:10 AM
> > >
> > > From: Peng Fan <peng.fan@xxxxxxx>
> > >
> > > Add clock bindings for fsl-imx-esdhc yaml
> > >
> > > Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
> > > ---
> > > .../devicetree/bindings/mmc/fsl-imx-esdhc.yaml | 11
> +++++++++++
> > > 1 file changed, 11 insertions(+)
> > >
> > > diff --git
> > > a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
> > > b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
> > > index a7fbd8cc1e38..369471814496 100644
> > > --- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
> > > +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
> > > @@ -103,6 +103,17 @@ properties:
> > > Only eMMC HS400 mode need to take care of this property.
> > > default: 0
> > >
> > > + clocks:
> > > + maxItems: 3
> > > + description:
> > > + Handle clocks for the sdhc controller.
> > > +
> > > + clock-names:
> > > + items:
> > > + - const: ipg
> > > + - const: ahb
> > > + - const: per
> >
> > One question:
> > The side effect of this patch is that it imposes a forced order of clk
> > names In DT which actually was not needed.
> >
> > Do we really have to do that?
>
> Yes.
>
> > Or any other better approach to allow a random order to match the DT
> > usage better?
>
> Why do you need random order?
>

Thanks for the feedback.
I thought the DT itself supports the random order of strings/names in
a property and the OF API in kernel can also handle the random name order properly.
That means DT binding don't enforce the order of names when people writing DTS.
e.g.
Order1: clock-names = "ipg", "per", "ahb"
can function the same as:
Order2: clock-names = "ipg", "ahb", "per";

However, the schema in this patch enforced the name order which caused dt binding check fail.
https://lore.kernel.org/linux-arm-kernel/CAL_JsqKAOUKnVLvu-VNeDVg0ShXPy56wxhCQv38+rO2k961v+g@xxxxxxxxxxxxxx/#t

And this seems like a common issue in kernel DT because DT supports random name order before.
If we have to fix it, should we need fix them all in kernel?

And finally, If all the names property are fixed by dt schema definition, the driver
may also work without it by using index.

> We can not enforce the order, but we only do that when there's multiple
> optional entries.

Understood, probably this is the simplest way to do a accurate DT schema checking.

Regards
Aisheng

>
> Rob