dt-bindings: Drop required 'interrupt-parent'
Subsystems (15)
Rob Herring
maintainerPATCH 1/1 dt-bindings: Drop required 'interrupt-parent'
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 - .../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)
Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml +0 -1
@@ -43,7 +43,6 @@ required: - gpio-controller - interrupt-controller - "#interrupt-cells" - - interrupt-parent additionalProperties: false
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0 -9
@@ -175,15 +175,6 @@ required: - ti,mbox-num-fifos allOf: - - if: - properties: - compatible: - enum: - - ti,am654-mailbox - then: - required: - - interrupt-parent - - if: properties: compatible:
Documentation/devicetree/bindings/mfd/cirrus,madera.yaml +0 -1
@@ -221,7 +221,6 @@ required: - '#gpio-cells' - interrupt-controller - '#interrupt-cells' - - interrupt-parent - interrupts - AVDD-supply - DBVDD1-supply
Documentation/devicetree/bindings/net/lantiq,etop-xway.yaml +0 -1
@@ -46,7 +46,6 @@ properties: required: - compatible - reg - - interrupt-parent - interrupts - interrupt-names - lantiq,tx-burst-length
Documentation/devicetree/bindings/net/lantiq,xrx200-net.yaml +0 -1
@@ -38,7 +38,6 @@ properties: required: - compatible - reg - - interrupt-parent - interrupts - interrupt-names - "#address-cells"
Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml +0 -1
@@ -61,7 +61,6 @@ required: - num-lanes - interrupts - interrupt-names - - interrupt-parent - interrupt-map-mask - interrupt-map - clock-names
Documentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml +0 -1
@@ -55,7 +55,6 @@ required: - reg-names - "#interrupt-cells" - interrupts - - interrupt-parent - interrupt-map - interrupt-map-mask - bus-range
Signature · 1 line
2.32.0
Quoted 109 lines · Rob Herring
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
Signed-off-by Rob Herring <[email protected]>--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 - .../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml +0
-1@@ -43,7 +43,6 @@ required: - gpio-controller - interrupt-controller - "#interrupt-cells" - - interrupt-parent additionalProperties: falseDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-9@@ -175,15 +175,6 @@ required: - ti,mbox-num-fifos allOf: - - if: - properties: - compatible: - enum: - - ti,am654-mailbox - then: - required: - - interrupt-parent - - if: properties: compatible:Documentation/devicetree/bindings/mfd/cirrus,madera.yaml +0
-1@@ -221,7 +221,6 @@ required: - '#gpio-cells' - interrupt-controller - '#interrupt-cells' - - interrupt-parent - interrupts - AVDD-supply - DBVDD1-supplyDocumentation/devicetree/bindings/net/lantiq,etop-xway.yaml +0
-1@@ -46,7 +46,6 @@ properties: required: - compatible - reg - - interrupt-parent - interrupts - interrupt-names - lantiq,tx-burst-lengthDocumentation/devicetree/bindings/net/lantiq,xrx200-net.yaml +0
-1@@ -38,7 +38,6 @@ properties: required: - compatible - reg - - interrupt-parent - interrupts - interrupt-names - "#address-cells"Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml +0
-1@@ -61,7 +61,6 @@ required: - num-lanes - interrupts - interrupt-names - - interrupt-parent - interrupt-map-mask - interrupt-map - clock-namesDocumentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml +0
-2@@ -55,7 +55,6 @@ required: - reg-names - "#interrupt-cells" - interrupts - - interrupt-parent - interrupt-map - interrupt-map-mask - bus-range --
Quoted 2 lines
2.32.0
For GPIO:
Hi Rob,
Quoted 34 lines · Rob Herring
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
Signed-off-by Rob Herring <[email protected]>--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 - .../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml +0
-1@@ -43,7 +43,6 @@ required: - gpio-controller - interrupt-controller - "#interrupt-cells" - - interrupt-parent additionalProperties: falseDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-0@@ -175,15 +175,6 @@ required: - ti,mbox-num-fifos
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml required: · line 186
Quoted 10 lines
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-9allOf: - - if: - properties: - compatible: - enum: - - ti,am654-mailbox - then: - required: - - interrupt-parent -
There are multiple interrupt controllers on TI K3 devices, and we need this property to be defined _specifically_ to point to the relevant interrupt router parent node.
While what you state in general is true, I cannot have a node not define this on K3 devices, and end up using the wrong interrupt parent (GIC interrupt-controller). That's why the conditional compatible check.
regards
Suman
Quoted 64 lines
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-0- if: properties: compatible:Documentation/devicetree/bindings/mfd/cirrus,madera.yaml +0
-1@@ -221,7 +221,6 @@ required: - '#gpio-cells' - interrupt-controller - '#interrupt-cells' - - interrupt-parent - interrupts - AVDD-supply - DBVDD1-supplyDocumentation/devicetree/bindings/net/lantiq,etop-xway.yaml +0
-1@@ -46,7 +46,6 @@ properties: required: - compatible - reg - - interrupt-parent - interrupts - interrupt-names - lantiq,tx-burst-lengthDocumentation/devicetree/bindings/net/lantiq,xrx200-net.yaml +0
-1@@ -38,7 +38,6 @@ properties: required: - compatible - reg - - interrupt-parent - interrupts - interrupt-names - "#address-cells"Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml +0
-1@@ -61,7 +61,6 @@ required: - num-lanes - interrupts - interrupt-names - - interrupt-parent - interrupt-map-mask - interrupt-map - clock-namesDocumentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml +0
-1@@ -55,7 +55,6 @@ required: - reg-names - "#interrupt-cells" - interrupts - - interrupt-parent - interrupt-map - interrupt-map-mask - bus-range
Rob Herring
maintainerQuoted 53 lines · Suman Anna
Hi Rob,
Quoted 34 lines · Rob Herring
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
Signed-off-by Rob Herring <[email protected]>--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 - .../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml +0
-1@@ -43,7 +43,6 @@ required: - gpio-controller - interrupt-controller - "#interrupt-cells" - - interrupt-parent additionalProperties: falseDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-0@@ -175,15 +175,6 @@ required: - ti,mbox-num-fifosDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml required: · line 186
Quoted 10 lines
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-9allOf: - - if: - properties: - compatible: - enum: - - ti,am654-mailbox - then: - required: - - interrupt-parent -There are multiple interrupt controllers on TI K3 devices, and we need this property to be defined _specifically_ to point to the relevant interrupt router parent node.
Quoted 3 lines
While what you state in general is true, I cannot have a node not define this on K3 devices, and end up using the wrong interrupt parent (GIC interrupt-controller). That's why the conditional compatible check.
But you could.
The parent node can have a default interrupt-parent and child nodes can override that. It doesn't matter which one is the default though typically you would want the one used the most to be the default. Looking at your dts files, it looks like you all did the opposite. The only way that wouldn't work is if the parent node is if the parent node has its own 'interrupts' or you are just abusing 'interrupt-parent' where the standard parsing doesn't work.
You are also free to use 'interrupts-extended' anywhere 'interrupts' is used and then interrupt-parent being present is an error. How you structure all this is outside the scope of binding schemas which only need to define how many interrupts and what are they. Ensuring parents and cell sizes are correct is mostly done by dtc.
Rob
Hi Rob,
Quoted 58 lines · Rob Herring
Quoted 53 lines · Suman Anna
Hi Rob,
Quoted 34 lines · Rob Herring
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
Signed-off-by Rob Herring <[email protected]>--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 - .../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml +0
-1@@ -43,7 +43,6 @@ required: - gpio-controller - interrupt-controller - "#interrupt-cells" - - interrupt-parent additionalProperties: falseDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-0@@ -175,15 +175,6 @@ required: - ti,mbox-num-fifosDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml required: · line 186
Quoted 10 lines
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-9allOf: - - if: - properties: - compatible: - enum: - - ti,am654-mailbox - then: - required: - - interrupt-parent -There are multiple interrupt controllers on TI K3 devices, and we need this property to be defined _specifically_ to point to the relevant interrupt router parent node.
Quoted 3 lines
While what you state in general is true, I cannot have a node not define this on K3 devices, and end up using the wrong interrupt parent (GIC interrupt-controller). That's why the conditional compatible check.
Quoted 6 lines
But you could.
The parent node can have a default interrupt-parent and child nodes can override that. It doesn't matter which one is the default though typically you would want the one used the most to be the default. Looking at your dts files, it looks like you all did the opposite.
Hmm, I am not sure I understood your last comment. Can you point out the specific usage?
All our K3 dts files have the interrupt-parent = <&gic500> defined at the root-node, which is the default ARM GIC.
Let us know if we need to fix something in our dts files.
The
Quoted 3 lines
only way that wouldn't work is if the parent node is if the parent node has its own 'interrupts' or you are just abusing 'interrupt-parent' where the standard parsing doesn't work.
All our K3 gic500 nodes does have an 'interrupts' property.
Quoted 3 lines
You are also free to use 'interrupts-extended' anywhere 'interrupts' is used and then interrupt-parent being present is an error.
Yes, this is understood. The OMAP Mailbox binding is reused between multiple SoC families, some of which do not use an Interrupt Router in between.
So, whats the best way to enforce this in the specific schema? I have used the common 'interrupts' property that applies to all SoCs, and enforced the conditional 'interrupt-parent' only on relevant compatibles.
regards
Suman
How you
Quoted 6 lines
structure all this is outside the scope of binding schemas which only need to define how many interrupts and what are they. Ensuring parents and cell sizes are correct is mostly done by dtc.
Rob
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Rob Herring
maintainerQuoted 64 lines · Suman Anna
Hi Rob,
Quoted 60 lines · Rob Herring
Quoted 53 lines · Suman Anna
Hi Rob,
Quoted 34 lines · Rob Herring
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
Signed-off-by Rob Herring <[email protected]>--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 - .../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml +0
-1@@ -43,7 +43,6 @@ required: - gpio-controller - interrupt-controller - "#interrupt-cells" - - interrupt-parent additionalProperties: falseDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-0@@ -175,15 +175,6 @@ required: - ti,mbox-num-fifosDocumentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml required: · line 186
Quoted 10 lines
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml +0
-9allOf: - - if: - properties: - compatible: - enum: - - ti,am654-mailbox - then: - required: - - interrupt-parent -There are multiple interrupt controllers on TI K3 devices, and we need this property to be defined _specifically_ to point to the relevant interrupt router parent node.
Quoted 3 lines
While what you state in general is true, I cannot have a node not define this on K3 devices, and end up using the wrong interrupt parent (GIC interrupt-controller). That's why the conditional compatible check.
But you could.
Quoted 7 lines
Quoted 4 lines
The parent node can have a default interrupt-parent and child nodes can override that. It doesn't matter which one is the default though typically you would want the one used the most to be the default. Looking at your dts files, it looks like you all did the opposite.
Hmm, I am not sure I understood your last comment. Can you point out the specific usage?
Perhaps an example. These are all equivalent:
parent {
child1 {
interrupt-parent = <&intc1>;
interrupts = <1>;
};
child2 {
interrupt-parent = <&intc2>;
interrupts = <2>; };
};
parent {
interrupt-parent = <&intc1>; // Or in the parent's parent...
child1 {
interrupts = <1>;
};
child2 {
interrupt-parent = <&intc2>;
interrupts = <2>; };
};
parent {
interrupt-parent = <&intc2>;
child1 {
interrupt-parent = <&intc1>;
interrupts = <1>;
};
child2 {
interrupts = <2>; };
};
You could structure main_navss and child nodes in any of these 3 ways.
Quoted 5 lines
All our K3 dts files have the interrupt-parent = <&gic500> defined at the root-node, which is the default ARM GIC.
Let us know if we need to fix something in our dts files.
No! I'm just saying there are multiple correct ways to write the dts files.
Quoted 6 lines
The
Quoted 3 lines
only way that wouldn't work is if the parent node is if the parent node has its own 'interrupts' or you are just abusing 'interrupt-parent' where the standard parsing doesn't work.
All our K3 gic500 nodes does have an 'interrupts' property.
I said the parent node, not the 'interrupt-parent'. In this case, the parent is 'main_navss: bus@30800000'. It doesn't have 'interrupts' in your case, so only the 2nd case is a possibility.
Quoted 9 lines
Quoted 2 lines
You are also free to use 'interrupts-extended' anywhere 'interrupts' is used and then interrupt-parent being present is an error.
Yes, this is understood. The OMAP Mailbox binding is reused between multiple SoC families, some of which do not use an Interrupt Router in between.
So, whats the best way to enforce this in the specific schema? I have used the common 'interrupts' property that applies to all SoCs, and enforced the conditional 'interrupt-parent' only on relevant compatibles.
You can't. There is no way a schema can ensure you connect the right interrupt controller just as it can't ensure you used the right interrupt number and flags or used the right addresses. Well, you could technically, but then at that point we could just generate the dts from the schema.
Rob
Quoted 9 lines · Rob Herring
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
Signed-off-by Rob Herring <[email protected]>--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 -
Quoted 5 lines
.../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)
Signature · 9 lines
Lee Jones [李琼斯] Principal Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Quoted 5 lines · Rob Herring
'interrupt-parent' is never required as it can be in a parent node or a parent node itself can be an interrupt provider. Where exactly it lives is outside the scope of a binding schema.
Signed-off-by Rob Herring <[email protected]>
Quoted 10 lines
--- .../devicetree/bindings/gpio/toshiba,gpio-visconti.yaml | 1 - .../devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 9 --------- Documentation/devicetree/bindings/mfd/cirrus,madera.yaml | 1 - .../devicetree/bindings/net/lantiq,etop-xway.yaml | 1 - .../devicetree/bindings/net/lantiq,xrx200-net.yaml | 1 - .../devicetree/bindings/pci/sifive,fu740-pcie.yaml | 1 - .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 - 7 files changed, 15 deletions(-)
Applied, thanks!