On Wed, May 24, 2023 at 10:02:41PM -0700, William Zhang wrote: > Hi, > > It seems dt_binding_check reports a false error when run on this > modified yaml. I picked this simple file just to demostrate this issue. > Basically I made the interrupts and interrupt-names as optional > properties. But when there are two interrupts present, then > interrupt-names are required. However in the example, I don't define > interrupts and interrupt-name at all, the dt binding check reports error > that interrupt-names are required: > > make dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml > LINT Documentation/devicetree/bindings > CHKDT Documentation/devicetree/bindings/processed-schema.json > SCHEMA Documentation/devicetree/bindings/processed-schema.json > DTEX Documentation/devicetree/bindings/crypto/fsl-imx-scc.example.dts > DTC_CHK Documentation/devicetree/bindings/crypto/fsl-imx-scc.example.dtb > Documentation/devicetree/bindings/crypto/fsl-imx-scc.example.dtb: crypto@53fac000: 'interrupt-names' is a required property > From schema: /home/william/projects/linux/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml > > This does not make sense to me as name is required only when there are > two interrupts. Can someone familar with this please help to check if I > miss anything in the yaml file or it is indeed a bug in binding check? > > Thanks, > William > > --- > .../devicetree/bindings/crypto/fsl-imx-scc.yaml | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml b/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml > index 563a31605d2b..c37a3a64a78c 100644 > --- a/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml > +++ b/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml > @@ -32,11 +32,18 @@ properties: > clock-names: > const: ipg > > +allOf: > + - if: > + properties: > + interrupts: > + minItems: 2 This is a quirk of json-schema in that the 'if' will be true if the property is not present. Adding this to the 'if' should fix the problem: required: - interrupts > + then: > + required: > + - interrupt-names > + > required: > - compatible > - reg > - - interrupts > - - interrupt-names > - clocks > - clock-names > > @@ -49,6 +56,4 @@ examples: > reg = <0x53fac000 0x4000>; > clocks = <&clks 111>; > clock-names = "ipg"; > - interrupts = <49>, <50>; > - interrupt-names = "scm", "smn"; > }; > -- > 2.34.1 >