summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Welte <laforge@openmoko.org>2007-12-19 14:19:38 +0100
committerWolfgang Denk <wd@denx.de>2008-02-04 23:49:13 +0100
commitbe19bd5cd0f454b63298844a0b5377e029b2caad (patch)
tree965f1a57e000fa705c64f82659a938084e1f4a50
parenta41dbbd98d201d8aea31b5d21df4742c20cd7eda (diff)
downloadu-boot-imx-be19bd5cd0f454b63298844a0b5377e029b2caad.zip
u-boot-imx-be19bd5cd0f454b63298844a0b5377e029b2caad.tar.gz
u-boot-imx-be19bd5cd0f454b63298844a0b5377e029b2caad.tar.bz2
ARM: arm920/s3c24xx: IRQ demulitplexer callback
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>
-rw-r--r--cpu/arm920t/interrupts.c7
-rw-r--r--cpu/arm920t/s3c24x0/interrupts.c9
-rw-r--r--include/common.h2
3 files changed, 17 insertions, 1 deletions
diff --git a/cpu/arm920t/interrupts.c b/cpu/arm920t/interrupts.c
index a43a3ed..0a6d94f 100644
--- a/cpu/arm920t/interrupts.c
+++ b/cpu/arm920t/interrupts.c
@@ -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);
diff --git a/cpu/arm920t/s3c24x0/interrupts.c b/cpu/arm920t/s3c24x0/interrupts.c
index 1b36412..7ad9fcb 100644
--- a/cpu/arm920t/s3c24x0/interrupts.c
+++ b/cpu/arm920t/s3c24x0/interrupts.c
@@ -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) */
diff --git a/include/common.h b/include/common.h
index 54083f1..c4ee3e2 100644
--- a/include/common.h
+++ b/include/common.h
@@ -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);