On Fri, Nov 15, 2019 at 11:28 AM Alexandre Torgue <alexandre.torgue@xxxxxx> wrote: > > > > On 11/14/19 6:18 PM, Rob Herring wrote: > > On Thu, Nov 14, 2019 at 10:41 AM Alexandre Torgue > > <alexandre.torgue@xxxxxx> wrote: > >> > >> Convert the STM32 external interrupt controller (EXTI) binding to DT > >> schema format using json-schema. > >> > >> Signed-off-by: Alexandre Torgue <alexandre.torgue@xxxxxx> > >> --- > >> > >> Hi Rob, > >> > >> I planned to use "additionalProperties: false" for this schema but as I add a > >> property under condition, I got an error (property added under contion seems > >> to be detected as an "additional" property and then error is raised). > >> > >> Is there a way to fix that ? > > > > See below. > > > >> > >> regards > >> Alex > >> > >> diff --git a/Documentation/devicetree/bindings/interrupt-controller/st,stm32-exti.txt b/Documentation/devicetree/bindings/interrupt-controller/st,stm32-exti.txt > >> deleted file mode 100644 > >> index cd01b2292ec6..000000000000 > >> --- a/Documentation/devicetree/bindings/interrupt-controller/st,stm32-exti.txt > >> +++ /dev/null > >> @@ -1,29 +0,0 @@ > >> -STM32 External Interrupt Controller > >> - > >> -Required properties: > >> - > >> -- compatible: Should be: > >> - "st,stm32-exti" > >> - "st,stm32h7-exti" > >> - "st,stm32mp1-exti" > >> -- reg: Specifies base physical address and size of the registers > >> -- interrupt-controller: Indentifies the node as an interrupt controller > >> -- #interrupt-cells: Specifies the number of cells to encode an interrupt > >> - specifier, shall be 2 > >> -- interrupts: interrupts references to primary interrupt controller > >> - (only needed for exti controller with multiple exti under > >> - same parent interrupt: st,stm32-exti and st,stm32h7-exti) > >> - > >> -Optional properties: > >> - > >> -- hwlocks: reference to a phandle of a hardware spinlock provider node. > >> - > >> -Example: > >> - > >> -exti: interrupt-controller@40013c00 { > >> - compatible = "st,stm32-exti"; > >> - interrupt-controller; > >> - #interrupt-cells = <2>; > >> - reg = <0x40013C00 0x400>; > >> - interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>; > >> -}; > >> diff --git a/Documentation/devicetree/bindings/interrupt-controller/st,stm32-exti.yaml b/Documentation/devicetree/bindings/interrupt-controller/st,stm32-exti.yaml > >> new file mode 100644 > >> index 000000000000..39be37e1e532 > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/interrupt-controller/st,stm32-exti.yaml > >> @@ -0,0 +1,82 @@ > >> +# SPDX-License-Identifier: GPL-2.0 > > > > If ST has copyright on the old binding, can you add BSD here. > > > > I will. > > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/interrupt-controller/st,stm32-exti.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: STM32 External Interrupt Controller Device Tree Bindings > >> + > >> +maintainers: > >> + - Alexandre Torgue <alexandre.torgue@xxxxxx> > >> + - Ludovic Barre <ludovic.barre@xxxxxx> > >> + > >> +properties: > >> + compatible: > >> + oneOf: > >> + - items: > >> + - enum: > >> + - st,stm32-exti > >> + - st,stm32h7-exti > >> + - items: > >> + - enum: > >> + - st,stm32mp1-exti > >> + - const: syscon > >> + > >> + "#interrupt-cells": > >> + const: 2 > >> + > >> + reg: > >> + maxItems: 1 > >> + > >> + interrupt-controller: true > >> + > >> + hwlocks: > >> + maxItems: 1 > >> + description: > >> + Reference to a phandle of a hardware spinlock provider node. > >> + > >> +required: > >> + - "#interrupt-cells" > >> + - compatible > >> + - reg > >> + - interrupt-controller > >> + > >> +allOf: > >> + - $ref: /schemas/interrupt-controller.yaml# > >> + - if: > >> + properties: > >> + compatible: > >> + contains: > >> + enum: > >> + - st,stm32-exti > >> + - st,stm32h7-exti > >> + then: > >> + properties: > >> + interrupts: > >> + allOf: > >> + - $ref: /schemas/types.yaml#/definitions/uint32-array > > > > Standard property, doesn't need a type. You just need 'maxItems' or an > > 'items' list if the index is not meaningful. This appears to be the > > former case. > > ok > > > > >> + description: > >> + Interrupts references to primary interrupt controller > >> + required: > >> + - interrupts > > > > You can move the definition to the main section as you only need > > 'required' here. That should fix your additionalProperties issue. > > > Doing that it fails as I don't have interrupts define for mp1 > compatible. Maybe I missed something ? Like this: properties: ... interrupts: maxItems: ?? minItems: ?? allOf: - $ref: /schemas/interrupt-controller.yaml# - if: properties: compatible: contains: enum: - st,stm32-exti - st,stm32h7-exti then: required: - interrupts