linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: DTML <devicetree@vger.kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	"David S. Miller" <davem@davemloft.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Mauro Carvalho Chehab <mchehab+samsung@kernel.org>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/3] dt-bindings: gpio: Convert UniPhier GPIO to json-schema
Date: Mon, 24 Feb 2020 15:18:08 -0600	[thread overview]
Message-ID: <CAL_JsqKZ6uZ=gEQX6akL+ASwF6ZfJJyeT_r52UaCQbaqVxxr2w@mail.gmail.com> (raw)
In-Reply-To: <CAK7LNASLaEX_Ocph88ZYMyi03KPQmr6-3mMhrZeAZCoAgUrEtQ@mail.gmail.com>

On Mon, Feb 24, 2020 at 10:00 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> Hi Rob,
>
> On Mon, Feb 24, 2020 at 11:52 PM Rob Herring <robh@kernel.org> wrote:
> >
> > On Fri, Feb 21, 2020 at 11:33 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > >
> > > Hi Rob,
> > >
> > > On Sat, Feb 22, 2020 at 12:32 AM Rob Herring <robh@kernel.org> wrote:
> > > >
> > > > On Fri, 21 Feb 2020 11:10:01 +0900, Masahiro Yamada wrote:
> > > > > Convert the UniPhier GPIO controller binding to DT schema format.
> > > > >
> > > > > I omitted the 'gpio-ranges' property because it is defined in the
> > > > > dt-schema project (/schemas/gpio/gpio.yaml).
> > > > >
> > > > > As of writing, the 'gpio-ranges-group-names' is not defined in that
> > > > > file despite it is a common property described in
> > > > > Documentation/devicetree/bindings/gpio/gpio.txt
> > > > > So, I defined it in this schema.
> > > > >
> > > > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> > > > > ---
> > > > >
> > > > > I have a question about the range about 'ngpio'.
> > > > >
> > > > >   ngpios:
> > > > >     minimum: 0
> > > > >     maximum: 512
> > > > >
> > > > > The 'ngpio' property is already defined as 'uint32' in the dt-schema tool:
> > > > > https://github.com/robherring/dt-schema/blob/master/schemas/gpio/gpio.yaml#L20
> > > > >
> > > > > 'uint32' is unsigned, so 'minimum: 0' looks too obvious.
> > > > >
> > > > > I cannot omit the minimum because minimum and maximum depend on each other.
> > > > > I just put a sensible number, 512, in maximum.
> > > > >
> > > > > If this range is entirely unneeded, I will delete it.
> > > >
> > > > This property is generally for when you can have some number less
> > > > than a maximum number implied by the compatible string.
> > > >
> > > > If there is really no max (e.g. 2^32 - 1 is valid), then just do
> > > > 'ngpios: true'
> > >
> > >
> > > What does ': true' mean?
> >
> > It's a schema that always passes validation. It's purpose here is just
> > to say you are using this common property for this binding.
>
>
>
> OK, I see two useful cases:
>
> [1]
> Documenting purpose in order to clarify
> that you are using this property
>
> [2]
> You need to explicitly specify ': true'
> if you have 'additionalProperties: false' .
> Otherwise, the following warning is displayed:
> ... do not match any of the regexes: 'pinctrl-[0-9]+'
>
>
>
> For [1], it is already clear that this binding
> is using ngpios from 'require'
>
>
> require:
>   - ngpios
>
>
>
> > >
> > > If it is documented somewhere,
> > > could you point me to the reference?
> >
> > https://github.com/devicetree-org/dt-schema/blob/master/schemas/gpio/gpio.yaml
> >
> > >
> > > Even if I remove the 'ngpio' entirely
> > > from my dt-schema, the 'ngpio' is checked
> > > correctly.
> >
> > Yes, if you change it to a string value for example, it should fail.
> > (Only if DT_SCHEMA_FILES is not set without my kbuild changes)
> >
> > You should also add 'additionalProperties: false' at the top level of
> > your schema and then it will also fail if you don't list ngpios in
> > properties.
>
> Hmm, I am confused.
>
> 'require: - ngpios' will warn if you don't list ngpios.
>
> 'additionalProperties: false' will warn if you list
> other properties than what is explicitly specified.

Yeah, that's a quirk of json-schema. We could probably ensure that
anything listed in 'required' also has a property schema, but in this
case I think it's better to be explicit.

Without 'additionalProperties: false', then the validation will pass
with a 'foo-bar' property. Or worse, typos like 'ngpio', 'nrgpios',
'#gpios-cells', etc. will pass validation.

> BTW, I will not add 'additionalProperties: false'
> in this binding.
>
>
> The real DT files have
>
>  interrupt-parent = <&aidet>;
> (arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi line 324)
>
> but, commit 791d3ef2e11100449837dc0b6fe884e60ca3a484
> removed interrupt-parent from bindings.

interrupt-parent is automagically added by the tools for any node with
'interrupts'. Similarly, 'interrupts-extended' will also work.

Rob

>
>
>
>
>
> --
> Best Regards
> Masahiro Yamada

  reply	other threads:[~2020-02-24 21:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-21  2:10 [PATCH 1/3] dt-bindings: arm: Convert UniPhier board/SoC bindings to json-schema Masahiro Yamada
2020-02-21  2:10 ` [PATCH 2/3] dt-bindings: gpio: Convert UniPhier GPIO " Masahiro Yamada
2020-02-21 15:32   ` Rob Herring
2020-02-22  5:32     ` Masahiro Yamada
2020-02-24 14:51       ` Rob Herring
2020-02-24 15:59         ` Masahiro Yamada
2020-02-24 21:18           ` Rob Herring [this message]
2020-02-21  2:10 ` [PATCH 3/3] dt-bingings: pinctrl: Convert UniPhier pin controller " Masahiro Yamada
2020-02-28 22:13   ` Linus Walleij
2020-02-29  4:12     ` Masahiro Yamada
2020-02-21 15:25 ` [PATCH 1/3] dt-bindings: arm: Convert UniPhier board/SoC bindings " Rob Herring
2020-02-22  5:20   ` Masahiro Yamada

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='CAL_JsqKZ6uZ=gEQX6akL+ASwF6ZfJJyeT_r52UaCQbaqVxxr2w@mail.gmail.com' \
    --to=robh@kernel.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=masahiroy@kernel.org \
    --cc=mchehab+samsung@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;
as well as URLs for NNTP newsgroup(s).