Hi Thomas, On mer., juin 21 2017, Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxxxxxxxxx> wrote: > This commit modifies the Marvell EBU Armada 7K and 8K Device Tree files > to describe the ICU and GICP units, and use ICU interrupts for all > devices in the CP110 blocks. > > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxxxxxxxxx> Applied on mvebu/dt64 Thanks, Gregory > --- > arch/arm64/boot/dts/marvell/armada-ap806.dtsi | 7 +++ > .../boot/dts/marvell/armada-cp110-master.dtsi | 59 +++++++++++++--------- > .../arm64/boot/dts/marvell/armada-cp110-slave.dtsi | 55 +++++++++++--------- > 3 files changed, 73 insertions(+), 48 deletions(-) > > diff --git a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi > index fe41bf9..e0a9198 100644 > --- a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi > +++ b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi > @@ -146,6 +146,13 @@ > marvell,spi-base = <128>, <136>, <144>, <152>; > }; > > + gicp: gicp@3f0040 { > + compatible = "marvell,ap806-gicp"; > + reg = <0x3f0040 0x10>; > + marvell,spi-ranges = <64 64>, <288 64>; > + msi-controller; > + }; > + > pic: interrupt-controller@3f0100 { > compatible = "marvell,armada-8k-pic"; > reg = <0x3f0100 0x10>; > diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi > index ac8df52..cd33129 100644 > --- a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi > +++ b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi > @@ -44,19 +44,20 @@ > * Device Tree file for Marvell Armada CP110 Master. > */ > > +#define ICU_GRP_NSR 0x0 > + > / { > cp110-master { > #address-cells = <2>; > #size-cells = <2>; > compatible = "simple-bus"; > - interrupt-parent = <&gic>; > + interrupt-parent = <&cpm_icu>; > ranges; > > config-space@f2000000 { > #address-cells = <1>; > #size-cells = <1>; > compatible = "simple-bus"; > - interrupt-parent = <&gic>; > ranges = <0x0 0x0 0xf2000000 0x2000000>; > > cpm_ethernet: ethernet@0 { > @@ -68,21 +69,21 @@ > dma-coherent; > > cpm_eth0: eth0 { > - interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>; > port-id = <0>; > gop-port-id = <0>; > status = "disabled"; > }; > > cpm_eth1: eth1 { > - interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>; > port-id = <1>; > gop-port-id = <2>; > status = "disabled"; > }; > > cpm_eth2: eth2 { > - interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>; > port-id = <2>; > gop-port-id = <3>; > status = "disabled"; > @@ -96,6 +97,14 @@ > reg = <0x12a200 0x10>; > }; > > + cpm_icu: interrupt-controller@1e0000 { > + compatible = "marvell,cp110-icu"; > + reg = <0x1e0000 0x10>; > + #interrupt-cells = <3>; > + interrupt-controller; > + msi-parent = <&gicp>; > + }; > + > cpm_syscon0: system-controller@440000 { > compatible = "marvell,cp110-system-controller0", > "syscon"; > @@ -120,14 +129,14 @@ > compatible = "marvell,armada-8k-rtc"; > reg = <0x284000 0x20>, <0x284080 0x24>; > reg-names = "rtc", "rtc-soc"; > - interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 77 IRQ_TYPE_LEVEL_HIGH>; > }; > > cpm_sata0: sata@540000 { > compatible = "marvell,armada-8k-ahci", > "generic-ahci"; > reg = <0x540000 0x30000>; > - interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 107 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cpm_syscon0 1 15>; > status = "disabled"; > }; > @@ -137,7 +146,7 @@ > "generic-xhci"; > reg = <0x500000 0x4000>; > dma-coherent; > - interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cpm_syscon0 1 22>; > status = "disabled"; > }; > @@ -147,7 +156,7 @@ > "generic-xhci"; > reg = <0x510000 0x4000>; > dma-coherent; > - interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 105 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cpm_syscon0 1 23>; > status = "disabled"; > }; > @@ -195,7 +204,7 @@ > reg = <0x701000 0x20>; > #address-cells = <1>; > #size-cells = <0>; > - interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 120 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cpm_syscon0 1 21>; > status = "disabled"; > }; > @@ -205,7 +214,7 @@ > reg = <0x701100 0x20>; > #address-cells = <1>; > #size-cells = <0>; > - interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 121 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cpm_syscon0 1 21>; > status = "disabled"; > }; > @@ -213,7 +222,7 @@ > cpm_trng: trng@760000 { > compatible = "marvell,armada-8k-rng", "inside-secure,safexcel-eip76"; > reg = <0x760000 0x7d>; > - interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 95 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cpm_syscon0 1 25>; > status = "okay"; > }; > @@ -221,7 +230,7 @@ > cpm_sdhci0: sdhci@780000 { > compatible = "marvell,armada-cp110-sdhci"; > reg = <0x780000 0x300>; > - interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 27 IRQ_TYPE_LEVEL_HIGH>; > clock-names = "core"; > clocks = <&cpm_syscon0 1 4>; > dma-coherent; > @@ -231,13 +240,13 @@ > cpm_crypto: crypto@800000 { > compatible = "inside-secure,safexcel-eip197"; > reg = <0x800000 0x200000>; > - interrupts = <GIC_SPI 34 (IRQ_TYPE_EDGE_RISING > + interrupts = <ICU_GRP_NSR 87 (IRQ_TYPE_EDGE_RISING > | IRQ_TYPE_LEVEL_HIGH)>, > - <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>; > + <ICU_GRP_NSR 88 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 89 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 90 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 91 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 92 IRQ_TYPE_LEVEL_HIGH>; > interrupt-names = "mem", "ring0", "ring1", > "ring2", "ring3", "eip"; > clocks = <&cpm_syscon0 1 26>; > @@ -264,8 +273,8 @@ > /* non-prefetchable memory */ > 0x82000000 0 0xf6000000 0 0xf6000000 0 0xf00000>; > interrupt-map-mask = <0 0 0 0>; > - interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; > - interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-map = <0 0 0 0 &cpm_icu 0 ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>; > num-lanes = <1>; > clocks = <&cpm_syscon0 1 13>; > status = "disabled"; > @@ -290,8 +299,8 @@ > /* non-prefetchable memory */ > 0x82000000 0 0xf7000000 0 0xf7000000 0 0xf00000>; > interrupt-map-mask = <0 0 0 0>; > - interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; > - interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-map = <0 0 0 0 &cpm_icu 0 ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>; > > num-lanes = <1>; > clocks = <&cpm_syscon0 1 11>; > @@ -317,8 +326,8 @@ > /* non-prefetchable memory */ > 0x82000000 0 0xf8000000 0 0xf8000000 0 0xf00000>; > interrupt-map-mask = <0 0 0 0>; > - interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; > - interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-map = <0 0 0 0 &cpm_icu 0 ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>; > > num-lanes = <1>; > clocks = <&cpm_syscon0 1 12>; > diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi > index 7740a75..75a677b 100644 > --- a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi > +++ b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi > @@ -44,19 +44,20 @@ > * Device Tree file for Marvell Armada CP110 Slave. > */ > > +#define ICU_GRP_NSR 0x0 > + > / { > cp110-slave { > #address-cells = <2>; > #size-cells = <2>; > compatible = "simple-bus"; > - interrupt-parent = <&gic>; > + interrupt-parent = <&cps_icu>; > ranges; > > config-space@f4000000 { > #address-cells = <1>; > #size-cells = <1>; > compatible = "simple-bus"; > - interrupt-parent = <&gic>; > ranges = <0x0 0x0 0xf4000000 0x2000000>; > > cps_rtc: rtc@284000 { > @@ -75,21 +76,21 @@ > dma-coherent; > > cps_eth0: eth0 { > - interrupts = <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>; > port-id = <0>; > gop-port-id = <0>; > status = "disabled"; > }; > > cps_eth1: eth1 { > - interrupts = <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>; > port-id = <1>; > gop-port-id = <2>; > status = "disabled"; > }; > > cps_eth2: eth2 { > - interrupts = <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>; > port-id = <2>; > gop-port-id = <3>; > status = "disabled"; > @@ -103,6 +104,14 @@ > reg = <0x12a200 0x10>; > }; > > + cps_icu: interrupt-controller@1e0000 { > + compatible = "marvell,cp110-icu"; > + reg = <0x1e0000 0x10>; > + #interrupt-cells = <3>; > + interrupt-controller; > + msi-parent = <&gicp>; > + }; > + > cps_syscon0: system-controller@440000 { > compatible = "marvell,cp110-system-controller0", > "syscon"; > @@ -127,7 +136,7 @@ > compatible = "marvell,armada-8k-ahci", > "generic-ahci"; > reg = <0x540000 0x30000>; > - interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 107 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cps_syscon0 1 15>; > status = "disabled"; > }; > @@ -137,7 +146,7 @@ > "generic-xhci"; > reg = <0x500000 0x4000>; > dma-coherent; > - interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cps_syscon0 1 22>; > status = "disabled"; > }; > @@ -147,7 +156,7 @@ > "generic-xhci"; > reg = <0x510000 0x4000>; > dma-coherent; > - interrupts = <GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 105 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cps_syscon0 1 23>; > status = "disabled"; > }; > @@ -195,7 +204,7 @@ > reg = <0x701000 0x20>; > #address-cells = <1>; > #size-cells = <0>; > - interrupts = <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 120 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cps_syscon0 1 21>; > status = "disabled"; > }; > @@ -205,7 +214,7 @@ > reg = <0x701100 0x20>; > #address-cells = <1>; > #size-cells = <0>; > - interrupts = <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 121 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cps_syscon0 1 21>; > status = "disabled"; > }; > @@ -213,7 +222,7 @@ > cps_trng: trng@760000 { > compatible = "marvell,armada-8k-rng", "inside-secure,safexcel-eip76"; > reg = <0x760000 0x7d>; > - interrupts = <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 95 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cps_syscon0 1 25>; > status = "okay"; > }; > @@ -221,13 +230,13 @@ > cps_crypto: crypto@800000 { > compatible = "inside-secure,safexcel-eip197"; > reg = <0x800000 0x200000>; > - interrupts = <GIC_SPI 34 (IRQ_TYPE_EDGE_RISING > + interrupts = <ICU_GRP_NSR 87 (IRQ_TYPE_EDGE_RISING > | IRQ_TYPE_LEVEL_HIGH)>, > - <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>, > - <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>; > + <ICU_GRP_NSR 88 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 89 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 90 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 91 IRQ_TYPE_LEVEL_HIGH>, > + <ICU_GRP_NSR 92 IRQ_TYPE_LEVEL_HIGH>; > interrupt-names = "mem", "ring0", "ring1", > "ring2", "ring3", "eip"; > clocks = <&cps_syscon0 1 26>; > @@ -254,8 +263,8 @@ > /* non-prefetchable memory */ > 0x82000000 0 0xfa000000 0 0xfa000000 0 0xf00000>; > interrupt-map-mask = <0 0 0 0>; > - interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>; > - interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-map = <0 0 0 0 &cps_icu 0 ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>; > num-lanes = <1>; > clocks = <&cps_syscon0 1 13>; > status = "disabled"; > @@ -280,8 +289,8 @@ > /* non-prefetchable memory */ > 0x82000000 0 0xfb000000 0 0xfb000000 0 0xf00000>; > interrupt-map-mask = <0 0 0 0>; > - interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>; > - interrupts = <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-map = <0 0 0 0 &cps_icu 0 ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>; > > num-lanes = <1>; > clocks = <&cps_syscon0 1 11>; > @@ -307,8 +316,8 @@ > /* non-prefetchable memory */ > 0x82000000 0 0xfc000000 0 0xfc000000 0 0xf00000>; > interrupt-map-mask = <0 0 0 0>; > - interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>; > - interrupts = <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-map = <0 0 0 0 &cps_icu 0 ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>; > + interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>; > > num-lanes = <1>; > clocks = <&cps_syscon0 1 12>; > -- > 2.9.4 > -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html