static int cw1200_sdio_irq_subscribe(struct sbus_priv *self, sbus_irq_handler handler, void *priv) { int ret; unsigned long flags; if (!handler) return -EINVAL; spin_lock_irqsave(&self->lock, flags); self->irq_priv = priv; self->irq_handler = handler; spin_unlock_irqrestore(&self->lock, flags); printk(KERN_DEBUG "SW IRQ subscribe\n"); sdio_claim_host(self->func); #ifndef CONFIG_CW1200_USE_GPIO_IRQ ret = sdio_claim_irq(self->func, cw1200_sdio_irq_handler); #else ret = cw1200_request_irq(self, cw1200_gpio_irq_handler); #endif sdio_release_host(self->func); return ret; }
static int cw1200_sdio_irq_subscribe(struct hwbus_priv *self) { int ret = 0; pr_debug("SW IRQ subscribe\n"); sdio_claim_host(self->func); if (self->pdata->irq) ret = cw1200_request_irq(self); else ret = sdio_claim_irq(self->func, cw1200_sdio_irq_handler); sdio_release_host(self->func); return ret; }