linux/arch/mips/generic
Paul Burton fbdc674ba3 MIPS: SEAD-3: Set interrupt-parent per-device, not at root node
The SEAD-3 board may be configured with or without a MIPS Global
Interrupt Controller (GIC). Because of this we have a device tree with a
default case of a GIC present, and code to fixup the device tree based
upon a configuration register that indicates the presence of the GIC.

In order to keep this DT fixup code simple, the interrupt-parent
property was specified at the root node of the SEAD-3 DT, allowing the
fixup code to simply change this property to the phandle of the CPU
interrupt controller if a GIC is not present & affect all
interrupt-using devices at once. This however causes a problem if we do
have a GIC & the device tree is used as-is, because the interrupt-parent
property of the root node applies to the CPU interrupt controller node.
This causes a cycle when of_irq_init() attempts to probe interrupt
controllers in order and boots fail due to a lack of configured
interrupts, with this message printed on the kernel console:

[    0.000000] OF: of_irq_init: children remain, but no parents

Fix this by removing the interrupt-parent property from the DT root node
& instead setting it for each device which uses interrupts, ensuring
that the CPU interrupt controller node has no interrupt-parent &
allowing of_irq_init() to identify it as the root interrupt controller.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Reported-by: Keng Koh <keng.koh@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/16187/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2017-06-28 12:22:41 +02:00
..
Kconfig MIPS: generic/yamon-dt: Pull YAMON DT shim code out of SEAD-3 board 2017-06-28 12:22:40 +02:00
Makefile MIPS: generic/yamon-dt: Pull YAMON DT shim code out of SEAD-3 board 2017-06-28 12:22:40 +02:00
Platform MIPS: generic: Introduce generic DT-based board support 2016-10-06 18:04:04 +02:00
board-sead3.c MIPS: SEAD-3: Set interrupt-parent per-device, not at root node 2017-06-28 12:22:41 +02:00
init.c MIPS: generic: Abstract FDT fixup application 2017-06-28 12:22:41 +02:00
irq.c MIPS: generic: Introduce generic DT-based board support 2016-10-06 18:04:04 +02:00
kexec.c MIPS: generic/kexec: add support for a DTB passed in a separate buffer 2017-01-03 16:34:46 +01:00
proc.c MIPS: generic: Introduce generic DT-based board support 2016-10-06 18:04:04 +02:00
vmlinux.its.S MIPS: generic: Introduce generic DT-based board support 2016-10-06 18:04:04 +02:00
yamon-dt.c MIPS: generic/yamon-dt: Use serial* rather than uart* aliases 2017-06-28 12:22:41 +02:00