Hi Rob, On Thu, May 2, 2019 at 2:32 PM Geert Uytterhoeven <geert+renesas@xxxxxxxxx> wrote: > Add DT bindings for the Renesas RZ/A1 Interrupt Controller. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > --- /dev/null > +++ b/Documentation/devicetree/bindings/interrupt-controller/renesas,rza1-irqc.txt > @@ -0,0 +1,43 @@ > +DT bindings for the Renesas RZ/A1 Interrupt Controller > + > +The RZ/A1 Interrupt Controller is a front-end for the GIC found on Renesas > +RZ/A1 and RZ/A2 SoCs: > + - IRQ sense select for 8 external interrupts, 1:1-mapped to 8 GIC SPI > + interrupts, > + - NMI edge select. > + > +Required properties: > + - compatible: Must be "renesas,<soctype>-irqc", and "renesas,rza1-irqc" as > + fallback. > + Examples with soctypes are: > + - "renesas,r7s72100-irqc" (RZ/A1H) > + - "renesas,r7s9210-irqc" (RZ/A2M) > + - #interrupt-cells: Must be 2 (an interrupt index and flags, as defined > + in interrupts.txt in this directory) > + - #address-cells: Must be zero > + - interrupt-controller: Marks the device as an interrupt controller > + - reg: Base address and length of the memory resource used by the interrupt > + controller > + - interrupt-map: Specifies the mapping from external interrupts to GIC > + interrupts > + - interrupt-map-mask: Must be <7 0> > + > +Example: > + > + irqc: interrupt-controller@fcfef800 { > + compatible = "renesas,r7s72100-irqc", "renesas,rza1-irqc"; > + #interrupt-cells = <2>; > + #address-cells = <0>; > + interrupt-controller; > + reg = <0xfcfef800 0x6>; > + interrupt-map = > + <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, > + <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, > + <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, > + <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, > + <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, > + <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, > + <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, > + <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-map-mask = <7 0>; > + }; "make dtbs_check" does not like this example: arch/arm/boot/dts/r7s72100-rskrza1.dt.yaml: interrupt-controller@fcfef800: {'compatible': ['renesas,r7s72100-irqc', 'renesas,rza1-irqc'], '#interrupt-cells': [[2]], '#address-cells': [[0]], 'interrupt-controller': True, 'reg': [[4244568064, 6]], 'interrupt-map': [[0, 0, 3, 0, 0, 4], [1, 0, 3, 0, 1, 4], [2, 0, 3, 0, 2, 4], [3, 0, 3, 0, 3, 4], [4, 0, 3, 0, 4, 4], [5, 0, 3, 0, 5, 4], [6, 0, 3, 0, 6, 4], [7, 0, 3, 0, 7, 4]], 'interrupt-map-mask': [[7, 0]], 'phandle': [[27]], '$nodename': ['interrupt-controller@fcfef800']} is valid under each of {'required': ['interrupt-map']}, {'required': ['interrupt-controller']} {'oneOf': [{'required': ['interrupt-controller']}, {'required': ['interrupt-map']}]} as it considers interrupt-controller and interrupt-map mutually-exclusive. This comes from dt-schema/meta-schemas/interrupts.yaml: dependencies: interrupt-map: ['#interrupt-cells', 'interrupt-map-mask'] '#interrupt-cells': oneOf: - required: - interrupt-controller - required: - interrupt-map and/or dt-schema/schemas/interrupt-controller.yaml: dependencies: interrupt-controller: ['#interrupt-cells'] interrupt-map: ['#interrupt-cells', 'interrupt-map-mask'] "#interrupt-cells": oneOf: - required: - interrupt-controller - required: - interrupt-map Removing the "interrupt-controller" property fixes the warning, but impacts the logic in of_irq_parse_raw(). Is there something wrong with the base schema? Or perhaps this will just be be fixed by converting renesas,rza1-irqc.txt to yaml? Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds