Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: imx7: Correct mask for GIC PPI interrupts

The GIC_CPU_MASK_SIMPLE() macro should take as its argument the actual
number of CPU cores the interrupt controller is wired to.

i.MX7S contains a single Cortex-A7, hence the second interrupt specifier
cell for Private Peripheral Interrupts should use "GIC_CPU_MASK_SIMPLE(1)".

Likewise, i.MX7D contains two Cortex-A7 cores, so it should use
"GIC_CPU_MASK_SIMPLE(2)" instead.

Tested on a imx7s-warp.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>

authored by

Fabio Estevam and committed by
Shawn Guo
d7f3894f 0c29339d

+26 -5
+21
arch/arm/boot/dts/imx7d.dtsi
··· 24 24 }; 25 25 }; 26 26 27 + timer { 28 + compatible = "arm,armv7-timer"; 29 + interrupt-parent = <&intc>; 30 + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>, 31 + <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>, 32 + <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>, 33 + <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>; 34 + }; 35 + 27 36 cpu0_opp_table: opp-table { 28 37 compatible = "operating-points-v2"; 29 38 opp-shared; ··· 80 71 }; 81 72 }; 82 73 }; 74 + }; 75 + 76 + intc: interrupt-controller@31001000 { 77 + compatible = "arm,cortex-a7-gic"; 78 + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>; 79 + #interrupt-cells = <3>; 80 + interrupt-controller; 81 + interrupt-parent = <&intc>; 82 + reg = <0x31001000 0x1000>, 83 + <0x31002000 0x2000>, 84 + <0x31004000 0x2000>, 85 + <0x31006000 0x2000>; 83 86 }; 84 87 }; 85 88 };
+5 -5
arch/arm/boot/dts/imx7s.dtsi
··· 160 160 timer { 161 161 compatible = "arm,armv7-timer"; 162 162 interrupt-parent = <&intc>; 163 - interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 164 - <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 165 - <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 166 - <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 163 + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>, 164 + <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>, 165 + <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>, 166 + <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>; 167 167 }; 168 168 169 169 soc { ··· 305 305 306 306 intc: interrupt-controller@31001000 { 307 307 compatible = "arm,cortex-a7-gic"; 308 - interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 308 + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>; 309 309 #interrupt-cells = <3>; 310 310 interrupt-controller; 311 311 interrupt-parent = <&intc>;