diff options
author | sam <sam@FreeBSD.org> | 2009-06-22 20:57:51 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2009-06-22 20:57:51 +0000 |
commit | ff0565d7177c51d05c5a5eeab2b0a579e36c048c (patch) | |
tree | 4de089422633b7703eabe7a8e7395c1e40fe74ce /sys/arm | |
parent | ad949a216c2949bc4bbf950db38a337306753ba7 (diff) | |
download | FreeBSD-src-ff0565d7177c51d05c5a5eeab2b0a579e36c048c.zip FreeBSD-src-ff0565d7177c51d05c5a5eeab2b0a579e36c048c.tar.gz |
hook arm_post_filter to ACK GPIO interrupts; this fixes the interrupt
storm observed on the GPS+RS485 uarts on Gateworks Cambria boards
Reviewed by: cognet
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/xscale/ixp425/ixp425.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/arm/xscale/ixp425/ixp425.c b/sys/arm/xscale/ixp425/ixp425.c index cefcefd..6fb2aaa 100644 --- a/sys/arm/xscale/ixp425/ixp425.c +++ b/sys/arm/xscale/ixp425/ixp425.c @@ -186,6 +186,13 @@ ixp425_gpio_ack(int irq) ixp425_irq2gpio_bit(irq); } +static void +ixp425_post_filter(void *arg) +{ + uintptr_t irq = (uintptr_t) arg; + ixp425_gpio_ack(irq); +} + void arm_mask_irq(uintptr_t nb) { @@ -304,6 +311,7 @@ ixp425_attach(device_t dev) ixp435_set_intrmask(); ixp435_set_intrsteer(); } + arm_post_filter = ixp425_post_filter; if (bus_dma_tag_create(NULL, 1, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, 0xffffffff, 0xff, 0xffffffff, 0, |