ARM: arm920/s3c24xx: IRQ demulitplexer callback
authorHarald Welte <laforge@openmoko.org>
Wed, 19 Dec 2007 13:19:38 +0000 (14:19 +0100)
committerWolfgang Denk <wd@denx.de>
Mon, 4 Feb 2008 22:49:13 +0000 (23:49 +0100)
This patch adds a IRQ demultiplexer callback to the arm920 cpu core code,
plus a stub implementation of it for the S3C2410.

The purpose is to allow arm920t implementations such as the s3c24x0 to
implement interrupt handlers in u-boot without having to touch core
arm920t code.

Signed-off-by: Harald Welte <laforge@openmoko.org>
cpu/arm920t/interrupts.c
cpu/arm920t/s3c24x0/interrupts.c
include/common.h

index a43a3ed..0a6d94f 100644 (file)
@@ -161,11 +161,16 @@ void do_fiq (struct pt_regs *pt_regs)
 
 void do_irq (struct pt_regs *pt_regs)
 {
-#if defined (CONFIG_USE_IRQ) && defined (CONFIG_ARCH_INTEGRATOR)
+#if defined (CONFIG_USE_IRQ)
+#if defined (ARM920_IRQ_CALLBACK)
+       ARM920_IRQ_CALLBACK();
+       return;
+#elif defined (CONFIG_ARCH_INTEGRATOR)
        /* ASSUMED to be a timer interrupt  */
        /* Just clear it - count handled in */
        /* integratorap.c                   */
        *(volatile ulong *)(CFG_TIMERBASE + 0x0C) = 0;
+#endif /* ARCH_INTEGRATOR */
 #else
        printf ("interrupt request\n");
        show_regs (pt_regs);
index 1b36412..7ad9fcb 100644 (file)
@@ -216,4 +216,13 @@ void reset_cpu (ulong ignored)
        /*NOTREACHED*/
 }
 
+#ifdef CONFIG_USE_IRQ
+void s3c2410_irq(void)
+{
+       S3C24X0_INTERRUPT * irq = S3C24X0_GetBase_INTERRUPT();
+       u_int32_t intpnd = irq->INTPND;
+
+}
+#endif /* USE_IRQ */
+
 #endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined (CONFIG_TRAB) */
index 54083f1..c4ee3e2 100644 (file)
@@ -479,6 +479,8 @@ ulong       get_OPB_freq (void);
 ulong  get_PCI_freq (void);
 #endif
 #if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_LH7A40X)
+void   s3c2410_irq(void);
+#define ARM920_IRQ_CALLBACK s3c2410_irq
 ulong  get_FCLK (void);
 ulong  get_HCLK (void);
 ulong  get_PCLK (void);