On Wed, Feb 03, 2021 at 09:01:23AM +0100, Geert Uytterhoeven wrote:
Hi Rob,
On Tue, Feb 2, 2021 at 9:55 PM Rob Herring [off-list ref] wrote:
quoted
Properties in if/then schemas weren't getting checked by the meta-schemas.
Enabling meta-schema checks finds several errors.
The use of an 'items' schema (as opposed to the list form) is wrong in
some cases as it applies to all entries. 'contains' is the correct schema
to use in the case of multiple entries.
quoted
Signed-off-by: Rob Herring <robh@kernel.org>
Thanks for your patch!
quoted
--- a/Documentation/devicetree/bindings/phy/renesas,usb2-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/renesas,usb2-phy.yaml
@@ -81,9 +81,8 @@ properties:
if:
properties:
compatible:
- items:
- enum:
- - renesas,usb2-phy-r7s9210
+ contains:
+ const: renesas,usb2-phy-r7s9210
Single entry, so "contains" not needed?
No, you are misunderstanding how these work. 'contains' means at least
one entry in an array passes with the subschema. In this case,
'renesas,usb2-phy-r7s9210' must appear somewhere in the 'compatible'
values. (Before, it said *every* entry must be
'renesas,usb2-phy-r7s9210'.) As there is a fallback compatible, we need
'contains'.
quoted
--- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc.yaml
@@ -76,11 +76,10 @@ required:
if:
properties:
compatible:
- items:
- enum:
- - renesas,pfc-r8a73a4
- - renesas,pfc-r8a7740
- - renesas,pfc-sh73a0
+ enum:
+ - renesas,pfc-r8a73a4
+ - renesas,pfc-r8a7740
+ - renesas,pfc-sh73a0
Missing "contains"?
No. In this case, 'compatible' is always a single entry, so no
'contains' needed (but would work). If compatible is one of these 3
strings, then the 'if' is true.
The original way would actually work in this case (i.e. is valid
json-schema), but we require 'items' to have a size (maxItems/minItems)
in our meta-schema.
Rob