aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Stuebner <heiko@sntech.de>2013-02-12 12:59:20 -0500
committerKukjin Kim <kgene.kim@samsung.com>2013-03-05 06:20:33 -0500
commitce6c164bf0ea44fad7969e1f1027d4f6cfb30360 (patch)
tree62536cd73c1e9efeb93110fc077f8ae5575172c3
parent6f8d7ea275eb2a27fd62211e93921a82f367f939 (diff)
ARM: S3C24XX: create dedicated irq init functions for s3c2440 and s3c2442
s3c2440 and s3c2442 need separate init functions, as the s3c2440 contains even more differing irqs that will be moved in the following patch. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
-rw-r--r--arch/arm/mach-s3c24xx/common.h2
-rw-r--r--arch/arm/mach-s3c24xx/irq.c45
-rw-r--r--arch/arm/mach-s3c24xx/mach-anubis.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-at2440evb.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-gta02.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-mini2440.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-nexcoder.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-osiris.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-rx1950.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-rx3715.c7
-rw-r--r--arch/arm/mach-s3c24xx/mach-smdk2440.c2
11 files changed, 34 insertions, 36 deletions
diff --git a/arch/arm/mach-s3c24xx/common.h b/arch/arm/mach-s3c24xx/common.h
index 8a2b4137ddb6..362a8cd32eb0 100644
--- a/arch/arm/mach-s3c24xx/common.h
+++ b/arch/arm/mach-s3c24xx/common.h
@@ -73,6 +73,7 @@ extern void s3c244x_restart(char mode, const char *cmd);
73#ifdef CONFIG_CPU_S3C2440 73#ifdef CONFIG_CPU_S3C2440
74extern int s3c2440_init(void); 74extern int s3c2440_init(void);
75extern void s3c2440_map_io(void); 75extern void s3c2440_map_io(void);
76extern void s3c2440_init_irq(void);
76#else 77#else
77#define s3c2440_init NULL 78#define s3c2440_init NULL
78#define s3c2440_map_io NULL 79#define s3c2440_map_io NULL
@@ -81,6 +82,7 @@ extern void s3c2440_map_io(void);
81#ifdef CONFIG_CPU_S3C2442 82#ifdef CONFIG_CPU_S3C2442
82extern int s3c2442_init(void); 83extern int s3c2442_init(void);
83extern void s3c2442_map_io(void); 84extern void s3c2442_map_io(void);
85extern void s3c2442_init_irq(void);
84#else 86#else
85#define s3c2442_init NULL 87#define s3c2442_init NULL
86#define s3c2442_map_io NULL 88#define s3c2442_map_io NULL
diff --git a/arch/arm/mach-s3c24xx/irq.c b/arch/arm/mach-s3c24xx/irq.c
index 1fea3ddd123d..2c59b2d99a81 100644
--- a/arch/arm/mach-s3c24xx/irq.c
+++ b/arch/arm/mach-s3c24xx/irq.c
@@ -783,10 +783,13 @@ static struct irq_chip s3c_irq_cam = {
783 .irq_ack = s3c_irq_cam_ack, 783 .irq_ack = s3c_irq_cam_ack,
784}; 784};
785 785
786static int s3c244x_irq_add(struct device *dev, struct subsys_interface *sif) 786#ifdef CONFIG_CPU_S3C2440
787void __init s3c2440_init_irq(void)
787{ 788{
788 unsigned int irqno; 789 unsigned int irqno;
789 790
791 s3c24xx_init_irq();
792
790 irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip, 793 irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
791 handle_level_irq); 794 handle_level_irq);
792 set_irq_flags(IRQ_NFCON, IRQF_VALID); 795 set_irq_flags(IRQ_NFCON, IRQF_VALID);
@@ -802,36 +805,34 @@ static int s3c244x_irq_add(struct device *dev, struct subsys_interface *sif)
802 handle_level_irq); 805 handle_level_irq);
803 set_irq_flags(irqno, IRQF_VALID); 806 set_irq_flags(irqno, IRQF_VALID);
804 } 807 }
805
806 return 0;
807} 808}
809#endif
808 810
809static struct subsys_interface s3c2440_irq_interface = { 811#ifdef CONFIG_CPU_S3C2442
810 .name = "s3c2440_irq", 812void __init s3c2442_init_irq(void)
811 .subsys = &s3c2440_subsys,
812 .add_dev = s3c244x_irq_add,
813};
814
815static int s3c2440_irq_init(void)
816{ 813{
817 return subsys_interface_register(&s3c2440_irq_interface); 814 unsigned int irqno;
818}
819 815
820arch_initcall(s3c2440_irq_init); 816 s3c24xx_init_irq();
821 817
822static struct subsys_interface s3c2442_irq_interface = { 818 irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
823 .name = "s3c2442_irq", 819 handle_level_irq);
824 .subsys = &s3c2442_subsys, 820 set_irq_flags(IRQ_NFCON, IRQF_VALID);
825 .add_dev = s3c244x_irq_add,
826};
827 821
822 /* add chained handler for camera */
828 823
829static int s3c2442_irq_init(void) 824 irq_set_chip_and_handler(IRQ_CAM, &s3c_irq_level_chip,
830{ 825 handle_level_irq);
831 return subsys_interface_register(&s3c2442_irq_interface); 826 irq_set_chained_handler(IRQ_CAM, s3c_irq_demux_cam);
827
828 for (irqno = IRQ_S3C2440_CAM_C; irqno <= IRQ_S3C2440_CAM_P; irqno++) {
829 irq_set_chip_and_handler(irqno, &s3c_irq_cam,
830 handle_level_irq);
831 set_irq_flags(irqno, IRQF_VALID);
832 }
832} 833}
834#endif
833 835
834arch_initcall(s3c2442_irq_init);
835#endif 836#endif
836 837
837#ifdef CONFIG_CPU_S3C2443 838#ifdef CONFIG_CPU_S3C2443
diff --git a/arch/arm/mach-s3c24xx/mach-anubis.c b/arch/arm/mach-s3c24xx/mach-anubis.c
index 24f1a04ccc88..c1fb6c37867f 100644
--- a/arch/arm/mach-s3c24xx/mach-anubis.c
+++ b/arch/arm/mach-s3c24xx/mach-anubis.c
@@ -445,7 +445,7 @@ MACHINE_START(ANUBIS, "Simtec-Anubis")
445 .atag_offset = 0x100, 445 .atag_offset = 0x100,
446 .map_io = anubis_map_io, 446 .map_io = anubis_map_io,
447 .init_machine = anubis_init, 447 .init_machine = anubis_init,
448 .init_irq = s3c24xx_init_irq, 448 .init_irq = s3c2440_init_irq,
449 .init_time = samsung_timer_init, 449 .init_time = samsung_timer_init,
450 .restart = s3c244x_restart, 450 .restart = s3c244x_restart,
451MACHINE_END 451MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-at2440evb.c b/arch/arm/mach-s3c24xx/mach-at2440evb.c
index 2bf6c8c24317..6dfeeb7ef469 100644
--- a/arch/arm/mach-s3c24xx/mach-at2440evb.c
+++ b/arch/arm/mach-s3c24xx/mach-at2440evb.c
@@ -211,7 +211,7 @@ MACHINE_START(AT2440EVB, "AT2440EVB")
211 .atag_offset = 0x100, 211 .atag_offset = 0x100,
212 .map_io = at2440evb_map_io, 212 .map_io = at2440evb_map_io,
213 .init_machine = at2440evb_init, 213 .init_machine = at2440evb_init,
214 .init_irq = s3c24xx_init_irq, 214 .init_irq = s3c2440_init_irq,
215 .init_time = samsung_timer_init, 215 .init_time = samsung_timer_init,
216 .restart = s3c244x_restart, 216 .restart = s3c244x_restart,
217MACHINE_END 217MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index 84a750d46d4b..13d8d073675a 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -589,7 +589,7 @@ MACHINE_START(NEO1973_GTA02, "GTA02")
589 /* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */ 589 /* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */
590 .atag_offset = 0x100, 590 .atag_offset = 0x100,
591 .map_io = gta02_map_io, 591 .map_io = gta02_map_io,
592 .init_irq = s3c24xx_init_irq, 592 .init_irq = s3c2442_init_irq,
593 .init_machine = gta02_machine_init, 593 .init_machine = gta02_machine_init,
594 .init_time = samsung_timer_init, 594 .init_time = samsung_timer_init,
595 .restart = s3c244x_restart, 595 .restart = s3c244x_restart,
diff --git a/arch/arm/mach-s3c24xx/mach-mini2440.c b/arch/arm/mach-s3c24xx/mach-mini2440.c
index 29f106cb370e..a83db46320bc 100644
--- a/arch/arm/mach-s3c24xx/mach-mini2440.c
+++ b/arch/arm/mach-s3c24xx/mach-mini2440.c
@@ -688,7 +688,7 @@ MACHINE_START(MINI2440, "MINI2440")
688 .atag_offset = 0x100, 688 .atag_offset = 0x100,
689 .map_io = mini2440_map_io, 689 .map_io = mini2440_map_io,
690 .init_machine = mini2440_init, 690 .init_machine = mini2440_init,
691 .init_irq = s3c24xx_init_irq, 691 .init_irq = s3c2440_init_irq,
692 .init_time = samsung_timer_init, 692 .init_time = samsung_timer_init,
693 .restart = s3c244x_restart, 693 .restart = s3c244x_restart,
694MACHINE_END 694MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-nexcoder.c b/arch/arm/mach-s3c24xx/mach-nexcoder.c
index 5c826d10a66d..01f4354206f9 100644
--- a/arch/arm/mach-s3c24xx/mach-nexcoder.c
+++ b/arch/arm/mach-s3c24xx/mach-nexcoder.c
@@ -152,7 +152,7 @@ MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440")
152 .atag_offset = 0x100, 152 .atag_offset = 0x100,
153 .map_io = nexcoder_map_io, 153 .map_io = nexcoder_map_io,
154 .init_machine = nexcoder_init, 154 .init_machine = nexcoder_init,
155 .init_irq = s3c24xx_init_irq, 155 .init_irq = s3c2440_init_irq,
156 .init_time = samsung_timer_init, 156 .init_time = samsung_timer_init,
157 .restart = s3c244x_restart, 157 .restart = s3c244x_restart,
158MACHINE_END 158MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-osiris.c b/arch/arm/mach-s3c24xx/mach-osiris.c
index 4c90ffda4e11..58d6fbe5bf1f 100644
--- a/arch/arm/mach-s3c24xx/mach-osiris.c
+++ b/arch/arm/mach-s3c24xx/mach-osiris.c
@@ -426,7 +426,7 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")
426 /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ 426 /* Maintainer: Ben Dooks <ben@simtec.co.uk> */
427 .atag_offset = 0x100, 427 .atag_offset = 0x100,
428 .map_io = osiris_map_io, 428 .map_io = osiris_map_io,
429 .init_irq = s3c24xx_init_irq, 429 .init_irq = s3c2440_init_irq,
430 .init_machine = osiris_init, 430 .init_machine = osiris_init,
431 .init_time = samsung_timer_init, 431 .init_time = samsung_timer_init,
432 .restart = s3c244x_restart, 432 .restart = s3c244x_restart,
diff --git a/arch/arm/mach-s3c24xx/mach-rx1950.c b/arch/arm/mach-s3c24xx/mach-rx1950.c
index 799af43b4e6a..e4d67a33ebee 100644
--- a/arch/arm/mach-s3c24xx/mach-rx1950.c
+++ b/arch/arm/mach-s3c24xx/mach-rx1950.c
@@ -813,7 +813,7 @@ MACHINE_START(RX1950, "HP iPAQ RX1950")
813 .atag_offset = 0x100, 813 .atag_offset = 0x100,
814 .map_io = rx1950_map_io, 814 .map_io = rx1950_map_io,
815 .reserve = rx1950_reserve, 815 .reserve = rx1950_reserve,
816 .init_irq = s3c24xx_init_irq, 816 .init_irq = s3c2442_init_irq,
817 .init_machine = rx1950_init_machine, 817 .init_machine = rx1950_init_machine,
818 .init_time = samsung_timer_init, 818 .init_time = samsung_timer_init,
819 .restart = s3c244x_restart, 819 .restart = s3c244x_restart,
diff --git a/arch/arm/mach-s3c24xx/mach-rx3715.c b/arch/arm/mach-s3c24xx/mach-rx3715.c
index 0a3c96452f0f..3bc6231d0a1f 100644
--- a/arch/arm/mach-s3c24xx/mach-rx3715.c
+++ b/arch/arm/mach-s3c24xx/mach-rx3715.c
@@ -190,11 +190,6 @@ static void __init rx3715_reserve(void)
190 memblock_reserve(0x30081000, 0x1000); 190 memblock_reserve(0x30081000, 0x1000);
191} 191}
192 192
193static void __init rx3715_init_irq(void)
194{
195 s3c24xx_init_irq();
196}
197
198static void __init rx3715_init_machine(void) 193static void __init rx3715_init_machine(void)
199{ 194{
200#ifdef CONFIG_PM_H1940 195#ifdef CONFIG_PM_H1940
@@ -212,7 +207,7 @@ MACHINE_START(RX3715, "IPAQ-RX3715")
212 .atag_offset = 0x100, 207 .atag_offset = 0x100,
213 .map_io = rx3715_map_io, 208 .map_io = rx3715_map_io,
214 .reserve = rx3715_reserve, 209 .reserve = rx3715_reserve,
215 .init_irq = rx3715_init_irq, 210 .init_irq = s3c2440_init_irq,
216 .init_machine = rx3715_init_machine, 211 .init_machine = rx3715_init_machine,
217 .init_time = samsung_timer_init, 212 .init_time = samsung_timer_init,
218 .restart = s3c244x_restart, 213 .restart = s3c244x_restart,
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2440.c b/arch/arm/mach-s3c24xx/mach-smdk2440.c
index f56cb08e6d1c..de2e5d39a847 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2440.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2440.c
@@ -177,7 +177,7 @@ MACHINE_START(S3C2440, "SMDK2440")
177 /* Maintainer: Ben Dooks <ben-linux@fluff.org> */ 177 /* Maintainer: Ben Dooks <ben-linux@fluff.org> */
178 .atag_offset = 0x100, 178 .atag_offset = 0x100,
179 179
180 .init_irq = s3c24xx_init_irq, 180 .init_irq = s3c2440_init_irq,
181 .map_io = smdk2440_map_io, 181 .map_io = smdk2440_map_io,
182 .init_machine = smdk2440_machine_init, 182 .init_machine = smdk2440_machine_init,
183 .init_time = samsung_timer_init, 183 .init_time = samsung_timer_init,