Commit ce6c164b authored by Heiko Stuebner's avatar Heiko Stuebner Committed by Kukjin Kim
Browse files

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: default avatarHeiko Stuebner <heiko@sntech.de>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 6f8d7ea2
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -73,6 +73,7 @@ extern void s3c244x_restart(char mode, const char *cmd);
#ifdef CONFIG_CPU_S3C2440
#ifdef CONFIG_CPU_S3C2440
extern  int s3c2440_init(void);
extern  int s3c2440_init(void);
extern void s3c2440_map_io(void);
extern void s3c2440_map_io(void);
extern void s3c2440_init_irq(void);
#else
#else
#define s3c2440_init NULL
#define s3c2440_init NULL
#define s3c2440_map_io NULL
#define s3c2440_map_io NULL
@@ -81,6 +82,7 @@ extern void s3c2440_map_io(void);
#ifdef CONFIG_CPU_S3C2442
#ifdef CONFIG_CPU_S3C2442
extern  int s3c2442_init(void);
extern  int s3c2442_init(void);
extern void s3c2442_map_io(void);
extern void s3c2442_map_io(void);
extern void s3c2442_init_irq(void);
#else
#else
#define s3c2442_init NULL
#define s3c2442_init NULL
#define s3c2442_map_io NULL
#define s3c2442_map_io NULL
+23 −22
Original line number Original line Diff line number Diff line
@@ -783,10 +783,13 @@ static struct irq_chip s3c_irq_cam = {
	.irq_ack	= s3c_irq_cam_ack,
	.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;
	unsigned int irqno;


	s3c24xx_init_irq();

	irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
	irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
				 handle_level_irq);
				 handle_level_irq);
	set_irq_flags(IRQ_NFCON, IRQF_VALID);
	set_irq_flags(IRQ_NFCON, IRQF_VALID);
@@ -802,36 +805,34 @@ static int s3c244x_irq_add(struct device *dev, struct subsys_interface *sif)
					 handle_level_irq);
					 handle_level_irq);
		set_irq_flags(irqno, IRQF_VALID);
		set_irq_flags(irqno, IRQF_VALID);
	}
	}

	return 0;
}
}
#endif


static struct subsys_interface s3c2440_irq_interface = {
#ifdef CONFIG_CPU_S3C2442
	.name		= "s3c2440_irq",
void __init s3c2442_init_irq(void)
	.subsys		= &s3c2440_subsys,
	.add_dev	= s3c244x_irq_add,
};

static int s3c2440_irq_init(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 = {
	irq_set_chip_and_handler(IRQ_NFCON, &s3c_irq_level_chip,
	.name		= "s3c2442_irq",
				 handle_level_irq);
	.subsys		= &s3c2442_subsys,
	set_irq_flags(IRQ_NFCON, IRQF_VALID);
	.add_dev	= s3c244x_irq_add,
};


	/* add chained handler for camera */


static int s3c2442_irq_init(void)
	irq_set_chip_and_handler(IRQ_CAM, &s3c_irq_level_chip,
{
				 handle_level_irq);
	return subsys_interface_register(&s3c2442_irq_interface);
	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
#endif


#ifdef CONFIG_CPU_S3C2443
#ifdef CONFIG_CPU_S3C2443
+1 −1
Original line number Original line Diff line number Diff line
@@ -445,7 +445,7 @@ MACHINE_START(ANUBIS, "Simtec-Anubis")
	.atag_offset	= 0x100,
	.atag_offset	= 0x100,
	.map_io		= anubis_map_io,
	.map_io		= anubis_map_io,
	.init_machine	= anubis_init,
	.init_machine	= anubis_init,
	.init_irq	= s3c24xx_init_irq,
	.init_irq	= s3c2440_init_irq,
	.init_time	= samsung_timer_init,
	.init_time	= samsung_timer_init,
	.restart	= s3c244x_restart,
	.restart	= s3c244x_restart,
MACHINE_END
MACHINE_END
+1 −1
Original line number Original line Diff line number Diff line
@@ -211,7 +211,7 @@ MACHINE_START(AT2440EVB, "AT2440EVB")
	.atag_offset	= 0x100,
	.atag_offset	= 0x100,
	.map_io		= at2440evb_map_io,
	.map_io		= at2440evb_map_io,
	.init_machine	= at2440evb_init,
	.init_machine	= at2440evb_init,
	.init_irq	= s3c24xx_init_irq,
	.init_irq	= s3c2440_init_irq,
	.init_time	= samsung_timer_init,
	.init_time	= samsung_timer_init,
	.restart	= s3c244x_restart,
	.restart	= s3c244x_restart,
MACHINE_END
MACHINE_END
+1 −1
Original line number Original line Diff line number Diff line
@@ -589,7 +589,7 @@ MACHINE_START(NEO1973_GTA02, "GTA02")
	/* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */
	/* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */
	.atag_offset	= 0x100,
	.atag_offset	= 0x100,
	.map_io		= gta02_map_io,
	.map_io		= gta02_map_io,
	.init_irq	= s3c24xx_init_irq,
	.init_irq	= s3c2442_init_irq,
	.init_machine	= gta02_machine_init,
	.init_machine	= gta02_machine_init,
	.init_time	= samsung_timer_init,
	.init_time	= samsung_timer_init,
	.restart	= s3c244x_restart,
	.restart	= s3c244x_restart,
Loading