aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s3c24xx
diff options
context:
space:
mode:
authorHeiko Stuebner <heiko@sntech.de>2013-02-12 12:59:27 -0500
committerKukjin Kim <kgene.kim@samsung.com>2013-03-05 06:20:43 -0500
commit7cefed5e6b4b61b6bed309e9405eda0a00e9b66c (patch)
tree2325a8c448afc5ea9b5e4581652216bbd9faa9c3 /arch/arm/mach-s3c24xx
parent2286cf467e460eabfd0a188c5c5fb46955dcf024 (diff)
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.c46
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 = {
838 .irq_ack = s3c_irq_wdtac97_ack, 838 .irq_ack = s3c_irq_wdtac97_ack,
839}; 839};
840 840
841static int s3c2440_irq_add(struct device *dev, struct subsys_interface *sif) 841void __init s3c2440_init_irq(void)
842{ 842{
843 unsigned int irqno; 843 unsigned int irqno;
844 844
845 printk("S3C2440: IRQ Support\n"); 845 printk("S3C2440: IRQ Support\n");
846 846
847 /* add new chained handler for wdt, ac7 */
848
849 irq_set_chip_and_handler(IRQ_WDT, &s3c_irq_level_chip,
850 handle_level_irq);
851 irq_set_chained_handler(IRQ_WDT, s3c_irq_demux_wdtac97);
852
853 for (irqno = IRQ_S3C2440_WDT; irqno <= IRQ_S3C2440_AC97; irqno++) {
854 irq_set_chip_and_handler(irqno, &s3c_irq_wdtac97,
855 handle_level_irq);
856 set_irq_flags(irqno, IRQF_VALID);
857 }
858
859 return 0;
860}
861
862static struct subsys_interface s3c2440_irq_interface = {
863 .name = "s3c2440_irq",
864 .subsys = &s3c2440_subsys,
865 .add_dev = s3c2440_irq_add,
866};
867
868static int s3c2440_irq_init(void)
869{
870 return subsys_interface_register(&s3c2440_irq_interface);
871}
872
873arch_initcall(s3c2440_irq_init);
874
875void __init s3c2440_init_irq(void)
876{
877 unsigned int irqno;
878
879 s3c24xx_init_irq(); 847 s3c24xx_init_irq();
880 848
881 irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip, 849 irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
@@ -893,6 +861,18 @@ void __init s3c2440_init_irq(void)
893 handle_level_irq); 861 handle_level_irq);
894 set_irq_flags(irqno, IRQF_VALID); 862 set_irq_flags(irqno, IRQF_VALID);
895 } 863 }
864
865 /* add new chained handler for wdt, ac7 */
866
867 irq_set_chip_and_handler(IRQ_WDT, &s3c_irq_level_chip,
868 handle_level_irq);
869 irq_set_chained_handler(IRQ_WDT, s3c_irq_demux_wdtac97);
870
871 for (irqno = IRQ_S3C2440_WDT; irqno <= IRQ_S3C2440_AC97; irqno++) {
872 irq_set_chip_and_handler(irqno, &s3c_irq_wdtac97,
873 handle_level_irq);
874 set_irq_flags(irqno, IRQF_VALID);
875 }
896} 876}
897#endif 877#endif
898 878