ARM: S3C24XX: create dedicated irq init functions for s3c2440 and s3c2442

A patch from ğARM: S3C24XX: Move s3c2440 and s3c2442 into new irq structureĞ in state Mainline for linux-kernel

From: Heiko Stuebner <heiko@...> Date: Mon, 4 Feb 2013 13:44:39 +0100

Commit-Message

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@...>

Patch-Comment

arch/arm/mach-s3c24xx/common.h | 4 +++ arch/arm/mach-s3c24xx/irq.c | 45 ++++++++++++++++--------------- arch/arm/mach-s3c24xx/mach-anubis.c | 2 +- arch/arm/mach-s3c24xx/mach-at2440evb.c | 2 +- arch/arm/mach-s3c24xx/mach-gta02.c | 2 +- arch/arm/mach-s3c24xx/mach-mini2440.c | 2 +- arch/arm/mach-s3c24xx/mach-nexcoder.c | 2 +- arch/arm/mach-s3c24xx/mach-osiris.c | 2 +- arch/arm/mach-s3c24xx/mach-rx1950.c | 2 +- arch/arm/mach-s3c24xx/mach-rx3715.c | 7 +---- arch/arm/mach-s3c24xx/mach-smdk2440.c | 2 +- 11 files changed, 36 insertions(+), 36 deletions(-)

Statistics

  • 36 lines added
  • 36 lines removed

Changes

------------------------ arch/arm/mach-s3c24xx/common.h ------------------------
index ed6276f..3a4df14 100644
@@ -17,4 +17,8 @@ void s3c244x_restart(char mode, const char *cmd);
extern struct syscore_ops s3c24xx_irq_syscore_ops;
+extern void s3c2440_init_irq(void);
+
+extern void s3c2442_init_irq(void);
+
#endif /* __ARCH_ARM_MACH_S3C24XX_COMMON_H */
------------------------- arch/arm/mach-s3c24xx/irq.c --------------------------
index 95f971f..c544e00 100644
@@ -785,10 +785,13 @@ static struct irq_chip s3c_irq_cam = {
.irq_ack = s3c_irq_cam_ack,
};
-static int s3c244x_irq_add(struct device *dev, struct subsys_interface *sif)
+#ifdef CONFIG_CPU_S3C2440
+void __init s3c2440_init_irq(void)
{
unsigned int irqno;
+ s3c24xx_init_irq();
+
irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
handle_level_irq);
set_irq_flags(IRQ_NFCON, IRQF_VALID);
@@ -804,36 +807,34 @@ static int s3c244x_irq_add(struct device *dev, struct subsys_interface *sif)
handle_level_irq);
set_irq_flags(irqno, IRQF_VALID);
}
-
- return 0;
}
+#endif
-static struct subsys_interface s3c2440_irq_interface = {
- .name = "s3c2440_irq",
- .subsys = &s3c2440_subsys,
- .add_dev = s3c244x_irq_add,
-};
-
-static int s3c2440_irq_init(void)
+#ifdef CONFIG_CPU_S3C2442
+void __init s3c2442_init_irq(void)
{
- return subsys_interface_register(&s3c2440_irq_interface);
-}
+ unsigned int irqno;
-arch_initcall(s3c2440_irq_init);
+ s3c24xx_init_irq();
-static struct subsys_interface s3c2442_irq_interface = {
- .name = "s3c2442_irq",
- .subsys = &s3c2442_subsys,
- .add_dev = s3c244x_irq_add,
-};
+ irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
+ handle_level_irq);
+ set_irq_flags(IRQ_NFCON, IRQF_VALID);
+ /* add chained handler for camera */
-static int s3c2442_irq_init(void)
-{
- return subsys_interface_register(&s3c2442_irq_interface);
+ irq_set_chip_and_handler(IRQ_CAM, &s3c_irq_level_chip,
+ handle_level_irq);
+ irq_set_chained_handler(IRQ_CAM, s3c_irq_demux_cam);
+
+ for (irqno = IRQ_S3C2440_CAM_C; irqno <= IRQ_S3C2440_CAM_P; irqno++) {
+ irq_set_chip_and_handler(irqno, &s3c_irq_cam,
+ handle_level_irq);
+ set_irq_flags(irqno, IRQF_VALID);
+ }
}
+#endif
-arch_initcall(s3c2442_irq_init);
#endif
#ifdef CONFIG_CPU_S3C2443
--------------------- arch/arm/mach-s3c24xx/mach-anubis.c ----------------------
index 24f1a04..c1fb6c3 100644
@@ -445,7 +445,7 @@ MACHINE_START(ANUBIS, "Simtec-Anubis")
.atag_offset = 0x100,
.map_io = anubis_map_io,
.init_machine = anubis_init,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2440_init_irq,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
MACHINE_END
-------------------- arch/arm/mach-s3c24xx/mach-at2440evb.c --------------------
index 2bf6c8c..6dfeeb7 100644
@@ -211,7 +211,7 @@ MACHINE_START(AT2440EVB, "AT2440EVB")
.atag_offset = 0x100,
.map_io = at2440evb_map_io,
.init_machine = at2440evb_init,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2440_init_irq,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
MACHINE_END
---------------------- arch/arm/mach-s3c24xx/mach-gta02.c ----------------------
index 84a750d..13d8d07 100644
@@ -589,7 +589,7 @@ MACHINE_START(NEO1973_GTA02, "GTA02")
/* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */
.atag_offset = 0x100,
.map_io = gta02_map_io,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2442_init_irq,
.init_machine = gta02_machine_init,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
-------------------- arch/arm/mach-s3c24xx/mach-mini2440.c ---------------------
index 29f106c..a83db46 100644
@@ -688,7 +688,7 @@ MACHINE_START(MINI2440, "MINI2440")
.atag_offset = 0x100,
.map_io = mini2440_map_io,
.init_machine = mini2440_init,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2440_init_irq,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
MACHINE_END
-------------------- arch/arm/mach-s3c24xx/mach-nexcoder.c ---------------------
index f64a146..665980a 100644
@@ -154,7 +154,7 @@ MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440")
.atag_offset = 0x100,
.map_io = nexcoder_map_io,
.init_machine = nexcoder_init,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2440_init_irq,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
MACHINE_END
--------------------- arch/arm/mach-s3c24xx/mach-osiris.c ----------------------
index 4c90ffd..58d6fbe 100644
@@ -426,7 +426,7 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")
/* Maintainer: Ben Dooks <ben@simtec.co.uk> */
.atag_offset = 0x100,
.map_io = osiris_map_io,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2440_init_irq,
.init_machine = osiris_init,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
--------------------- arch/arm/mach-s3c24xx/mach-rx1950.c ----------------------
index 799af43..e4d67a3 100644
@@ -813,7 +813,7 @@ MACHINE_START(RX1950, "HP iPAQ RX1950")
.atag_offset = 0x100,
.map_io = rx1950_map_io,
.reserve = rx1950_reserve,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2442_init_irq,
.init_machine = rx1950_init_machine,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
--------------------- arch/arm/mach-s3c24xx/mach-rx3715.c ----------------------
index 0a3c964..3bc6231 100644
@@ -190,11 +190,6 @@ static void __init rx3715_reserve(void)
memblock_reserve(0x30081000, 0x1000);
}
-static void __init rx3715_init_irq(void)
-{
- s3c24xx_init_irq();
-}
-
static void __init rx3715_init_machine(void)
{
#ifdef CONFIG_PM_H1940
@@ -212,7 +207,7 @@ MACHINE_START(RX3715, "IPAQ-RX3715")
.atag_offset = 0x100,
.map_io = rx3715_map_io,
.reserve = rx3715_reserve,
- .init_irq = rx3715_init_irq,
+ .init_irq = s3c2440_init_irq,
.init_machine = rx3715_init_machine,
.init_time = samsung_timer_init,
.restart = s3c244x_restart,
-------------------- arch/arm/mach-s3c24xx/mach-smdk2440.c ---------------------
index 05bf045..c6cdfa9 100644
@@ -180,7 +180,7 @@ MACHINE_START(S3C2440, "SMDK2440")
/* Maintainer: Ben Dooks <ben-linux@fluff.org> */
.atag_offset = 0x100,
- .init_irq = s3c24xx_init_irq,
+ .init_irq = s3c2440_init_irq,
.map_io = smdk2440_map_io,
.init_machine = smdk2440_machine_init,
.init_time = samsung_timer_init,
 
 

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.

Read More...