|
|
@ -1424,13 +1424,20 @@ static inline void ssb_maskset32(struct ssb_device *dev, |
|
|
|
static void gpio_set_irqenable(int enabled, irqreturn_t (*handler)(int, void *)) |
|
|
|
static void gpio_set_irqenable(int enabled, irqreturn_t (*handler)(int, void *)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int irq; |
|
|
|
int irq; |
|
|
|
|
|
|
|
int err; |
|
|
|
|
|
|
|
|
|
|
|
irq = gpio_to_irq(0); |
|
|
|
irq = gpio_to_irq(0); |
|
|
|
if (irq == -EINVAL) return; |
|
|
|
if (irq < 0) { |
|
|
|
|
|
|
|
pr_err("no irq for gpio available\n"); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (enabled) { |
|
|
|
if (enabled) { |
|
|
|
if (request_irq(irq, handler, IRQF_SHARED, "gpio", handler)) |
|
|
|
err = request_irq(irq, handler, IRQF_SHARED, "gpio", handler); |
|
|
|
|
|
|
|
if (err) { |
|
|
|
|
|
|
|
pr_err("can not reqeust irq\n"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
free_irq(irq, handler); |
|
|
|
free_irq(irq, handler); |
|
|
|
} |
|
|
|
} |
|
|
|