• Linus Walleij's avatar
    irqchip: Add driver for IXP4xx · 5b978c10
    Linus Walleij authored
    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: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    5b978c10
Kconfig 8.45 KB