irqchip: Add driver for IXP4xx
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 25 Jan 2019 15:41:25 +0000 (16:41 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 19 Apr 2019 18:37:50 +0000 (20:37 +0200)
commit5b978c10665973d8ee7050b03ef6e97013066b03
tree3130726f21c3cc3d7f1fdf6cbcecd1be9bc15b23
parentdc8ef8cd3a05632bf15ce8714d6b84ece2836fe9
irqchip: Add driver for IXP4xx

The IXP4xx (arch/arm/mach-ixp4xx) is an old Intel XScale
platform that has very wide deployment and use.

As part of modernizing the platform, we need to implement a
proper irqchip in the irqchip subsystem.

The IXP4xx irqchip is tightly jotted together with the GPIO
controller, and whereas in the past we would deal with this
complex logic by adding necessarily different code, we can
nowadays modernize it using a hierarchical irqchip.

The actual IXP4 irqchip is a simple active low level IRQ
controller, whereas the GPIO functionality resides in a
different memory area and adds edge trigger support for
the interrupts.

The interrupts from GPIO lines 0..12 are 1:1 mapped to
a fixed set of hardware IRQs on this IRQchip, so we
expect the child GPIO interrupt controller to go in and
allocate descriptors for these interrupts.

For the other interrupts, as we do not yet have DT
support for this platform, we create a linear irqdomain
and then go in and allocate the IRQs that the legacy
boards use. This code will be removed on the DT probe
path when we add DT support to the platform.

We add some translation code for supporting DT
translations for the fwnodes, but we leave most of that
for later.

Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
MAINTAINERS
drivers/irqchip/Kconfig
drivers/irqchip/Makefile
drivers/irqchip/irq-ixp4xx.c [new file with mode: 0644]
include/linux/irqchip/irq-ixp4xx.h [new file with mode: 0644]