Lines Matching full:mmc
4 * MMC software queue support based on command queue interfaces
10 #include <linux/mmc/card.h>
11 #include <linux/mmc/host.h>
22 struct mmc_host *mmc = hsq->mmc; in mmc_hsq_retry_handler() local
24 mmc->ops->request(mmc, hsq->mrq); in mmc_hsq_retry_handler()
29 struct mmc_host *mmc = hsq->mmc; in mmc_hsq_pump_requests() local
54 if (mmc->ops->request_atomic) in mmc_hsq_pump_requests()
55 ret = mmc->ops->request_atomic(mmc, hsq->mrq); in mmc_hsq_pump_requests()
57 mmc->ops->request(mmc, hsq->mrq); in mmc_hsq_pump_requests()
147 * @mmc: the host controller
153 bool mmc_hsq_finalize_request(struct mmc_host *mmc, struct mmc_request *mrq) in mmc_hsq_finalize_request() argument
155 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_finalize_request()
172 mmc_cqe_request_done(mmc, hsq->mrq); in mmc_hsq_finalize_request()
180 static void mmc_hsq_recovery_start(struct mmc_host *mmc) in mmc_hsq_recovery_start() argument
182 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_recovery_start()
192 static void mmc_hsq_recovery_finish(struct mmc_host *mmc) in mmc_hsq_recovery_finish() argument
194 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_recovery_finish()
212 static int mmc_hsq_request(struct mmc_host *mmc, struct mmc_request *mrq) in mmc_hsq_request() argument
214 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_request()
248 static void mmc_hsq_post_req(struct mmc_host *mmc, struct mmc_request *mrq) in mmc_hsq_post_req() argument
250 if (mmc->ops->post_req) in mmc_hsq_post_req()
251 mmc->ops->post_req(mmc, mrq, 0); in mmc_hsq_post_req()
271 static int mmc_hsq_wait_for_idle(struct mmc_host *mmc) in mmc_hsq_wait_for_idle() argument
273 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_wait_for_idle()
282 static void mmc_hsq_disable(struct mmc_host *mmc) in mmc_hsq_disable() argument
284 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_disable()
301 pr_warn("could not stop mmc software queue\n"); in mmc_hsq_disable()
312 static int mmc_hsq_enable(struct mmc_host *mmc, struct mmc_card *card) in mmc_hsq_enable() argument
314 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_enable()
340 int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc) in mmc_hsq_init() argument
345 hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots, in mmc_hsq_init()
350 hsq->mmc = mmc; in mmc_hsq_init()
351 hsq->mmc->cqe_private = hsq; in mmc_hsq_init()
352 mmc->cqe_ops = &mmc_hsq_ops; in mmc_hsq_init()
362 void mmc_hsq_suspend(struct mmc_host *mmc) in mmc_hsq_suspend() argument
364 mmc_hsq_disable(mmc); in mmc_hsq_suspend()
368 int mmc_hsq_resume(struct mmc_host *mmc) in mmc_hsq_resume() argument
370 return mmc_hsq_enable(mmc, NULL); in mmc_hsq_resume()
374 MODULE_DESCRIPTION("MMC Host Software Queue support");