• Vladimir Zapolskiy's avatar
    irqchip: Add LPC32xx interrupt controller driver · 8cb17b5e
    Vladimir Zapolskiy authored
    The change adds improved support of NXP LPC32xx MIC, SIC1 and SIC2
    interrupt controllers.
    
    This is a list of new features in comparison to the legacy driver:
    * irq types are taken from device tree settings, no more need to
      hardcode them,
    * old driver is based on irq_domain_add_legacy, which causes problems
      with handling MIC hardware interrupt 0 produced by SIC1,
    * there is one driver for MIC, SIC1 and SIC2, no more need to handle
      them separately, e.g. have two separate handlers for SIC1 and SIC2,
    * the driver does not have any dependencies on hardcoded register
      offsets,
    * the driver is much simpler for maintenance,
    * SPARSE_IRQS option is supported.
    
    Legacy LPC32xx interrupt controller driver was broken since commit
    76ba59f8 ("genirq: Add irq_domain-aware core IRQ handler"), which
    requires a private interrupt handler, otherwise any SIC1 generated
    interrupt (mapped to MIC hwirq 0) breaks the kernel with the message
    "unexpected IRQ trap at vector ...
    8cb17b5e
irq-lpc32xx.c 5.85 KB