|
@@ -675,7 +675,8 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
|
|
unsigned int status)
|
|
unsigned int status)
|
|
{
|
|
{
|
|
/* First check for errors */
|
|
/* First check for errors */
|
|
- if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|MCI_RXOVERRUN)) {
|
|
|
|
|
|
+ if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_STARTBITERR|
|
|
|
|
+ MCI_TXUNDERRUN|MCI_RXOVERRUN)) {
|
|
u32 remain, success;
|
|
u32 remain, success;
|
|
|
|
|
|
/* Terminate the DMA transfer */
|
|
/* Terminate the DMA transfer */
|
|
@@ -955,8 +956,9 @@ static irqreturn_t mmci_irq(int irq, void *dev_id)
|
|
dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status);
|
|
dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status);
|
|
|
|
|
|
data = host->data;
|
|
data = host->data;
|
|
- if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|
|
|
|
|
- MCI_RXOVERRUN|MCI_DATAEND|MCI_DATABLOCKEND) && data)
|
|
|
|
|
|
+ if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_STARTBITERR|
|
|
|
|
+ MCI_TXUNDERRUN|MCI_RXOVERRUN|MCI_DATAEND|
|
|
|
|
+ MCI_DATABLOCKEND) && data)
|
|
mmci_data_irq(host, data, status);
|
|
mmci_data_irq(host, data, status);
|
|
|
|
|
|
cmd = host->cmd;
|
|
cmd = host->cmd;
|