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 mmc_host_clk_hold(host); in sdio_irq_thread()
173 host->ops->enable_sdio_irq(host, 1); in sdio_irq_thread()
174 mmc_host_clk_release(host); in sdio_irq_thread()
181 if (host->caps & MMC_CAP_SDIO_IRQ) { in sdio_irq_thread()
182 mmc_host_clk_hold(host); in sdio_irq_thread()
183 host->ops->enable_sdio_irq(host, 0); in sdio_irq_thread()
184 mmc_host_clk_release(host); in sdio_irq_thread()
188 mmc_hostname(host), ret); in sdio_irq_thread()
195 struct mmc_host *host = card->host; in sdio_card_irq_get() local
197 WARN_ON(!host->claimed); in sdio_card_irq_get()
199 if (!host->sdio_irqs++) { in sdio_card_irq_get()
200 if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) { in sdio_card_irq_get()
201 atomic_set(&host->sdio_irq_thread_abort, 0); in sdio_card_irq_get()
202 host->sdio_irq_thread = in sdio_card_irq_get()
203 kthread_run(sdio_irq_thread, host, in sdio_card_irq_get()
204 "ksdioirqd/%s", mmc_hostname(host)); in sdio_card_irq_get()
205 if (IS_ERR(host->sdio_irq_thread)) { in sdio_card_irq_get()
206 int err = PTR_ERR(host->sdio_irq_thread); in sdio_card_irq_get()
207 host->sdio_irqs--; in sdio_card_irq_get()
210 } else if (host->caps & MMC_CAP_SDIO_IRQ) { in sdio_card_irq_get()
211 mmc_host_clk_hold(host); in sdio_card_irq_get()
212 host->ops->enable_sdio_irq(host, 1); in sdio_card_irq_get()
213 mmc_host_clk_release(host); in sdio_card_irq_get()
222 struct mmc_host *host = card->host; in sdio_card_irq_put() local
224 WARN_ON(!host->claimed); in sdio_card_irq_put()
225 BUG_ON(host->sdio_irqs < 1); in sdio_card_irq_put()
227 if (!--host->sdio_irqs) { in sdio_card_irq_put()
228 if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) { in sdio_card_irq_put()
229 atomic_set(&host->sdio_irq_thread_abort, 1); in sdio_card_irq_put()
230 kthread_stop(host->sdio_irq_thread); in sdio_card_irq_put()
231 } else if (host->caps & MMC_CAP_SDIO_IRQ) { in sdio_card_irq_put()
232 mmc_host_clk_hold(host); in sdio_card_irq_put()
233 host->ops->enable_sdio_irq(host, 0); in sdio_card_irq_put()
234 mmc_host_clk_release(host); in sdio_card_irq_put()
248 if ((card->host->caps & MMC_CAP_SDIO_IRQ) && in sdio_single_irq_set()
249 card->host->sdio_irqs == 1) in sdio_single_irq_set()