diff options
Diffstat (limited to 'drivers/mmc/host/mmci.c')
-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) |