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>
19 struct mmc_host *mmc = hsq->mmc; in mmc_hsq_retry_handler() local
21 mmc->ops->request(mmc, hsq->mrq); in mmc_hsq_retry_handler()
26 struct mmc_host *mmc = hsq->mmc; in mmc_hsq_modify_threshold() local
30 mmc->hsq_depth = HSQ_NORMAL_DEPTH; in mmc_hsq_modify_threshold()
37 mmc->hsq_depth = HSQ_PERFORMANCE_DEPTH; in mmc_hsq_modify_threshold()
45 struct mmc_host *mmc = hsq->mmc; in mmc_hsq_pump_requests() local
72 if (mmc->ops->request_atomic) in mmc_hsq_pump_requests()
73 ret = mmc->ops->request_atomic(mmc, hsq->mrq); in mmc_hsq_pump_requests()
75 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()
254 static void mmc_hsq_post_req(struct mmc_host *mmc, struct mmc_request *mrq) in mmc_hsq_post_req() argument
256 if (mmc->ops->post_req) in mmc_hsq_post_req()
257 mmc->ops->post_req(mmc, mrq, 0); in mmc_hsq_post_req()
277 static int mmc_hsq_wait_for_idle(struct mmc_host *mmc) in mmc_hsq_wait_for_idle() argument
279 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_wait_for_idle()
288 static void mmc_hsq_disable(struct mmc_host *mmc) in mmc_hsq_disable() argument
290 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_disable()
307 pr_warn("could not stop mmc software queue\n"); in mmc_hsq_disable()
318 static int mmc_hsq_enable(struct mmc_host *mmc, struct mmc_card *card) in mmc_hsq_enable() argument
320 struct mmc_hsq *hsq = mmc->cqe_private; in mmc_hsq_enable()
346 int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc) in mmc_hsq_init() argument
353 hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots, in mmc_hsq_init()
358 hsq->mmc = mmc; in mmc_hsq_init()
359 hsq->mmc->cqe_private = hsq; in mmc_hsq_init()
360 mmc->cqe_ops = &mmc_hsq_ops; in mmc_hsq_init()
361 mmc->hsq_depth = HSQ_NORMAL_DEPTH; in mmc_hsq_init()
374 void mmc_hsq_suspend(struct mmc_host *mmc) in mmc_hsq_suspend() argument
376 mmc_hsq_disable(mmc); in mmc_hsq_suspend()
380 int mmc_hsq_resume(struct mmc_host *mmc) in mmc_hsq_resume() argument
382 return mmc_hsq_enable(mmc, NULL); in mmc_hsq_resume()
386 MODULE_DESCRIPTION("MMC Host Software Queue support");