Lines Matching refs:host

31 static int process_sdio_pending_irqs(struct mmc_host *host)  in process_sdio_pending_irqs()  argument
33 struct mmc_card *card = host->card; in process_sdio_pending_irqs()
44 if (func && host->sdio_irq_pending) { in process_sdio_pending_irqs()
57 !(host->caps & MMC_CAP_SDIO_IRQ)) { in process_sdio_pending_irqs()
92 void sdio_run_irqs(struct mmc_host *host) in sdio_run_irqs() argument
94 mmc_claim_host(host); in sdio_run_irqs()
95 host->sdio_irq_pending = true; in sdio_run_irqs()
96 process_sdio_pending_irqs(host); in sdio_run_irqs()
97 mmc_release_host(host); in sdio_run_irqs()
103 struct mmc_host *host = _host; in sdio_irq_thread() local
117 period = (host->caps & MMC_CAP_SDIO_IRQ) ? in sdio_irq_thread()
121 mmc_hostname(host), period); in sdio_irq_thread()
137 ret = __mmc_claim_host(host, &host->sdio_irq_thread_abort); in sdio_irq_thread()
140 ret = process_sdio_pending_irqs(host); in sdio_irq_thread()
141 host->sdio_irq_pending = false; in sdio_irq_thread()
142 mmc_release_host(host); in sdio_irq_thread()
160 if (!(host->caps & MMC_CAP_SDIO_IRQ)) { in sdio_irq_thread()
171 if (host->caps & MMC_CAP_SDIO_IRQ) in sdio_irq_thread()
172 host->ops->enable_sdio_irq(host, 1); in sdio_irq_thread()
178 if (host->caps & MMC_CAP_SDIO_IRQ) in sdio_irq_thread()
179 host->ops->enable_sdio_irq(host, 0); in sdio_irq_thread()
182 mmc_hostname(host), ret); in sdio_irq_thread()
189 struct mmc_host *host = card->host; in sdio_card_irq_get() local
191 WARN_ON(!host->claimed); in sdio_card_irq_get()
193 if (!host->sdio_irqs++) { in sdio_card_irq_get()
194 if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) { in sdio_card_irq_get()
195 atomic_set(&host->sdio_irq_thread_abort, 0); in sdio_card_irq_get()
196 host->sdio_irq_thread = in sdio_card_irq_get()
197 kthread_run(sdio_irq_thread, host, in sdio_card_irq_get()
198 "ksdioirqd/%s", mmc_hostname(host)); in sdio_card_irq_get()
199 if (IS_ERR(host->sdio_irq_thread)) { in sdio_card_irq_get()
200 int err = PTR_ERR(host->sdio_irq_thread); in sdio_card_irq_get()
201 host->sdio_irqs--; in sdio_card_irq_get()
204 } else if (host->caps & MMC_CAP_SDIO_IRQ) { in sdio_card_irq_get()
205 host->ops->enable_sdio_irq(host, 1); in sdio_card_irq_get()
214 struct mmc_host *host = card->host; in sdio_card_irq_put() local
216 WARN_ON(!host->claimed); in sdio_card_irq_put()
217 BUG_ON(host->sdio_irqs < 1); in sdio_card_irq_put()
219 if (!--host->sdio_irqs) { in sdio_card_irq_put()
220 if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) { in sdio_card_irq_put()
221 atomic_set(&host->sdio_irq_thread_abort, 1); in sdio_card_irq_put()
222 kthread_stop(host->sdio_irq_thread); in sdio_card_irq_put()
223 } else if (host->caps & MMC_CAP_SDIO_IRQ) { in sdio_card_irq_put()
224 host->ops->enable_sdio_irq(host, 0); in sdio_card_irq_put()
238 if ((card->host->caps & MMC_CAP_SDIO_IRQ) && in sdio_single_irq_set()
239 card->host->sdio_irqs == 1) in sdio_single_irq_set()