Lines Matching refs:mrq

466 static void sdhci_mod_timer(struct sdhci_host *host, struct mmc_request *mrq,  in sdhci_mod_timer()  argument
469 if (sdhci_data_line_cmd(mrq->cmd)) in sdhci_mod_timer()
475 static void sdhci_del_timer(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_del_timer() argument
477 if (sdhci_data_line_cmd(mrq->cmd)) in sdhci_del_timer()
1360 struct mmc_request *mrq) in sdhci_auto_cmd12() argument
1362 return !mrq->sbc && (host->flags & SDHCI_AUTO_CMD12) && in sdhci_auto_cmd12()
1363 !mrq->cap_cmd_during_tfr; in sdhci_auto_cmd12()
1367 struct mmc_request *mrq) in sdhci_auto_cmd23() argument
1369 return mrq->sbc && (host->flags & SDHCI_AUTO_CMD23); in sdhci_auto_cmd23()
1373 struct mmc_request *mrq) in sdhci_manual_cmd23() argument
1375 return mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23); in sdhci_manual_cmd23()
1382 bool use_cmd12 = sdhci_auto_cmd12(host, cmd->mrq) && in sdhci_auto_cmd_select()
1384 bool use_cmd23 = sdhci_auto_cmd23(host, cmd->mrq); in sdhci_auto_cmd_select()
1446 if (sdhci_auto_cmd23(host, cmd->mrq)) in sdhci_set_transfer_mode()
1447 sdhci_writel(host, cmd->mrq->sbc->arg, SDHCI_ARGUMENT2); in sdhci_set_transfer_mode()
1458 static bool sdhci_needs_reset(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_needs_reset() argument
1461 ((mrq->cmd && mrq->cmd->error) || in sdhci_needs_reset()
1462 (mrq->sbc && mrq->sbc->error) || in sdhci_needs_reset()
1463 (mrq->data && mrq->data->stop && mrq->data->stop->error) || in sdhci_needs_reset()
1467 static void sdhci_set_mrq_done(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_set_mrq_done() argument
1472 if (host->mrqs_done[i] == mrq) { in sdhci_set_mrq_done()
1480 host->mrqs_done[i] = mrq; in sdhci_set_mrq_done()
1488 static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) in __sdhci_finish_mrq() argument
1490 if (host->cmd && host->cmd->mrq == mrq) in __sdhci_finish_mrq()
1493 if (host->data_cmd && host->data_cmd->mrq == mrq) in __sdhci_finish_mrq()
1496 if (host->deferred_cmd && host->deferred_cmd->mrq == mrq) in __sdhci_finish_mrq()
1499 if (host->data && host->data->mrq == mrq) in __sdhci_finish_mrq()
1502 if (sdhci_needs_reset(host, mrq)) in __sdhci_finish_mrq()
1505 sdhci_set_mrq_done(host, mrq); in __sdhci_finish_mrq()
1507 sdhci_del_timer(host, mrq); in __sdhci_finish_mrq()
1513 static void sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) in sdhci_finish_mrq() argument
1515 __sdhci_finish_mrq(host, mrq); in sdhci_finish_mrq()
1560 ((!data->mrq->sbc && !sdhci_auto_cmd12(host, data->mrq)) || in __sdhci_finish_data()
1567 if (data->mrq->cap_cmd_during_tfr) { in __sdhci_finish_data()
1568 __sdhci_finish_mrq(host, data->mrq); in __sdhci_finish_data()
1579 __sdhci_finish_mrq(host, data->mrq); in __sdhci_finish_data()
1587 __sdhci_finish_mrq(host, data->mrq); in __sdhci_finish_data()
1617 if (cmd->mrq->data && (cmd == cmd->mrq->data->stop)) in sdhci_send_command()
1678 sdhci_mod_timer(host, cmd->mrq, timeout); in sdhci_send_command()
1774 if (cmd->mrq->cap_cmd_during_tfr && cmd == cmd->mrq->cmd) in sdhci_finish_command()
1775 mmc_command_done(host->mmc, cmd->mrq); in sdhci_finish_command()
1798 if (cmd == cmd->mrq->sbc) { in sdhci_finish_command()
1799 if (!sdhci_send_command(host, cmd->mrq->cmd)) { in sdhci_finish_command()
1801 host->deferred_cmd = cmd->mrq->cmd; in sdhci_finish_command()
1810 __sdhci_finish_mrq(host, cmd->mrq); in sdhci_finish_command()
2140 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
2154 if (sdhci_present_error(host, mrq->cmd, present)) in sdhci_request()
2157 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd; in sdhci_request()
2167 sdhci_finish_mrq(host, mrq); in sdhci_request()
2172 int sdhci_request_atomic(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request_atomic() argument
2181 if (sdhci_present_error(host, mrq->cmd, true)) { in sdhci_request_atomic()
2182 sdhci_finish_mrq(host, mrq); in sdhci_request_atomic()
2186 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd; in sdhci_request_atomic()
2717 struct mmc_request mrq = {}; in sdhci_send_tuning() local
2725 cmd.mrq = &mrq; in sdhci_send_tuning()
2727 mrq.cmd = &cmd; in sdhci_send_tuning()
2755 sdhci_del_timer(host, &mrq); in sdhci_send_tuning()
2905 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_post_req() argument
2909 struct mmc_data *data = mrq->data; in sdhci_post_req()
2918 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_pre_req() argument
2922 mrq->data->host_cookie = COOKIE_UNMAPPED; in sdhci_pre_req()
2930 sdhci_pre_dma_transfer(host, mrq->data, COOKIE_PRE_MAPPED); in sdhci_pre_req()
2937 sdhci_finish_mrq(host, host->data_cmd->mrq); in sdhci_error_out_mrqs()
2942 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_error_out_mrqs()
3002 struct mmc_request *mrq; in sdhci_request_done() local
3008 mrq = host->mrqs_done[i]; in sdhci_request_done()
3009 if (mrq) in sdhci_request_done()
3013 if (!mrq) { in sdhci_request_done()
3022 if (sdhci_needs_reset(host, mrq)) { in sdhci_request_done()
3055 struct mmc_data *data = mrq->data; in sdhci_request_done()
3058 (mrq->cmd->error || data->error)) { in sdhci_request_done()
3065 sdhci_set_mrq_done(host, mrq); in sdhci_request_done()
3117 host->ops->request_done(host, mrq); in sdhci_request_done()
3119 mmc_request_done(host->mmc, mrq); in sdhci_request_done()
3148 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_timeout_timer()
3175 sdhci_finish_mrq(host, host->data_cmd->mrq); in sdhci_timeout_data_timer()
3178 sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_timeout_data_timer()
3195 struct mmc_request *mrq = host->data_cmd->mrq; in sdhci_cmd_irq() local
3202 if (!mrq->sbc && (host->flags & SDHCI_AUTO_CMD12)) { in sdhci_cmd_irq()
3238 __sdhci_finish_mrq(host, host->cmd->mrq); in sdhci_cmd_irq()
3244 struct mmc_request *mrq = host->cmd->mrq; in sdhci_cmd_irq() local
3250 if (mrq->sbc && (host->flags & SDHCI_AUTO_CMD23)) { in sdhci_cmd_irq()
3251 mrq->sbc->error = err; in sdhci_cmd_irq()
3252 __sdhci_finish_mrq(host, mrq); in sdhci_cmd_irq()
3320 __sdhci_finish_mrq(host, data_cmd->mrq); in sdhci_data_irq()
3333 __sdhci_finish_mrq(host, data_cmd->mrq); in sdhci_data_irq()
3418 struct mmc_request *mrq) in sdhci_defer_done() argument
3420 struct mmc_data *data = mrq->data; in sdhci_defer_done()
3530 struct mmc_request *mrq = host->mrqs_done[i]; in sdhci_irq() local
3532 if (!mrq) in sdhci_irq()
3535 if (sdhci_defer_done(host, mrq)) { in sdhci_irq()
3538 mrqs_done[i] = mrq; in sdhci_irq()
3585 sdhci_finish_mrq(host, cmd->mrq); in sdhci_thread_irq()