Thread (12 messages) 12 messages, 4 authors, 2020-02-29

Re: [PATCH 2/3] dt-bindings: gpio: Convert UniPhier GPIO to json-schema

From: Masahiro Yamada <masahiroy@kernel.org>
Date: 2020-02-24 16:00:39
Also in: linux-devicetree, linux-gpio, lkml

Hi Rob,

On Mon, Feb 24, 2020 at 11:52 PM Rob Herring [off-list ref] wrote:
On Fri, Feb 21, 2020 at 11:33 PM Masahiro Yamada [off-list ref] wrote:
quoted
Hi Rob,

On Sat, Feb 22, 2020 at 12:32 AM Rob Herring [off-list ref] wrote:
quoted
On Fri, 21 Feb 2020 11:10:01 +0900, Masahiro Yamada wrote:
quoted
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 <redacted>
---

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


quoted
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
quoted
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.



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.





--
Best Regards
Masahiro Yamada

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help