From: Maxime Ripard <maxime@cerno.tech>
To: Rob Herring <robh+dt@kernel.org>
Cc: Frank Rowand <frowand.list@gmail.com>, devicetree@vger.kernel.org
Subject: Re: led-gpios binding reporting a weird error
Date: Tue, 2 Mar 2021 11:25:43 +0100 [thread overview]
Message-ID: <20210302102543.logemybkzqhebzxa@gilmour> (raw)
In-Reply-To: <CAL_Jsq+wR6zov2FmEqjDFnydmoZd9WFqdbAqR-Tew3b3w50=HQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4873 bytes --]
Hi,
On Mon, Mar 01, 2021 at 04:29:10PM -0600, Rob Herring wrote:
> On Wed, Feb 24, 2021 at 3:54 AM Maxime Ripard <maxime@cerno.tech> wrote:
> >
> > Hi Rob,
> >
> > On Fri, Feb 19, 2021 at 05:21:49PM -0600, Rob Herring wrote:
> > > On Fri, Feb 19, 2021 at 3:24 AM Maxime Ripard <maxime@cerno.tech> wrote:
> > > >
> > > > On Mon, Feb 01, 2021 at 10:52:35AM +0100, Maxime Ripard wrote:
> > > > > On Thu, Jan 14, 2021 at 12:15:04PM +0100, Maxime Ripard wrote:
> > > > > > Hi Rob,
> > > > > >
> > > > > > I just encountered a weird error with the led-gpios bindings.
> > >
> > > Sorry lost in the ether...
> > >
> > > > > >
> > > > > > Indeed, if we run, on today's next and the current master of the
> > > > > > dt-schema tools:
> > > > > >
> > > > > > DT_SCHEMA_FILES=Documentation/devicetree/bindings/leds/leds-gpio.yaml make -j18 dt_binding_check
> > > > > >
> > > > > > we end up with:
> > > > > > CHECK Documentation/devicetree/bindings/leds/leds-gpio.example.dt.yaml
> > > > > > /home/max/Work/allwinner/build/arm64/Documentation/devicetree/bindings/leds/leds-gpio.example.dt.yaml: leds: led-1:default-state:0: 'keep' is not of type 'array'
> > > > > > From schema: /home/max/Work/repos/linux/Documentation/devicetree/bindings/leds/leds-gpio.yaml
> > > > > > /home/max/Work/allwinner/build/arm64/Documentation/devicetree/bindings/leds/leds-gpio.example.dt.yaml: run-control: led-0:default-state:0: 'off' is not of type 'array'
> > > > > > From schema: /home/max/Work/repos/linux/Documentation/devicetree/bindings/leds/leds-gpio.yaml
> > > > > > /home/max/Work/allwinner/build/arm64/Documentation/devicetree/bindings/leds/leds-gpio.example.dt.yaml: run-control: led-1:default-state:0: 'on' is not of type 'array'
> > > > > > From schema: /home/max/Work/repos/linux/Documentation/devicetree/bindings/leds/leds-gpio.yaml
> > > > > >
> > > > > > What's being especially weird is that linux,default-trigger has the
> > > > > > exact same definition than default-state in leds/common.yaml (aside from
> > > > > > the set of valid values), and just works fine.
> > > > > >
> > > > > > Changing the name of default-state to something else also doesn't change
> > > > > > anything, so it doesn't look like this is some other schema interfering.
> > > > > > Do you have an idea?
> > >
> > > What does processed-schema-examples.json (run thru json_pp) look like
> > > for 'default-state'?
> >
> > The whole file is here: https://paste.ack.tf/fd7597@raw
> >
> > But the default-state schema itself is:
> >
> > "default-state" : {
> > "additionalItems" : false,
> > "allOf" : [
> > {
> > "$ref" : "/schemas/types.yaml#/definitions/string"
> > }
> > ],
> > "default" : false,
> > "items" : [
> > {
> > "additionalItems" : false,
> > "items" : [
> > {
> > "enum" : [
> > true,
> > false,
> > "keep"
> > ]
> > }
> > ],
> > "maxItems" : 1,
> > "minItems" : 1,
> > "type" : "array"
> > }
> > ],
> > "maxItems" : 1,
> > "minItems" : 1,
> > "type" : "array"
> > },
> >
> > It looks like the error comes from on and off being expanded to true and
> > false for some reason, instead of being considered as string
>
> on/off was treated as boolean in YAML 1.1. While the files say 1.2,
> dtschema changes them to 1.1 because ruamel.yaml at one point didn't
> support 1.2 with the C parser. It looks like the C and python parsers
> have different behavior, and I think you don't have the C based parser
> installed. The patch below fixes the problem for me if I force using
> the Python parser. Really, we should probably ensure the C parser is
> installed.
>
> I am confused now why I added this code a year ago, but 1.2 support
> was added back in 2018.
>
> 8<---------------------------------------------------
> diff --git a/dtschema/lib.py b/dtschema/lib.py
> index b18eda43fb12..d51ace7fe14f 100644
> --- a/dtschema/lib.py
> +++ b/dtschema/lib.py
> @@ -107,9 +107,7 @@ def do_load(filename):
> if filename.endswith('.json'):
> return json.load(f)
>
> - # ruamel C loader doesn't support 1.2, but 1.1 is good enough for us
> - tmp = f.read().replace('YAML 1.2', 'YAML 1.1')
> - return yaml.load(tmp)
> + return yaml.load(f.read())
Yeah, that fixes things for me too (together with installing the C
version of ruamel)
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2021-03-02 20:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-14 11:15 led-gpios binding reporting a weird error Maxime Ripard
2021-02-01 9:52 ` Maxime Ripard
2021-02-19 9:24 ` Maxime Ripard
2021-02-19 23:21 ` Rob Herring
2021-02-24 9:54 ` Maxime Ripard
2021-03-01 22:29 ` Rob Herring
2021-03-02 10:25 ` Maxime Ripard [this message]
2021-03-02 14:19 ` Rob Herring
2021-03-02 15:17 ` Maxime Ripard
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=20210302102543.logemybkzqhebzxa@gilmour \
--to=maxime@cerno.tech \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=robh+dt@kernel.org \
/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