summaryrefslogtreecommitdiff
path: root/cpu/at32ap/interrupts.c
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2007-04-18 16:53:52 +0200
committerWolfgang Denk <wd@denx.de>2007-04-18 16:53:52 +0200
commitb99c1e6d8eec327c4b4dd99bf4c0d1a1eba2ce0a (patch)
tree2ba585aa362b4fc2859ead56014b39f74586662d /cpu/at32ap/interrupts.c
parent5f6c732affea9647762d27a4617a2ae64c52dceb (diff)
parent8e6875183cdca91c134408d119d4abcd48ef6856 (diff)
downloadu-boot-imx-b99c1e6d8eec327c4b4dd99bf4c0d1a1eba2ce0a.zip
u-boot-imx-b99c1e6d8eec327c4b4dd99bf4c0d1a1eba2ce0a.tar.gz
u-boot-imx-b99c1e6d8eec327c4b4dd99bf4c0d1a1eba2ce0a.tar.bz2
Merge with /home/wd/git/u-boot/custodian/u-boot-avr32; code cleanup.
Diffstat (limited to 'cpu/at32ap/interrupts.c')
-rw-r--r--cpu/at32ap/interrupts.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/cpu/at32ap/interrupts.c b/cpu/at32ap/interrupts.c
index d720cfa..c9e0499 100644
--- a/cpu/at32ap/interrupts.c
+++ b/cpu/at32ap/interrupts.c
@@ -27,7 +27,7 @@
#include <asm/processor.h>
#include <asm/sysreg.h>
-#include <asm/arch/platform.h>
+#include <asm/arch/memory-map.h>
#define HANDLER_MASK 0x00ffffff
#define INTLEV_SHIFT 30
@@ -44,8 +44,6 @@ volatile unsigned long timer_overflow;
*/
static unsigned long tb_factor;
-static const struct device *intc_dev;
-
unsigned long get_tbclk(void)
{
return gd->cpu_hz;
@@ -117,16 +115,19 @@ void udelay(unsigned long usec)
static int set_interrupt_handler(unsigned int nr, void (*handler)(void),
unsigned int priority)
{
+ extern void _evba(void);
unsigned long intpr;
unsigned long handler_addr = (unsigned long)handler;
+ handler_addr -= (unsigned long)&_evba;
+
if ((handler_addr & HANDLER_MASK) != handler_addr
|| (priority & INTLEV_MASK) != priority)
return -EINVAL;
intpr = (handler_addr & HANDLER_MASK);
intpr |= (priority & INTLEV_MASK) << INTLEV_SHIFT;
- writel(intpr, intc_dev->regs + 4 * nr);
+ writel(intpr, (void *)INTC_BASE + 4 * nr);
return 0;
}
@@ -143,10 +144,7 @@ void timer_init(void)
do_div(tmp, gd->cpu_hz);
tb_factor = (u32)tmp;
- intc_dev = get_device(DEVICE_INTC);
-
- if (!intc_dev
- || set_interrupt_handler(0, &timer_interrupt_handler, 3))
+ if (set_interrupt_handler(0, &timer_interrupt_handler, 3))
return;
/* For all practical purposes, this gives us an overflow interrupt */