|
|
@ -161,7 +161,8 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, |
|
|
|
/* We shouldn't wait for data inihibit for stop commands, even
|
|
|
|
/* We shouldn't wait for data inihibit for stop commands, even
|
|
|
|
though they might use busy signaling */ |
|
|
|
though they might use busy signaling */ |
|
|
|
if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION || |
|
|
|
if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION || |
|
|
|
cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) |
|
|
|
cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK || |
|
|
|
|
|
|
|
cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200) |
|
|
|
mask &= ~SDHCI_DATA_INHIBIT; |
|
|
|
mask &= ~SDHCI_DATA_INHIBIT; |
|
|
|
|
|
|
|
|
|
|
|
while (sdhci_readl(host, SDHCI_PRESENT_STATE) & mask) { |
|
|
|
while (sdhci_readl(host, SDHCI_PRESENT_STATE) & mask) { |
|
|
@ -183,7 +184,8 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, |
|
|
|
sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_INT_STATUS); |
|
|
|
sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_INT_STATUS); |
|
|
|
|
|
|
|
|
|
|
|
mask = SDHCI_INT_RESPONSE; |
|
|
|
mask = SDHCI_INT_RESPONSE; |
|
|
|
if (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) |
|
|
|
if (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK || |
|
|
|
|
|
|
|
cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200) |
|
|
|
mask = SDHCI_INT_DATA_AVAIL; |
|
|
|
mask = SDHCI_INT_DATA_AVAIL; |
|
|
|
|
|
|
|
|
|
|
|
if (!(cmd->resp_type & MMC_RSP_PRESENT)) |
|
|
|
if (!(cmd->resp_type & MMC_RSP_PRESENT)) |
|
|
@ -201,7 +203,8 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, |
|
|
|
flags |= SDHCI_CMD_CRC; |
|
|
|
flags |= SDHCI_CMD_CRC; |
|
|
|
if (cmd->resp_type & MMC_RSP_OPCODE) |
|
|
|
if (cmd->resp_type & MMC_RSP_OPCODE) |
|
|
|
flags |= SDHCI_CMD_INDEX; |
|
|
|
flags |= SDHCI_CMD_INDEX; |
|
|
|
if (data || cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) |
|
|
|
if (data || cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK || |
|
|
|
|
|
|
|
cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200) |
|
|
|
flags |= SDHCI_CMD_DATA; |
|
|
|
flags |= SDHCI_CMD_DATA; |
|
|
|
|
|
|
|
|
|
|
|
/* Set Transfer mode regarding to data flag */ |
|
|
|
/* Set Transfer mode regarding to data flag */ |
|
|
|