diff options
author | Felix Fietkau <nbd@openwrt.org> | 2007-06-25 08:32:25 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2007-06-25 08:32:25 +0000 |
commit | c20906011668315d50d629cb2d4dc46de9062d9a (patch) | |
tree | 1db4163deba31f36d771177dfcfabb21cd93f2ac /package/broadcom-diag/src/gpio.h | |
parent | 21e832921cd728a2e039b1e4c3948a78a54f8938 (diff) | |
download | upstream-c20906011668315d50d629cb2d4dc46de9062d9a.tar.gz upstream-c20906011668315d50d629cb2d4dc46de9062d9a.tar.bz2 upstream-c20906011668315d50d629cb2d4dc46de9062d9a.zip |
fix failsafe on broadcom, send netlink events in diag when running linux 2.6
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7722 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/broadcom-diag/src/gpio.h')
-rw-r--r-- | package/broadcom-diag/src/gpio.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/package/broadcom-diag/src/gpio.h b/package/broadcom-diag/src/gpio.h index 16f6ca41cd..6d83039ee7 100644 --- a/package/broadcom-diag/src/gpio.h +++ b/package/broadcom-diag/src/gpio.h @@ -53,7 +53,7 @@ static inline u32 gpio_intpolarity(u32 mask, u32 value) gpio_op(polarity, mask, value); } -static void gpio_set_irqenable(int enabled, irqreturn_t (*handler)(int, void *, struct pt_regs *)) +static void gpio_set_irqenable(int enabled, irqreturn_t (*handler)(int, void *)) { int irq; @@ -63,10 +63,12 @@ static void gpio_set_irqenable(int enabled, irqreturn_t (*handler)(int, void *, irq = ssb_mips_irq(ssb.extif.dev) + 2; else return; - if (enabled) - request_irq(irq, handler, SA_SHIRQ | SA_SAMPLE_RANDOM, "gpio", handler); - else + if (enabled) { + if (request_irq(irq, handler, IRQF_SHARED | IRQF_SAMPLE_RANDOM, "gpio", handler)) + return; + } else { free_irq(irq, handler); + } if (ssb.chipco.dev) ssb_write32_masked(ssb.chipco.dev, SSB_CHIPCO_IRQMASK, SSB_CHIPCO_IRQ_GPIO, (enabled ? SSB_CHIPCO_IRQ_GPIO : 0)); |