Re: [PATCH v2 1/4] dt-bindings: clock: si5351: convert to yaml

From: Rob Herring
Date: Tue Oct 10 2023 - 10:50:22 EST


On Wed, Oct 4, 2023 at 4:40 PM Alvin Šipraga <ALSI@xxxxxxxxxxxxxxx> wrote:
>
> On Wed, Oct 04, 2023 at 09:39:37AM -0500, Rob Herring wrote:
> > > + silabs,multisynth-source:
> > > + $ref: /schemas/types.yaml#/definitions/uint32
> > > + enum: [ 0, 1 ]
> > > + description: |
> >
> > Don't need '|' if no formatting to preserve.
>
> I thought the line would be too long otherwise.
> Column width is 80 in dt-schema as well, right?

Yes, and up to 100 is fine as an exception.

> >
> > > + Source PLL A (0) or B (1) for the corresponding multisynth divider.

But this doesn't look like it is over 80. Maybe if you put after
'description:' on the same line, but that's not what I said. It can
still be on the next line. No '|' just means the line endings aren't
fixed. Not important now, but if we were to generate pretty
documentation from the schemas, then it would matter.

>
> [...]
>
> > > + - if:
> > > + properties:
> > > + compatible:
> > > + contains:
> > > + enum:
> > > + - silabs,si5351a
> > > + - silabs,si5351a-msop
> > > + - silabs,si5351b
> >
> > Isn't this just the 'else' for the next one? Or more parts are coming?
>
> Not sure if more parts are coming - these are the only ones I am aware of. But I
> have not checked thoroughly. I thought it better to be explicit, but I will
> change the next one to an else: in v3 unless you change your mind.
>
> >
> > > + then:
> > > + properties:
> > > + clocks:
> > > + minItems: 1
> > > + maxItems: 1
> > > + clock-names:
> > > + items:
> > > + - const: xtal
> > > +
> > > + - if:
> > > + properties:
> > > + compatible:
> > > + contains:
> > > + const: silabs,si5351c
> > > + then:
> > > + properties:
> > > + clocks:
> > > + minItems: 1
> > > + maxItems: 2
> > > + clock-names:
> > > + minItems: 1
> > > + items:
> > > + - const: xtal
> > > + - const: clkin
> >
> > Define clocks and clock-names at the top level and just use
> > minItems/maxItems in the if/then schemas.
>
> I was trying to imply here that it is invalid to specify clkin for the former
> three part types - only for the si5351c. If I specify both in the top-level
> clock-names:items then it would allow something like this:
>
> clk {
> compatible = "silabs,si5351a-msop";
> clocks = <&ref25>;
> clock-names = "clkin"; /* not OK - Si5351A-MSOP only supports XTAL */
> };

What I'm saying will work. There are lots of examples in the tree. The
top-level defines the full array and then the if/then schema just sets
the max size to 1 so that the clkin entry is not allowed.

properties:
clock-names:
minItems: 1
items:
- const: xtal
- const: clkin

if:
properties:
compatible:
contains:
const: silabs,si5351a-msop
then:
properties:
clock-names:
maxItems: 1

(and then "minItems: 2" for the cases with 2 clocks)

Rob