update rdc-2.6 config (thanks to Daniel Gimpelevich)
[openwrt-10.03/.git] / package / broadcom-diag / src / gpio.h
index 982caddae4e384616f472d0bd75013545141967d..6d83039ee709d17083e56a3130196cd7fa104433 100644 (file)
@@ -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,12 +63,15 @@ 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);
+       }
 
-       gpio_intmask(1, (enabled ? 1 : 0));
+       if (ssb.chipco.dev)
+               ssb_write32_masked(ssb.chipco.dev, SSB_CHIPCO_IRQMASK, SSB_CHIPCO_IRQ_GPIO, (enabled ? SSB_CHIPCO_IRQ_GPIO : 0));
 }
 
 #else