@@ -655,8 +655,12 @@ static void sdhci_prepare_data(struct sdhci_host
*host, struct mmc_data *data)
WARN_ON(host->data);
- if (data == NULL)
+ if (data == NULL) {
+ if ((host->quirks & SDHCI_QUIRK_SET_DATA_TIMEOUT_VAL) &&
+ (host->cmd->flags & MMC_RSP_BUSY))
+ sdhci_writel(host, 0xE, SDHCI_TIMEOUT_CONTROL);
return;
+ }
/* Sanity checks */
BUG_ON(data->blksz * data->blocks > 524288);
@@ -83,7 +83,8 @@ struct sdhci_host {
#define SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 (1<<28)
/* Controller doesn't have HISPD bit field in HI-SPEED SD card */
#define SDHCI_QUIRK_NO_HISPD_BIT (1<<29)
-
+/* Controller need set data timeout value when card is busy */
+#define SDHCI_QUIRK_SET_DATA_TIMEOUT_VAL (1<<30)
int irq; /* Device IRQ */
void __iomem *ioaddr; /* Mapped address */