This patch-set provides unified Atmel AIC (Advanced Interrupt Controller)
driver. Currently, there are two AIC drivers, AIC and AIC5.
Each driver consists of chip specific part (irq-atmel-aic.o or
irq-atmel-aic5.o) and shared code (irq-atmel-aic-common.o).
But consolidated AIC driver is just one file driver which supports both
IRQ chip systems.

How to handle two IRQ chips in one driver
-----------------------------------------
  Structure aic_reg_offset is used for device configuration.
  AIC5 IRQ chip uses SSR (Source Select Register) to select IRQ number.
  On the other hand, AIC IRQ chip has simple register access.
  To support both IRQ chips, aic_is_ssr_used() helper is used.

Patches
-------
  1 ~  5: fix IRQ priority issue, clean up RTC/RTT fixup code and etc.
  6 ~ 19: create unified IRQ chip operation with aic_reg_offset data.

Target boards
-------------
  Tested with two boards.
  * Arietta G25 (SoC: AT91SAM9G25)
  * Xplained board (SoC: SAMA5D3)

Number of driver files
----------------------
  AIC:              3 (irq-atmel-aic.c, irq-atmel-aic-common.c and h)
  AIC5:             3 (irq-atmel-aic5.c, irq-atmel-aic-common.c and h)
  Consolidated AIC: 1 (irq-aic.c)

Code size
---------
  AIC (irq-atmel-aic.o and irq-atmel-aic-common.o)
    text           data     bss     dec     hex filename
    5137            196       4    5337    14d9 drivers/irqchip/built-in.o

  AIC5 (irq-atmel-aic5.o and irq-atmel-aic-common.o)
    text           data     bss     dec     hex filename
    5548            196       4    5748    1674 drivers/irqchip/built-in.o

  Consolidated AIC (irq-aic.o)
    text           data     bss     dec     hex filename
    4841            196       8    5045    13b5 drivers/irqchip/built-in.o

Lines of code
-------------
  AIC:              597
  AIC5:             688
  Consolidated AIC: 609

Milo Kim (19):
  irqchip: atmel-aic: fix wrong bit operation for IRQ priority
  irqchip: atmel-aic: clean up RTC interrupt code
  irqchip: atmel-aic: clean up RTT interrupt code
  irqchip: atmel-aic: replace magic numbers with named constant
  irqchip: atmel-aic: use simple constant to get number of interrupts
    per chip
  irqchip: atmel-aic: introduce register data structure
  irqchip: atmel-aic: make common IRQ domain translate function
  irqchip: atmel-aic: add common mask and unmask functions
  irqchip: atmel-aic: add common retrigger function
  irqchip: atmel-aic: add common set_type function
  irqchip: atmel-aic: add common PM IRQ chip operation
  irqchip: atmel-aic: use EOI register data in aic_reg_data
  irqchip: atmel-aic: clean up irq_chip_generic
  irqchip: atmel-aic: add common HW init function
  irqchip: atmel-aic: add common interrupt handler
  irqchip: atmel-aic: get total number of IRQs from device node
  irqchip: atmel-aic: use unified IRQ chip initialization function
  irqchip: atmel-aic: use unified AIC driver
  irqchip: atmel-aic: rename AIC driver and fix Kconfig

 arch/arm/mach-at91/Kconfig             |   2 +-
 drivers/irqchip/Kconfig                |   7 -
 drivers/irqchip/Makefile               |   3 +-
 drivers/irqchip/irq-aic.c              | 609 +++++++++++++++++++++++++++++++++
 drivers/irqchip/irq-atmel-aic-common.c | 280 ---------------
 drivers/irqchip/irq-atmel-aic-common.h |  41 ---
 drivers/irqchip/irq-atmel-aic.c        | 276 ---------------
 drivers/irqchip/irq-atmel-aic5.c       | 367 --------------------
 8 files changed, 611 insertions(+), 974 deletions(-)
 create mode 100644 drivers/irqchip/irq-aic.c
 delete mode 100644 drivers/irqchip/irq-atmel-aic-common.c
 delete mode 100644 drivers/irqchip/irq-atmel-aic-common.h
 delete mode 100644 drivers/irqchip/irq-atmel-aic.c
 delete mode 100644 drivers/irqchip/irq-atmel-aic5.c

-- 
2.6.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to