aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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,