Lines Matching refs:mrq
445 static void sdhci_mod_timer(struct sdhci_host *host, struct mmc_request *mrq, in sdhci_mod_timer() argument
448 if (sdhci_data_line_cmd(mrq->cmd)) in sdhci_mod_timer()
454 static void sdhci_del_timer(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_del_timer() argument
456 if (sdhci_data_line_cmd(mrq->cmd)) in sdhci_del_timer()
1144 struct mmc_request *mrq) in sdhci_auto_cmd12() argument
1146 return !mrq->sbc && (host->flags & SDHCI_AUTO_CMD12) && in sdhci_auto_cmd12()
1147 !mrq->cap_cmd_during_tfr; in sdhci_auto_cmd12()
1154 bool use_cmd12 = sdhci_auto_cmd12(host, cmd->mrq) && in sdhci_auto_cmd_select()
1156 bool use_cmd23 = cmd->mrq->sbc && (host->flags & SDHCI_AUTO_CMD23); in sdhci_auto_cmd_select()
1216 if (cmd->mrq->sbc && (host->flags & SDHCI_AUTO_CMD23)) in sdhci_set_transfer_mode()
1217 sdhci_writel(host, cmd->mrq->sbc->arg, SDHCI_ARGUMENT2); in sdhci_set_transfer_mode()
1228 static bool sdhci_needs_reset(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_needs_reset() argument
1231 ((mrq->cmd && mrq->cmd->error) || in sdhci_needs_reset()
1232 (mrq->sbc && mrq->sbc->error) || in sdhci_needs_reset()
1233 (mrq->data && mrq->data->stop && mrq->data->stop->error) || in sdhci_needs_reset()
1237 static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) in __sdhci_finish_mrq() argument
1241 if (host->cmd && host->cmd->mrq == mrq) in __sdhci_finish_mrq()
1244 if (host->data_cmd && host->data_cmd->mrq == mrq) in __sdhci_finish_mrq()
1247 if (host->data && host->data->mrq == mrq) in __sdhci_finish_mrq()
1250 if (sdhci_needs_reset(host, mrq)) in __sdhci_finish_mrq()
1254 if (host->mrqs_done[i] == mrq) { in __sdhci_finish_mrq()
1262 host->mrqs_done[i] = mrq; in __sdhci_finish_mrq()
1269 sdhci_del_timer(host, mrq); in __sdhci_finish_mrq()
1275 static void sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_finish_mrq() argument
1277 __sdhci_finish_mrq(host, mrq); in sdhci_finish_mrq()
1323 !data->mrq->sbc)) { in sdhci_finish_data()
1329 if (data->mrq->cap_cmd_during_tfr) { in sdhci_finish_data()
1330 __sdhci_finish_mrq(host, data->mrq); in sdhci_finish_data()
1337 __sdhci_finish_mrq(host, data->mrq); in sdhci_finish_data()
1365 if (cmd->mrq->data && (cmd == cmd->mrq->data->stop)) in sdhci_send_command()
1374 sdhci_finish_mrq(host, cmd->mrq); in sdhci_send_command()
1397 sdhci_finish_mrq(host, cmd->mrq); in sdhci_send_command()
1427 sdhci_mod_timer(host, cmd->mrq, timeout); in sdhci_send_command()
1467 if (cmd->mrq->cap_cmd_during_tfr && cmd == cmd->mrq->cmd) in sdhci_finish_command()
1468 mmc_command_done(host->mmc, cmd->mrq); in sdhci_finish_command()
1491 if (cmd == cmd->mrq->sbc) { in sdhci_finish_command()
1492 sdhci_send_command(host, cmd->mrq->cmd); in sdhci_finish_command()
1500 __sdhci_finish_mrq(host, cmd->mrq); in sdhci_finish_command()
1802 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
1821 if (sdhci_auto_cmd12(host, mrq)) { in sdhci_request()
1822 if (mrq->stop) { in sdhci_request()
1823 mrq->data->stop = NULL; in sdhci_request()
1824 mrq->stop = NULL; in sdhci_request()
1829 mrq->cmd->error = -ENOMEDIUM; in sdhci_request()
1830 sdhci_finish_mrq(host, mrq); in sdhci_request()
1832 if (mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23)) in sdhci_request()
1833 sdhci_send_command(host, mrq->sbc); in sdhci_request()
1835 sdhci_send_command(host, mrq->cmd); in sdhci_request()
2348 struct mmc_request mrq = {}; in sdhci_send_tuning() local
2356 cmd.mrq = &mrq; in sdhci_send_tuning()
2358 mrq.cmd = &cmd; in sdhci_send_tuning()
2382 sdhci_del_timer(host, &mrq); in sdhci_send_tuning()
2532 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_post_req() argument
2536 struct mmc_data *data = mrq->data; in sdhci_post_req()
2545 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_pre_req() argument
2549 mrq->data->host_cookie = COOKIE_UNMAPPED; in sdhci_pre_req()
2557 sdhci_pre_dma_transfer(host, mrq->data, COOKIE_PRE_MAPPED); in sdhci_pre_req()
2564 sdhci_finish_mrq(host, host->data_cmd->mrq); in sdhci_error_out_mrqs()
2569 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_error_out_mrqs()
2629 struct mmc_request *mrq; in sdhci_request_done() local
2635 mrq = host->mrqs_done[i]; in sdhci_request_done()
2636 if (mrq) in sdhci_request_done()
2640 if (!mrq) { in sdhci_request_done()
2651 struct mmc_data *data = mrq->data; in sdhci_request_done()
2701 if (sdhci_needs_reset(host, mrq)) { in sdhci_request_done()
2730 mmc_request_done(host->mmc, mrq); in sdhci_request_done()
2759 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_timeout_timer()
2786 sdhci_finish_mrq(host, host->data_cmd->mrq); in sdhci_timeout_data_timer()
2789 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_timeout_data_timer()
2806 struct mmc_request *mrq = host->data_cmd->mrq; in sdhci_cmd_irq() local
2813 if (!mrq->sbc && (host->flags & SDHCI_AUTO_CMD12)) { in sdhci_cmd_irq()
2849 __sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_cmd_irq()
2855 struct mmc_request *mrq = host->cmd->mrq; in sdhci_cmd_irq() local
2861 if (mrq->sbc && (host->flags & SDHCI_AUTO_CMD23)) { in sdhci_cmd_irq()
2862 mrq->sbc->error = err; in sdhci_cmd_irq()
2863 __sdhci_finish_mrq(host, mrq); in sdhci_cmd_irq()
2931 __sdhci_finish_mrq(host, data_cmd->mrq); in sdhci_data_irq()
2944 __sdhci_finish_mrq(host, data_cmd->mrq); in sdhci_data_irq()
3029 struct mmc_request *mrq) in sdhci_defer_done() argument
3031 struct mmc_data *data = mrq->data; in sdhci_defer_done()
3141 struct mmc_request *mrq = host->mrqs_done[i]; in sdhci_irq() local
3143 if (!mrq) in sdhci_irq()
3146 if (sdhci_defer_done(host, mrq)) { in sdhci_irq()
3149 mrqs_done[i] = mrq; in sdhci_irq()