summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2009-06-22 20:57:51 +0000
committersam <sam@FreeBSD.org>2009-06-22 20:57:51 +0000
commitff0565d7177c51d05c5a5eeab2b0a579e36c048c (patch)
tree4de089422633b7703eabe7a8e7395c1e40fe74ce /sys/arm
parentad949a216c2949bc4bbf950db38a337306753ba7 (diff)
downloadFreeBSD-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.c8
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,
OpenPOWER on IntegriCloud