diff options
author | Heiko Stuebner <heiko@sntech.de> | 2013-02-12 18:59:27 +0100 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2013-03-05 12:20:43 +0100 |
commit | 7cefed5e6b4b61b6bed309e9405eda0a00e9b66c (patch) | |
tree | 2325a8c448afc5ea9b5e4581652216bbd9faa9c3 /arch/arm/mach-s3c24xx | |
parent | ARM: S3C24XX: move s3c2440 irqs to common irq code (diff) | |
download | linux-7cefed5e6b4b61b6bed309e9405eda0a00e9b66c.tar.xz linux-7cefed5e6b4b61b6bed309e9405eda0a00e9b66c.zip |
ARM: S3C24XX: integrate s3c2440 irqs into common init
Now all the arch_initcalls for s3c244x irqs are gone.
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-s3c24xx')
-rw-r--r-- | arch/arm/mach-s3c24xx/irq.c | 46 |
1 files changed, 13 insertions, 33 deletions
diff --git a/arch/arm/mach-s3c24xx/irq.c b/arch/arm/mach-s3c24xx/irq.c index 1804e23baad3..025c89897f19 100644 --- a/arch/arm/mach-s3c24xx/irq.c +++ b/arch/arm/mach-s3c24xx/irq.c @@ -838,44 +838,12 @@ static struct irq_chip s3c_irq_wdtac97 = { .irq_ack = s3c_irq_wdtac97_ack, }; -static int s3c2440_irq_add(struct device *dev, struct subsys_interface *sif) +void __init s3c2440_init_irq(void) { unsigned int irqno; printk("S3C2440: IRQ Support\n"); - /* add new chained handler for wdt, ac7 */ - - irq_set_chip_and_handler(IRQ_WDT, &s3c_irq_level_chip, - handle_level_irq); - irq_set_chained_handler(IRQ_WDT, s3c_irq_demux_wdtac97); - - for (irqno = IRQ_S3C2440_WDT; irqno <= IRQ_S3C2440_AC97; irqno++) { - irq_set_chip_and_handler(irqno, &s3c_irq_wdtac97, - handle_level_irq); - set_irq_flags(irqno, IRQF_VALID); - } - - return 0; -} - -static struct subsys_interface s3c2440_irq_interface = { - .name = "s3c2440_irq", - .subsys = &s3c2440_subsys, - .add_dev = s3c2440_irq_add, -}; - -static int s3c2440_irq_init(void) -{ - return subsys_interface_register(&s3c2440_irq_interface); -} - -arch_initcall(s3c2440_irq_init); - -void __init s3c2440_init_irq(void) -{ - unsigned int irqno; - s3c24xx_init_irq(); irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip, @@ -893,6 +861,18 @@ void __init s3c2440_init_irq(void) handle_level_irq); set_irq_flags(irqno, IRQF_VALID); } + + /* add new chained handler for wdt, ac7 */ + + irq_set_chip_and_handler(IRQ_WDT, &s3c_irq_level_chip, + handle_level_irq); + irq_set_chained_handler(IRQ_WDT, s3c_irq_demux_wdtac97); + + for (irqno = IRQ_S3C2440_WDT; irqno <= IRQ_S3C2440_AC97; irqno++) { + irq_set_chip_and_handler(irqno, &s3c_irq_wdtac97, + handle_level_irq); + set_irq_flags(irqno, IRQF_VALID); + } } #endif |