diff options
author | Harald Welte <laforge@openmoko.org> | 2007-12-19 14:19:38 +0100 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-02-04 23:49:13 +0100 |
commit | be19bd5cd0f454b63298844a0b5377e029b2caad (patch) | |
tree | 965f1a57e000fa705c64f82659a938084e1f4a50 | |
parent | a41dbbd98d201d8aea31b5d21df4742c20cd7eda (diff) | |
download | u-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.c | 7 | ||||
-rw-r--r-- | cpu/arm920t/s3c24x0/interrupts.c | 9 | ||||
-rw-r--r-- | include/common.h | 2 |
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); |