mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 15:37:23 +00:00
mmc: sdhci: don't clear SDHCI_INT_STATUS register during CMD_INHIBIT
Fixes emmc initialization regression on the db410c platform. Clearing this register while SDHCI_PRESENT_STATE reports SDHCI_CMD_INHIBIT leads to undefined behaviour on the db410c. When commit 7dde50 was merged (mmc: sdhci: Wait for SDHCI_INT_DATA_END when transferring), SDHCI transfers transitioned to wait for bit SDHCI_INT_DATA_END before flagging transfers done. Without this patch, the db410 platform fails to initialize its eMMC due to all of its transfers timing out (SDHCI_INT_DATA_END is never raised after all the blocks have been transferred). Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
This commit is contained in:
parent
339d578900
commit
713e6815d9
1 changed files with 2 additions and 1 deletions
|
@ -157,7 +157,6 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
|
||||||
/* Timeout unit - ms */
|
/* Timeout unit - ms */
|
||||||
static unsigned int cmd_timeout = SDHCI_CMD_DEFAULT_TIMEOUT;
|
static unsigned int cmd_timeout = SDHCI_CMD_DEFAULT_TIMEOUT;
|
||||||
|
|
||||||
sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_INT_STATUS);
|
|
||||||
mask = SDHCI_CMD_INHIBIT | SDHCI_DATA_INHIBIT;
|
mask = SDHCI_CMD_INHIBIT | SDHCI_DATA_INHIBIT;
|
||||||
|
|
||||||
/* We shouldn't wait for data inihibit for stop commands, even
|
/* We shouldn't wait for data inihibit for stop commands, even
|
||||||
|
@ -181,6 +180,8 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
|
||||||
udelay(1000);
|
udelay(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_INT_STATUS);
|
||||||
|
|
||||||
mask = SDHCI_INT_RESPONSE;
|
mask = SDHCI_INT_RESPONSE;
|
||||||
if (!(cmd->resp_type & MMC_RSP_PRESENT))
|
if (!(cmd->resp_type & MMC_RSP_PRESENT))
|
||||||
flags = SDHCI_CMD_RESP_NONE;
|
flags = SDHCI_CMD_RESP_NONE;
|
||||||
|
|
Loading…
Reference in a new issue