Arm VExpress/Juno motherboard bus clean-ups
Subsystems (3)
Rob Herring
maintainercover Arm VExpress/Juno motherboard bus clean-ups
I noticed we once again have warnings on VExpress/Juno bus nodes as the simple-bus schema now expects child nodes to have a unit-address. Digging into this I noticed the arm,vexpress-juno.yaml schema is out of date and missing some properties (some of which are unused). I found the 'ranges' handling to be odd as well. This series fixes all those issues.
Rob
Rob Herring (5):
dt-bindings: arm,vexpress-juno: Fix 'motherboard' node name
dt-bindings: arm,vexpress-juno: Add missing motherboard properties
arm: dts: vexpress: Drop unused properties from motherboard node
arm: dts: vexpress-v2p-ca9: Fix the SMB unit-address
arm: dts: vexpress: Fix addressing issues with 'motherboard-bus' nodes
.../bindings/arm/arm,vexpress-juno.yaml | 46 +++++++++++-------- arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 17 +++++-- arch/arm/boot/dts/vexpress-v2m.dtsi | 18 ++++++-- arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 11 ----- arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 11 ----- arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 11 ----- arch/arm/boot/dts/vexpress-v2p-ca9.dts | 12 +---- arch/arm64/boot/dts/arm/foundation-v8.dtsi | 1 - arch/arm64/boot/dts/arm/fvp-base-revc.dts | 11 ----- arch/arm64/boot/dts/arm/juno-base.dtsi | 10 ---- arch/arm64/boot/dts/arm/juno-motherboard.dtsi | 17 +++++-- arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts | 11 ----- .../boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi | 2 +- .../boot/dts/arm/rtsm_ve-motherboard.dtsi | 16 +++++-- .../boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts | 11 ----- 15 files changed, 78 insertions(+), 127 deletions(-)
Signature · 1 line
2.30.2
Rob Herring
maintainerPATCH 1/5 dt-bindings: arm, vexpress-juno: Fix 'motherboard' node name
Commit 9d0a36ddcc52 ("arm64: dts: fvp/juno: Fix bus node names") changed 'motherboard' to 'motherboard-bus', but didn't update the schema. In the mean time, the simple-bus schema started requiring child nodes to have a unit-address. Update the schema to address both of these issues.
--- .../devicetree/bindings/arm/arm,vexpress-juno.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml +5 -3
@@ -154,9 +154,9 @@ patternProperties: description: Static Memory Bus (SMB) node, if this exists it describes the connection between the motherboard and any tiles. Sometimes the compatible is placed directly under this node, sometimes it is placed - in a subnode named "motherboard". Sometimes the compatible includes + in a subnode named "motherboard-bus". Sometimes the compatible includes "arm,vexpress,v2?-p1" sometimes (on software models) is is just - "simple-bus". If the compatible is placed in the "motherboard" node, + "simple-bus". If the compatible is placed in the "motherboard-bus" node, it is stricter and always has two compatibles. type: object $ref: '/schemas/simple-bus.yaml'
@@ -170,7 +170,9 @@ patternProperties: - arm,vexpress,v2p-p1 - const: simple-bus - const: simple-bus - motherboard: + + patternProperties: + '^motherboard-bus@': type: object description: The motherboard description provides a single "motherboard" node using 2 address cells corresponding to the Static Memory Bus
Signature · 1 line
2.30.2
Rob Herring
maintainerPATCH 2/5 dt-bindings: arm, vexpress-juno: Add missing motherboard properties
In reply to Rob HerringThe arm,vexpress-juno binding is missing 'ranges', 'arm,vexpress,site', and 'arm,hbi' properties. Add these and and restrict additional properties to be nodes only.
--- .../bindings/arm/arm,vexpress-juno.yaml | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-)
Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml +22 -16
@@ -119,22 +119,6 @@ properties: - const: arm,foundation-aarch64 - const: arm,vexpress - arm,hbi: - $ref: '/schemas/types.yaml#/definitions/uint32' - description: This indicates the ARM HBI (Hardware Board ID), this is - ARM's unique board model ID, visible on the PCB's silkscreen. - - arm,vexpress,site: - description: As Versatile Express can be configured in number of physically - different setups, the device tree should describe platform topology. - For this reason the root node and main motherboard node must define this - property, describing the physical location of the children nodes. - 0 means motherboard site, while 1 and 2 are daughterboard sites, and - 0xf means "sisterboard" which is the site containing the main CPU tile. - $ref: '/schemas/types.yaml#/definitions/uint32' - minimum: 0 - maximum: 15 - arm,vexpress,position: description: When daughterboards are stacked on one site, their position in the stack be be described this attribute.
@@ -185,6 +169,8 @@ patternProperties: const: 2 "#size-cells": const: 1 + ranges: true + compatible: items: - enum:
@@ -198,8 +184,28 @@ patternProperties: - rs1 - rs2 + arm,hbi: + $ref: '/schemas/types.yaml#/definitions/uint32' + description: This indicates the ARM HBI (Hardware Board ID), this is + ARM's unique board model ID, visible on the PCB's silkscreen. + + arm,vexpress,site: + description: As Versatile Express can be configured in number of physically + different setups, the device tree should describe platform topology. + For this reason the root node and main motherboard node must define this + property, describing the physical location of the children nodes. + 0 means motherboard site, while 1 and 2 are daughterboard sites, and + 0xf means "sisterboard" which is the site containing the main CPU tile. + $ref: '/schemas/types.yaml#/definitions/uint32' + minimum: 0 + maximum: 15 + required: - compatible + + additionalProperties: + type: object + required: - compatible
Signature · 1 line
2.30.2
Rob Herring
maintainerPATCH 3/5 arm: dts: vexpress: Drop unused properties from motherboard node
In reply to Rob HerringDrop the '#interrupt-cells' property in the motherboard node which has no effect as the node is neither an interrupt-controller or interrupt-map (that's in the parent node).
Drop 'model' as it is not used by software nor documented.
Drop 'arm,v2m-memory-map' as it is not used by software. The purpose was to describe which memory map, but that's all described by the DT already.
--- arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 3 --- arch/arm/boot/dts/vexpress-v2m.dtsi | 2 -- arch/arm64/boot/dts/arm/foundation-v8.dtsi | 1 - arch/arm64/boot/dts/arm/juno-motherboard.dtsi | 3 --- arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi | 2 -- 5 files changed, 11 deletions(-)
arch/arm/boot/dts/vexpress-v2m-rs1.dtsi +0 -3
@@ -102,14 +102,11 @@ led-8 { bus@8000000 { motherboard-bus { - model = "V2M-P1"; arm,hbi = <0x190>; arm,vexpress,site = <0>; - arm,v2m-memory-map = "rs1"; compatible = "arm,vexpress,v2m-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - #interrupt-cells = <1>; ranges; nor_flash: flash@0 {
arch/arm/boot/dts/vexpress-v2m.dtsi +0 -2
@@ -21,13 +21,11 @@ / { bus@4000000 { motherboard { - model = "V2M-P1"; arm,hbi = <0x190>; arm,vexpress,site = <0>; compatible = "arm,vexpress,v2m-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - #interrupt-cells = <1>; ranges; flash@0,00000000 {
arch/arm64/boot/dts/arm/foundation-v8.dtsi +0 -1
@@ -115,7 +115,6 @@ v2m_refclk32khz: refclk32khz { bus@8000000 { compatible = "arm,vexpress,v2m-p1", "simple-bus"; - arm,v2m-memory-map = "rs1"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>;
arch/arm64/boot/dts/arm/juno-motherboard.dtsi +0 -3
@@ -96,12 +96,9 @@ motherboard-bus { compatible = "arm,vexpress,v2p-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - #interrupt-cells = <1>; ranges; - model = "V2M-Juno"; arm,hbi = <0x252>; arm,vexpress,site = <0>; - arm,v2m-memory-map = "rs1"; flash@0 { /* 2 * 32MiB NOR Flash memory mounted on CS0 */
arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi +0 -2
@@ -78,11 +78,9 @@ dvimode { bus@8000000 { motherboard-bus { - arm,v2m-memory-map = "rs1"; compatible = "arm,vexpress,v2m-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - #interrupt-cells = <1>; ranges; flash@0 {
Signature · 1 line
2.30.2
Rob Herring
maintainerPATCH 4/5 arm: dts: vexpress-v2p-ca9: Fix the SMB unit-address
In reply to Rob HerringBased on 'ranges', the 'bus@4000000' node unit-address is off by 1 '0'.
--- arch/arm/boot/dts/vexpress-v2m.dtsi | 2 +- arch/arm/boot/dts/vexpress-v2p-ca9.dts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/boot/dts/vexpress-v2m.dtsi +1 -1
@@ -19,7 +19,7 @@ */ / { - bus@4000000 { + bus@40000000 { motherboard { arm,hbi = <0x190>; arm,vexpress,site = <0>;
arch/arm/boot/dts/vexpress-v2p-ca9.dts +1 -1
@@ -295,7 +295,7 @@ power-vd10-s3 { }; }; - smb: bus@4000000 { + smb: bus@40000000 { compatible = "simple-bus"; #address-cells = <2>;
Signature · 1 line
2.30.2
Rob Herring
maintainerPATCH 5/5 arm: dts: vexpress: Fix addressing issues with 'motherboard-bus' nodes
In reply to Rob HerringThe 'motherboard-bus' node in Arm Ltd boards fails schema checks as 'simple-bus' child nodes must have a unit-address. The 'ranges' handling is also wrong (or at least strange) as the mapping of SMC chip selects should be in the 'arm,vexpress,v2m-p1' node rather than a generic 'simple-bus' node. Either there's 1 too many levels of 'simple-bus' nodes or 'ranges' should be moved down a level. The latter change is more simple, so let's do that. As the 'ranges' value doesn't vary for a given motherboard instance, we can move 'ranges' into the motherboard dtsi files.
--- arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 14 ++++++++++++-- arch/arm/boot/dts/vexpress-v2m.dtsi | 14 ++++++++++++-- arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 11 ----------- arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 11 ----------- arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 11 ----------- arch/arm/boot/dts/vexpress-v2p-ca9.dts | 10 ---------- arch/arm64/boot/dts/arm/fvp-base-revc.dts | 11 ----------- arch/arm64/boot/dts/arm/juno-base.dtsi | 10 ---------- arch/arm64/boot/dts/arm/juno-motherboard.dtsi | 14 ++++++++++++-- arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts | 11 ----------- .../boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi | 2 +- arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi | 14 ++++++++++++-- .../boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts | 11 ----------- 13 files changed, 49 insertions(+), 95 deletions(-)
arch/arm/boot/dts/vexpress-v2m-rs1.dtsi +12 -2
@@ -101,13 +101,23 @@ led-8 { }; bus@8000000 { - motherboard-bus { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <1>; + ranges = <0 0x8000000 0 0x8000000 0x18000000>; + + motherboard-bus@8000000 { arm,hbi = <0x190>; arm,vexpress,site = <0>; compatible = "arm,vexpress,v2m-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - ranges; + ranges = <0 0 0 0x08000000 0x04000000>, + <1 0 0 0x14000000 0x04000000>, + <2 0 0 0x18000000 0x04000000>, + <3 0 0 0x1c000000 0x04000000>, + <4 0 0 0x0c000000 0x04000000>, + <5 0 0 0x10000000 0x04000000>; nor_flash: flash@0 { compatible = "arm,vexpress-flash", "cfi-flash";
arch/arm/boot/dts/vexpress-v2m.dtsi +12 -2
@@ -20,13 +20,23 @@ / { bus@40000000 { - motherboard { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x40000000 0x40000000 0x10000000>, + <0x10000000 0x10000000 0x00020000>; + + motherboard-bus@40000000 { arm,hbi = <0x190>; arm,vexpress,site = <0>; compatible = "arm,vexpress,v2m-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - ranges; + ranges = <0 0 0x40000000 0x04000000>, + <1 0 0x44000000 0x04000000>, + <2 0 0x48000000 0x04000000>, + <3 0 0x4c000000 0x04000000>, + <7 0 0x10000000 0x00020000>; flash@0,00000000 { compatible = "arm,vexpress-flash", "cfi-flash";
arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts +0 -11
@@ -237,17 +237,6 @@ energy { }; bus@8000000 { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 63>; interrupt-map = <0 0 0 &gic 0 0 4>,
arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts +0 -11
@@ -609,17 +609,6 @@ etm2_out_port: endpoint { }; smb: bus@8000000 { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 63>; interrupt-map = <0 0 0 &gic 0 0 4>,
arch/arm/boot/dts/vexpress-v2p-ca5s.dts +0 -11
@@ -207,17 +207,6 @@ temp-dcc { }; smb: bus@8000000 { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0x08000000 0x04000000>, - <1 0 0x14000000 0x04000000>, - <2 0 0x18000000 0x04000000>, - <3 0 0x1c000000 0x04000000>, - <4 0 0x0c000000 0x04000000>, - <5 0 0x10000000 0x04000000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 63>; interrupt-map = <0 0 0 &gic 0 0 4>,
arch/arm/boot/dts/vexpress-v2p-ca9.dts +0 -10
@@ -296,16 +296,6 @@ power-vd10-s3 { }; smb: bus@40000000 { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0x40000000 0x04000000>, - <1 0 0x44000000 0x04000000>, - <2 0 0x48000000 0x04000000>, - <3 0 0x4c000000 0x04000000>, - <7 0 0x10000000 0x00020000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 63>; interrupt-map = <0 0 0 &gic 0 0 4>,
arch/arm64/boot/dts/arm/fvp-base-revc.dts +0 -11
@@ -207,17 +207,6 @@ panel-timing { }; bus@8000000 { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 63>; interrupt-map = <0 0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
arch/arm64/boot/dts/arm/juno-base.dtsi +0 -10
@@ -804,16 +804,6 @@ memory@80000000 { }; bus@8000000 { - compatible = "simple-bus"; - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 15>; interrupt-map = <0 0 0 &gic 0 GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
arch/arm64/boot/dts/arm/juno-motherboard.dtsi +12 -2
@@ -92,11 +92,21 @@ nmi-button { }; bus@8000000 { - motherboard-bus { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <1>; + ranges = <0 0x8000000 0 0x8000000 0x18000000>; + + motherboard-bus@8000000 { compatible = "arm,vexpress,v2p-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - ranges; + ranges = <0 0 0 0x08000000 0x04000000>, + <1 0 0 0x14000000 0x04000000>, + <2 0 0 0x18000000 0x04000000>, + <3 0 0 0x1c000000 0x04000000>, + <4 0 0 0x0c000000 0x04000000>, + <5 0 0 0x10000000 0x04000000>; arm,hbi = <0x252>; arm,vexpress,site = <0>;
arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts +0 -11
@@ -133,17 +133,6 @@ panel_in: endpoint { }; bus@8000000 { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 63>; interrupt-map = <0 0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi +1 -1
@@ -6,7 +6,7 @@ */ / { bus@8000000 { - motherboard-bus { + motherboard-bus@8000000 { arm,v2m-memory-map = "rs2"; iofpga-bus@300000000 {
arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi +12 -2
@@ -77,11 +77,21 @@ dvimode { }; bus@8000000 { - motherboard-bus { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <1>; + ranges = <0 0x8000000 0 0x8000000 0x18000000>; + + motherboard-bus@8000000 { compatible = "arm,vexpress,v2m-p1", "simple-bus"; #address-cells = <2>; /* SMB chipselect number and offset */ #size-cells = <1>; - ranges; + ranges = <0 0 0 0x08000000 0x04000000>, + <1 0 0 0x14000000 0x04000000>, + <2 0 0 0x18000000 0x04000000>, + <3 0 0 0x1c000000 0x04000000>, + <4 0 0 0x0c000000 0x04000000>, + <5 0 0 0x10000000 0x04000000>; flash@0 { compatible = "arm,vexpress-flash", "cfi-flash";
arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts +0 -11
@@ -145,17 +145,6 @@ temp-fpga { }; smb: bus@8000000 { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - #interrupt-cells = <1>; interrupt-map-mask = <0 0 63>; interrupt-map = <0 0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
Signature · 1 line
2.30.2
Quoted 5 lines · Rob Herring
I noticed we once again have warnings on VExpress/Juno bus nodes as the simple-bus schema now expects child nodes to have a unit-address. Digging into this I noticed the arm,vexpress-juno.yaml schema is out of date and missing some properties (some of which are unused). I found the 'ranges' handling to be odd as well. This series fixes all those issues.
The series looks good to me. Thanks for fixing this up!
Yours,
Linus Walleij
Quoted 6 lines · Rob Herring
I noticed we once again have warnings on VExpress/Juno bus nodes as the simple-bus schema now expects child nodes to have a unit-address. Digging into this I noticed the arm,vexpress-juno.yaml schema is out of date and missing some properties (some of which are unused). I found the 'ranges' handling to be odd as well. This series fixes all those issues.
Sorry for the late response. I assume you can apply the dt-bindings fixes in your tree, and I can send the dts changes via Arm SoC tree. Let me know if you have any other plans for this.
For the bindings,
Signature · 2 lines
Regards, Sudeep
Quoted 9 lines · Rob Herring
I noticed we once again have warnings on VExpress/Juno bus nodes as the simple-bus schema now expects child nodes to have a unit-address. Digging into this I noticed the arm,vexpress-juno.yaml schema is out of date and missing some properties (some of which are unused). I found the 'ranges' handling to be odd as well. This series fixes all those issues.
Rob
[...]
Applied 3-5/5 to sudeep.holla/linux (for-next/juno), thanks! Please take 1-2/5 via your DT tree. I plan to send these as fixes for v5.15 soon.
[3/5] arm: dts: vexpress: Drop unused properties from motherboard node
https://git.kernel.org/sudeep.holla/c/55c71dc69e [4/5] arm: dts: vexpress-v2p-ca9: Fix the SMB unit-address https://git.kernel.org/sudeep.holla/c/2e9edc07df
[5/5] arm: dts: vexpress: Fix addressing issues with 'motherboard-bus' nodes
https://git.kernel.org/sudeep.holla/c/bb3adfb3bd
--
Regards,
Sudeep