Lines Matching defs:cmd
52 static bool sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd);
149 static inline bool sdhci_data_line_cmd(struct mmc_command *cmd)
151 return cmd->data || cmd->flags & MMC_RSP_BUSY;
507 if (sdhci_data_line_cmd(mrq->cmd))
515 if (sdhci_data_line_cmd(mrq->cmd))
523 return host->cmd || host->data_cmd;
715 dma_addr_t addr, int len, unsigned int cmd)
720 dma_desc->cmd = cpu_to_le16(cmd);
733 int len, unsigned int cmd)
736 host->ops->adma_write_desc(host, desc, addr, len, cmd);
738 sdhci_adma_write_desc(host, desc, addr, len, cmd);
745 /* 32-bit and 64-bit descriptors have 'cmd' in same position */
746 dma_desc->cmd |= cpu_to_le16(ADMA2_END);
904 struct mmc_command *cmd,
911 target_timeout = cmd->busy_timeout * 1000;
933 struct mmc_command *cmd)
935 struct mmc_data *data = cmd->data;
944 target_timeout = sdhci_target_timeout(host, cmd, data);
965 static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd,
984 if (cmd == NULL)
987 data = cmd->data;
989 if (!data && !cmd->busy_timeout)
993 target_timeout = sdhci_target_timeout(host, cmd, data);
1013 count, cmd->opcode);
1053 void __sdhci_set_timeout(struct sdhci_host *host, struct mmc_command *cmd)
1056 u8 count = sdhci_calc_timeout(host, cmd, &too_big);
1060 sdhci_calc_sw_timeout(host, cmd);
1070 static void sdhci_set_timeout(struct sdhci_host *host, struct mmc_command *cmd)
1073 host->ops->set_timeout(host, cmd);
1075 __sdhci_set_timeout(host, cmd);
1114 static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
1116 struct mmc_data *data = cmd->data;
1247 struct mmc_command *cmd)
1252 struct mmc_data *data = cmd->data;
1317 struct mmc_command *cmd)
1319 struct mmc_data *data = cmd->data;
1330 struct mmc_command *cmd)
1332 if (!sdhci_external_dma_setup(host, cmd)) {
1333 __sdhci_external_dma_prepare_data(host, cmd);
1338 sdhci_prepare_data(host, cmd);
1343 struct mmc_command *cmd)
1347 if (!cmd->data)
1350 chan = sdhci_external_dma_channel(host, cmd->data);
1367 struct mmc_command *cmd)
1374 struct mmc_command *cmd)
1412 struct mmc_command *cmd,
1415 bool use_cmd12 = sdhci_auto_cmd12(host, cmd->mrq) &&
1416 (cmd->opcode != SD_IO_RW_EXTENDED);
1417 bool use_cmd23 = sdhci_auto_cmd23(host, cmd->mrq);
1451 struct mmc_command *cmd)
1454 struct mmc_data *data = cmd->data;
1460 if (!mmc_op_tuning(cmd->opcode))
1476 if (mmc_op_multi(cmd->opcode) || data->blocks > 1) {
1478 sdhci_auto_cmd_select(host, cmd, &mode);
1479 if (sdhci_auto_cmd23(host, cmd->mrq))
1480 sdhci_writel(host, cmd->mrq->sbc->arg, SDHCI_ARGUMENT2);
1494 ((mrq->cmd && mrq->cmd->error) ||
1523 if (host->cmd && host->cmd->mrq == mrq)
1524 host->cmd = NULL;
1566 if (!host->cmd || host->cmd == data_cmd)
1605 host->cmd = NULL;
1630 static bool sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
1636 WARN_ON(host->cmd);
1639 cmd->error = 0;
1642 cmd->opcode == MMC_STOP_TRANSMISSION)
1643 cmd->flags |= MMC_RSP_BUSY;
1646 if (sdhci_data_line_cmd(cmd))
1651 if (cmd->mrq->data && (cmd == cmd->mrq->data->stop))
1657 host->cmd = cmd;
1659 if (sdhci_data_line_cmd(cmd)) {
1661 host->data_cmd = cmd;
1662 sdhci_set_timeout(host, cmd);
1665 if (cmd->data) {
1667 sdhci_external_dma_prepare_data(host, cmd);
1669 sdhci_prepare_data(host, cmd);
1672 sdhci_writel(host, cmd->arg, SDHCI_ARGUMENT);
1674 sdhci_set_transfer_mode(host, cmd);
1676 if ((cmd->flags & MMC_RSP_136) && (cmd->flags & MMC_RSP_BUSY)) {
1683 cmd->flags &= ~MMC_RSP_BUSY;
1686 if (!(cmd->flags & MMC_RSP_PRESENT))
1688 else if (cmd->flags & MMC_RSP_136)
1690 else if (cmd->flags & MMC_RSP_BUSY)
1695 if (cmd->flags & MMC_RSP_CRC)
1697 if (cmd->flags & MMC_RSP_OPCODE)
1701 if (cmd->data || mmc_op_tuning(cmd->opcode))
1707 else if (!cmd->data && cmd->busy_timeout > 9000)
1708 timeout += DIV_ROUND_UP(cmd->busy_timeout, 1000) * HZ + HZ;
1711 sdhci_mod_timer(host, cmd->mrq, timeout);
1714 sdhci_external_dma_pre_transfer(host, cmd);
1716 sdhci_writew(host, SDHCI_MAKE_CMD(cmd->opcode, flags), SDHCI_COMMAND);
1722 struct mmc_command *cmd, bool present)
1725 cmd->error = -ENOMEDIUM;
1733 struct mmc_command *cmd,
1742 while (!sdhci_send_command(host, cmd)) {
1748 cmd->error = -EIO;
1761 if (cmd == deferred_cmd && cmd != host->deferred_cmd)
1764 if (sdhci_present_error(host, cmd, present))
1768 if (cmd == host->deferred_cmd)
1774 static void sdhci_read_rsp_136(struct sdhci_host *host, struct mmc_command *cmd)
1780 cmd->resp[i] = sdhci_readl(host, reg);
1788 cmd->resp[i] <<= 8;
1790 cmd->resp[i] |= cmd->resp[i + 1] >> 24;
1796 struct mmc_command *cmd = host->cmd;
1798 host->cmd = NULL;
1800 if (cmd->flags & MMC_RSP_PRESENT) {
1801 if (cmd->flags & MMC_RSP_136) {
1802 sdhci_read_rsp_136(host, cmd);
1804 cmd->resp[0] = sdhci_readl(host, SDHCI_RESPONSE);
1808 if (cmd->mrq->cap_cmd_during_tfr && cmd == cmd->mrq->cmd)
1809 mmc_command_done(host->mmc, cmd->mrq);
1821 if (cmd->flags & MMC_RSP_BUSY) {
1822 if (cmd->data) {
1825 cmd == host->data_cmd) {
1832 if (cmd == cmd->mrq->sbc) {
1833 if (!sdhci_send_command(host, cmd->mrq->cmd)) {
1835 host->deferred_cmd = cmd->mrq->cmd;
1843 if (!cmd->data)
1844 __sdhci_finish_mrq(host, cmd->mrq);
2179 struct mmc_command *cmd;
2190 if (sdhci_present_error(host, mrq->cmd, present))
2193 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd;
2195 if (!sdhci_send_command_retry(host, cmd, flags))
2211 struct mmc_command *cmd;
2217 if (sdhci_present_error(host, mrq->cmd, true)) {
2222 cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd;
2231 if (!sdhci_send_command(host, cmd))
2792 struct mmc_command cmd = {};
2799 cmd.opcode = opcode;
2800 cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC;
2801 cmd.mrq = &mrq;
2803 mrq.cmd = &cmd;
2809 if (cmd.opcode == MMC_SEND_TUNING_BLOCK_HS200 &&
2823 if (!sdhci_send_command_retry(host, &cmd, flags)) {
2829 host->cmd = NULL;
3015 if (host->cmd) {
3016 host->cmd->error = err;
3017 sdhci_finish_mrq(host, host->cmd->mrq);
3100 * also be in mrqs_done, otherwise host->cmd and host->data_cmd
3103 if (host->cmd || host->data_cmd) {
3127 (mrq->cmd->error || data->error)) {
3211 if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
3212 pr_err("%s: Timeout waiting for hardware cmd interrupt.\n",
3217 host->cmd->error = -ETIMEDOUT;
3218 sdhci_finish_mrq(host, host->cmd->mrq);
3234 (host->cmd && sdhci_data_line_cmd(host->cmd))) {
3248 host->cmd->error = -ETIMEDOUT;
3249 sdhci_finish_mrq(host, host->cmd->mrq);
3279 if (!host->cmd) {
3281 * SDHCI recovers from errors by resetting the cmd and data
3297 host->cmd->error = -ETIMEDOUT;
3300 host->cmd->error = -EILSEQ;
3301 if (!mmc_op_tuning(host->cmd->opcode))
3305 if (host->cmd->data &&
3308 host->cmd = NULL;
3313 __sdhci_finish_mrq(host, host->cmd->mrq);
3319 struct mmc_request *mrq = host->cmd->mrq;
3354 le16_to_cpu(dma_desc->cmd));
3360 le16_to_cpu(dma_desc->cmd));
3365 if (dma_desc->cmd & cpu_to_le16(ADMA2_END))
3410 if (host->cmd == data_cmd)
3419 * SDHCI recovers from errors by resetting the cmd and data
3490 if (host->cmd == host->data_cmd) {
3659 struct mmc_command *cmd;
3671 cmd = host->deferred_cmd;
3672 if (cmd && !sdhci_send_command_retry(host, cmd, flags))
3673 sdhci_finish_mrq(host, cmd->mrq);
3910 * for cmd queuing to fetch both command and transfer descriptors.