diff options
| -rw-r--r-- | drivers/mmc/host/mmci.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 90d168ad03b6..643818a5ac45 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c | |||
| @@ -184,6 +184,17 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data, | |||
| 184 | { | 184 | { |
| 185 | if (status & MCI_DATABLOCKEND) { | 185 | if (status & MCI_DATABLOCKEND) { |
| 186 | host->data_xfered += data->blksz; | 186 | host->data_xfered += data->blksz; |
| 187 | #ifdef CONFIG_ARCH_U300 | ||
| 188 | /* | ||
| 189 | * On the U300 some signal or other is | ||
| 190 | * badly routed so that a data write does | ||
| 191 | * not properly terminate with a MCI_DATAEND | ||
| 192 | * status flag. This quirk will make writes | ||
| 193 | * work again. | ||
| 194 | */ | ||
| 195 | if (data->flags & MMC_DATA_WRITE) | ||
| 196 | status |= MCI_DATAEND; | ||
| 197 | #endif | ||
| 187 | } | 198 | } |
| 188 | if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|MCI_RXOVERRUN)) { | 199 | if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|MCI_RXOVERRUN)) { |
| 189 | if (status & MCI_DATACRCFAIL) | 200 | if (status & MCI_DATACRCFAIL) |
