Lines Matching refs:mrq

504 static void sdhci_mod_timer(struct sdhci_host *host, struct mmc_request *mrq,
507 if (sdhci_data_line_cmd(mrq->cmd))
513 static void sdhci_del_timer(struct sdhci_host *host, struct mmc_request *mrq)
515 if (sdhci_data_line_cmd(mrq->cmd))
1393 struct mmc_request *mrq)
1395 return !mrq->sbc && (host->flags & SDHCI_AUTO_CMD12) &&
1396 !mrq->cap_cmd_during_tfr;
1400 struct mmc_request *mrq)
1402 return mrq->sbc && (host->flags & SDHCI_AUTO_CMD23);
1406 struct mmc_request *mrq)
1408 return mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23);
1415 bool use_cmd12 = sdhci_auto_cmd12(host, cmd->mrq) &&
1417 bool use_cmd23 = sdhci_auto_cmd23(host, cmd->mrq);
1479 if (sdhci_auto_cmd23(host, cmd->mrq))
1480 sdhci_writel(host, cmd->mrq->sbc->arg, SDHCI_ARGUMENT2);
1491 static bool sdhci_needs_reset(struct sdhci_host *host, struct mmc_request *mrq)
1494 ((mrq->cmd && mrq->cmd->error) ||
1495 (mrq->sbc && mrq->sbc->error) ||
1496 (mrq->data && mrq->data->stop && mrq->data->stop->error) ||
1500 static void sdhci_set_mrq_done(struct sdhci_host *host, struct mmc_request *mrq)
1505 if (host->mrqs_done[i] == mrq) {
1513 host->mrqs_done[i] = mrq;
1521 static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq)
1523 if (host->cmd && host->cmd->mrq == mrq)
1526 if (host->data_cmd && host->data_cmd->mrq == mrq)
1529 if (host->deferred_cmd && host->deferred_cmd->mrq == mrq)
1532 if (host->data && host->data->mrq == mrq)
1535 if (sdhci_needs_reset(host, mrq))
1538 sdhci_set_mrq_done(host, mrq);
1540 sdhci_del_timer(host, mrq);
1546 static void sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq)
1548 __sdhci_finish_mrq(host, mrq);
1594 ((!data->mrq->sbc && !sdhci_auto_cmd12(host, data->mrq)) ||
1601 if (data->mrq->cap_cmd_during_tfr) {
1602 __sdhci_finish_mrq(host, data->mrq);
1613 __sdhci_finish_mrq(host, data->mrq);
1621 __sdhci_finish_mrq(host, data->mrq);
1651 if (cmd->mrq->data && (cmd == cmd->mrq->data->stop))
1711 sdhci_mod_timer(host, cmd->mrq, timeout);
1808 if (cmd->mrq->cap_cmd_during_tfr && cmd == cmd->mrq->cmd)
1809 mmc_command_done(host->mmc, cmd->mrq);
1832 if (cmd == cmd->mrq->sbc) {
1833 if (!sdhci_send_command(host, cmd->mrq->cmd)) {
1835 host->deferred_cmd = cmd->mrq->cmd;
1844 __sdhci_finish_mrq(host, cmd->mrq);
2176 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
2190 if (sdhci_present_error(host, mrq->cmd, present))
2193 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd;
2203 sdhci_finish_mrq(host, mrq);
2208 int sdhci_request_atomic(struct mmc_host *mmc, struct mmc_request *mrq)
2217 if (sdhci_present_error(host, mrq->cmd, true)) {
2218 sdhci_finish_mrq(host, mrq);
2222 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd;
2793 struct mmc_request mrq = {};
2801 cmd.mrq = &mrq;
2803 mrq.cmd = &cmd;
2831 sdhci_del_timer(host, &mrq);
2982 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq,
2985 struct mmc_data *data = mrq->data;
2994 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq)
2998 mrq->data->host_cookie = COOKIE_UNMAPPED;
3006 sdhci_pre_dma_transfer(host, mrq->data, COOKIE_PRE_MAPPED);
3013 sdhci_finish_mrq(host, host->data_cmd->mrq);
3018 sdhci_finish_mrq(host, host->cmd->mrq);
3077 struct mmc_request *mrq;
3083 mrq = host->mrqs_done[i];
3084 if (mrq)
3088 if (!mrq) {
3097 if (sdhci_needs_reset(host, mrq)) {
3100 * reset. Note there can only be one other mrq, so it cannot
3125 struct mmc_data *data = mrq->data;
3128 (mrq->cmd->error || data->error)) {
3135 sdhci_set_mrq_done(host, mrq);
3187 host->ops->request_done(host, mrq);
3189 mmc_request_done(host->mmc, mrq);
3219 sdhci_finish_mrq(host, host->cmd->mrq);
3247 sdhci_finish_mrq(host, host->data_cmd->mrq);
3250 sdhci_finish_mrq(host, host->cmd->mrq);
3267 struct mmc_request *mrq = host->data_cmd->mrq;
3274 if (!mrq->sbc && (host->flags & SDHCI_AUTO_CMD12)) {
3314 __sdhci_finish_mrq(host, host->cmd->mrq);
3320 struct mmc_request *mrq = host->cmd->mrq;
3328 if (sdhci_auto_cmd23(host, mrq)) {
3329 mrq->sbc->error = err;
3330 __sdhci_finish_mrq(host, mrq);
3401 __sdhci_finish_mrq(host, data_cmd->mrq);
3414 __sdhci_finish_mrq(host, data_cmd->mrq);
3512 struct mmc_request *mrq)
3514 struct mmc_data *data = mrq->data;
3624 struct mmc_request *mrq = host->mrqs_done[i];
3626 if (!mrq)
3629 if (sdhci_defer_done(host, mrq)) {
3632 mrqs_done[i] = mrq;
3680 sdhci_finish_mrq(host, cmd->mrq);