Lines Matching refs:mrq
465 static void sdhci_mod_timer(struct sdhci_host *host, struct mmc_request *mrq, in sdhci_mod_timer() argument
468 if (sdhci_data_line_cmd(mrq->cmd)) in sdhci_mod_timer()
474 static void sdhci_del_timer(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_del_timer() argument
476 if (sdhci_data_line_cmd(mrq->cmd)) in sdhci_del_timer()
1371 struct mmc_request *mrq) in sdhci_auto_cmd12() argument
1373 return !mrq->sbc && (host->flags & SDHCI_AUTO_CMD12) && in sdhci_auto_cmd12()
1374 !mrq->cap_cmd_during_tfr; in sdhci_auto_cmd12()
1378 struct mmc_request *mrq) in sdhci_auto_cmd23() argument
1380 return mrq->sbc && (host->flags & SDHCI_AUTO_CMD23); in sdhci_auto_cmd23()
1384 struct mmc_request *mrq) in sdhci_manual_cmd23() argument
1386 return mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23); in sdhci_manual_cmd23()
1393 bool use_cmd12 = sdhci_auto_cmd12(host, cmd->mrq) && in sdhci_auto_cmd_select()
1395 bool use_cmd23 = sdhci_auto_cmd23(host, cmd->mrq); in sdhci_auto_cmd_select()
1457 if (sdhci_auto_cmd23(host, cmd->mrq)) in sdhci_set_transfer_mode()
1458 sdhci_writel(host, cmd->mrq->sbc->arg, SDHCI_ARGUMENT2); in sdhci_set_transfer_mode()
1469 static bool sdhci_needs_reset(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_needs_reset() argument
1472 ((mrq->cmd && mrq->cmd->error) || in sdhci_needs_reset()
1473 (mrq->sbc && mrq->sbc->error) || in sdhci_needs_reset()
1474 (mrq->data && mrq->data->stop && mrq->data->stop->error) || in sdhci_needs_reset()
1478 static void sdhci_set_mrq_done(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_set_mrq_done() argument
1483 if (host->mrqs_done[i] == mrq) { in sdhci_set_mrq_done()
1491 host->mrqs_done[i] = mrq; in sdhci_set_mrq_done()
1499 static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) in __sdhci_finish_mrq() argument
1501 if (host->cmd && host->cmd->mrq == mrq) in __sdhci_finish_mrq()
1504 if (host->data_cmd && host->data_cmd->mrq == mrq) in __sdhci_finish_mrq()
1507 if (host->deferred_cmd && host->deferred_cmd->mrq == mrq) in __sdhci_finish_mrq()
1510 if (host->data && host->data->mrq == mrq) in __sdhci_finish_mrq()
1513 if (sdhci_needs_reset(host, mrq)) in __sdhci_finish_mrq()
1516 sdhci_set_mrq_done(host, mrq); in __sdhci_finish_mrq()
1518 sdhci_del_timer(host, mrq); in __sdhci_finish_mrq()
1524 static void sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_finish_mrq() argument
1526 __sdhci_finish_mrq(host, mrq); in sdhci_finish_mrq()
1571 ((!data->mrq->sbc && !sdhci_auto_cmd12(host, data->mrq)) || in __sdhci_finish_data()
1578 if (data->mrq->cap_cmd_during_tfr) { in __sdhci_finish_data()
1579 __sdhci_finish_mrq(host, data->mrq); in __sdhci_finish_data()
1590 __sdhci_finish_mrq(host, data->mrq); in __sdhci_finish_data()
1598 __sdhci_finish_mrq(host, data->mrq); in __sdhci_finish_data()
1628 if (cmd->mrq->data && (cmd == cmd->mrq->data->stop)) in sdhci_send_command()
1689 sdhci_mod_timer(host, cmd->mrq, timeout); in sdhci_send_command()
1785 if (cmd->mrq->cap_cmd_during_tfr && cmd == cmd->mrq->cmd) in sdhci_finish_command()
1786 mmc_command_done(host->mmc, cmd->mrq); in sdhci_finish_command()
1809 if (cmd == cmd->mrq->sbc) { in sdhci_finish_command()
1810 if (!sdhci_send_command(host, cmd->mrq->cmd)) { in sdhci_finish_command()
1812 host->deferred_cmd = cmd->mrq->cmd; in sdhci_finish_command()
1821 __sdhci_finish_mrq(host, cmd->mrq); in sdhci_finish_command()
2151 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
2165 if (sdhci_present_error(host, mrq->cmd, present)) in sdhci_request()
2168 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd; in sdhci_request()
2178 sdhci_finish_mrq(host, mrq); in sdhci_request()
2183 int sdhci_request_atomic(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request_atomic() argument
2192 if (sdhci_present_error(host, mrq->cmd, true)) { in sdhci_request_atomic()
2193 sdhci_finish_mrq(host, mrq); in sdhci_request_atomic()
2197 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd; in sdhci_request_atomic()
2767 struct mmc_request mrq = {}; in sdhci_send_tuning() local
2775 cmd.mrq = &mrq; in sdhci_send_tuning()
2777 mrq.cmd = &cmd; in sdhci_send_tuning()
2805 sdhci_del_timer(host, &mrq); in sdhci_send_tuning()
2955 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_post_req() argument
2959 struct mmc_data *data = mrq->data; in sdhci_post_req()
2968 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_pre_req() argument
2972 mrq->data->host_cookie = COOKIE_UNMAPPED; in sdhci_pre_req()
2980 sdhci_pre_dma_transfer(host, mrq->data, COOKIE_PRE_MAPPED); in sdhci_pre_req()
2987 sdhci_finish_mrq(host, host->data_cmd->mrq); in sdhci_error_out_mrqs()
2992 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_error_out_mrqs()
3052 struct mmc_request *mrq; in sdhci_request_done() local
3058 mrq = host->mrqs_done[i]; in sdhci_request_done()
3059 if (mrq) in sdhci_request_done()
3063 if (!mrq) { in sdhci_request_done()
3072 if (sdhci_needs_reset(host, mrq)) { in sdhci_request_done()
3105 struct mmc_data *data = mrq->data; in sdhci_request_done()
3108 (mrq->cmd->error || data->error)) { in sdhci_request_done()
3115 sdhci_set_mrq_done(host, mrq); in sdhci_request_done()
3167 host->ops->request_done(host, mrq); in sdhci_request_done()
3169 mmc_request_done(host->mmc, mrq); in sdhci_request_done()
3198 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_timeout_timer()
3225 sdhci_finish_mrq(host, host->data_cmd->mrq); in sdhci_timeout_data_timer()
3228 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_timeout_data_timer()
3245 struct mmc_request *mrq = host->data_cmd->mrq; in sdhci_cmd_irq() local
3252 if (!mrq->sbc && (host->flags & SDHCI_AUTO_CMD12)) { in sdhci_cmd_irq()
3288 __sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_cmd_irq()
3294 struct mmc_request *mrq = host->cmd->mrq; in sdhci_cmd_irq() local
3300 if (mrq->sbc && (host->flags & SDHCI_AUTO_CMD23)) { in sdhci_cmd_irq()
3301 mrq->sbc->error = err; in sdhci_cmd_irq()
3302 __sdhci_finish_mrq(host, mrq); in sdhci_cmd_irq()
3370 __sdhci_finish_mrq(host, data_cmd->mrq); in sdhci_data_irq()
3383 __sdhci_finish_mrq(host, data_cmd->mrq); in sdhci_data_irq()
3468 struct mmc_request *mrq) in sdhci_defer_done() argument
3470 struct mmc_data *data = mrq->data; in sdhci_defer_done()
3580 struct mmc_request *mrq = host->mrqs_done[i]; in sdhci_irq() local
3582 if (!mrq) in sdhci_irq()
3585 if (sdhci_defer_done(host, mrq)) { in sdhci_irq()
3588 mrqs_done[i] = mrq; in sdhci_irq()
3635 sdhci_finish_mrq(host, cmd->mrq); in sdhci_thread_irq()