Lines Matching refs:func
36 struct sdio_func *func; in process_sdio_pending_irqs() local
43 func = card->sdio_single_irq; in process_sdio_pending_irqs()
44 if (func && host->sdio_irq_pending) { in process_sdio_pending_irqs()
45 func->irq_handler(func); in process_sdio_pending_irqs()
70 func = card->sdio_func[i - 1]; in process_sdio_pending_irqs()
71 if (!func) { in process_sdio_pending_irqs()
75 } else if (func->irq_handler) { in process_sdio_pending_irqs()
76 func->irq_handler(func); in process_sdio_pending_irqs()
80 sdio_func_id(func)); in process_sdio_pending_irqs()
234 struct sdio_func *func; in sdio_single_irq_set() local
241 func = card->sdio_func[i]; in sdio_single_irq_set()
242 if (func && func->irq_handler) { in sdio_single_irq_set()
243 card->sdio_single_irq = func; in sdio_single_irq_set()
259 int sdio_claim_irq(struct sdio_func *func, sdio_irq_handler_t *handler) in sdio_claim_irq() argument
264 BUG_ON(!func); in sdio_claim_irq()
265 BUG_ON(!func->card); in sdio_claim_irq()
267 pr_debug("SDIO: Enabling IRQ for %s...\n", sdio_func_id(func)); in sdio_claim_irq()
269 if (func->irq_handler) { in sdio_claim_irq()
270 pr_debug("SDIO: IRQ for %s already in use.\n", sdio_func_id(func)); in sdio_claim_irq()
274 ret = mmc_io_rw_direct(func->card, 0, 0, SDIO_CCCR_IENx, 0, ®); in sdio_claim_irq()
278 reg |= 1 << func->num; in sdio_claim_irq()
282 ret = mmc_io_rw_direct(func->card, 1, 0, SDIO_CCCR_IENx, reg, NULL); in sdio_claim_irq()
286 func->irq_handler = handler; in sdio_claim_irq()
287 ret = sdio_card_irq_get(func->card); in sdio_claim_irq()
289 func->irq_handler = NULL; in sdio_claim_irq()
290 sdio_single_irq_set(func->card); in sdio_claim_irq()
302 int sdio_release_irq(struct sdio_func *func) in sdio_release_irq() argument
307 BUG_ON(!func); in sdio_release_irq()
308 BUG_ON(!func->card); in sdio_release_irq()
310 pr_debug("SDIO: Disabling IRQ for %s...\n", sdio_func_id(func)); in sdio_release_irq()
312 if (func->irq_handler) { in sdio_release_irq()
313 func->irq_handler = NULL; in sdio_release_irq()
314 sdio_card_irq_put(func->card); in sdio_release_irq()
315 sdio_single_irq_set(func->card); in sdio_release_irq()
318 ret = mmc_io_rw_direct(func->card, 0, 0, SDIO_CCCR_IENx, 0, ®); in sdio_release_irq()
322 reg &= ~(1 << func->num); in sdio_release_irq()
328 ret = mmc_io_rw_direct(func->card, 1, 0, SDIO_CCCR_IENx, reg, NULL); in sdio_release_irq()