Re: [PATCH v2 3/3] dt-bindings: thermal: Add yaml bindings for thermal zones
From: Rob Herring
Date: Tue Mar 24 2020 - 11:06:22 EST
On Tue, Mar 24, 2020 at 4:33 AM Amit Kucheria <amit.kucheria@xxxxxxxxxx> wrote:
>
> On Tue, Mar 24, 2020 at 2:46 AM Rob Herring <robh@xxxxxxxxxx> wrote:
> >
> > On Mon, Mar 23, 2020 at 2:46 PM Amit Kucheria <amit.kucheria@xxxxxxxxxx> wrote:
> > >
> > > Hi Rob,
> > >
> > > Thanks for the review.
> > >
> > > On Wed, Mar 11, 2020 at 8:19 PM Rob Herring <robh@xxxxxxxxxx> wrote:
> > > >
> > > > On Thu, Mar 05, 2020 at 06:26:43PM +0530, Amit Kucheria wrote:
> > > > > As part of moving the thermal bindings to YAML, split it up into 3
> > > > > bindings: thermal sensors, cooling devices and thermal zones.
> > > > >
> > > > > The thermal-zone binding is a software abstraction to capture the
> > > > > properties of each zone - how often they should be checked, the
> > > > > temperature thresholds (trips) at which mitigation actions need to be
> > > > > taken and the level of mitigation needed at those thresholds.
> >
>
> [...]
>
> >
> > > > > + /* ... */
> > > > > +
> > > > > + gpu-thermal-top {
> > > >
> > > > This one is not going to match (which should cause an error).
> > >
> > > Good catch. Unfortunately, this isn't getting caught. Nor is the
> > > 12-char limitation before -thermal in the thermal zone name. I can't
> > > figure out why.
> >
> > That's because this schema has to be included by another schema which
> > matches on a parent node containing 'thermal-zones'. If
> > 'thermal-zones' can be at the root node, then you should rework this
> > such that you have $nodename: {const: thermal-zones} as a top-level
> > property.
>
> I've done all the change requested in the review(see attached patch),
> including moving to
>
> properties:
> $nodename:
> const: thermal-zones
>
> but that generates a bunch of errors similar to:
>
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/zte.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/psci.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/sunxi.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/sprd/sprd.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/calxeda.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/ti/ti,davinci.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/spear.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
> /home/amit/work/builds/build-aarch64/Documentation/devicetree/bindings/arm/ti/nspire.example.dt.yaml:
> /: $nodename:0: 'thermal-zones' was expected
>
> It seems like dtc is expecting every node to have a thermal-zones node?
>
> Looking at other root nodes such as cpus.yaml, the main difference I
> noticed was the absence of the "select: true" property. However, if I
> remove that, we go back to the schema not being applied.
'select: true' should be dropped. It will be applied to any
'thermal-zones' nodes. The generated 'select' will use $nodename if
compatible is not present for the schema.
I tested that putting an error in the example works.
> You mentioned that the thermal-zones schema needs to included by
> another schema. What did you mean by that?
Nevermind, I wasn't thinking that it's a top-level node. If it was a
child node, then you'd want to include it from the parent schemas.
Rob