mmc: sdhci: clear auto cmd setting bits for no data cmds
The auto cmd settings bits should be cleared before sending new commands or we may receive command timeout error for normal commands due to wrongly pre-sent auto cmd. e.g. we receive CMD13 timeout error due to ACMD23 is wrongly enabled by former data commands. mmc2: new high speed DDR MMC card at address 0001 mmcblk1: mmc2:0001 SEM08G 7.39 GiB mmcblk1boot0: mmc2:0001 SEM08G partition 1 2.00 MiB mmcblk1boot1: mmc2:0001 SEM08G partition 2 2.00 MiB mmcblk1rpmb: mmc2:0001 SEM08G partition 3 128 KiB mmcblk1: p1 p2 p3 p4 < p5 p6 p7 > mmc2: Timeout waiting for hardware interrupt. mmcblk1boot1: unknown partition table mmc2: Timeout waiting for hardware interrupt. mmcblk1boot0: unknown partition table Signed-off-by: Dong Aisheng <b29396@freescale.com> Acked-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
parent
0e4b0743bb
commit
2b558c13df
|
@ -898,8 +898,13 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
|
||||||
u16 mode;
|
u16 mode;
|
||||||
struct mmc_data *data = cmd->data;
|
struct mmc_data *data = cmd->data;
|
||||||
|
|
||||||
if (data == NULL)
|
if (data == NULL) {
|
||||||
|
/* clear Auto CMD settings for no data CMDs */
|
||||||
|
mode = sdhci_readw(host, SDHCI_TRANSFER_MODE);
|
||||||
|
sdhci_writew(host, mode & ~(SDHCI_TRNS_AUTO_CMD12 |
|
||||||
|
SDHCI_TRNS_AUTO_CMD23), SDHCI_TRANSFER_MODE);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
WARN_ON(!host->data);
|
WARN_ON(!host->data);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue