diff options
author | Ulf Hansson <ulf.hansson@stericsson.com> | 2011-12-13 10:51:04 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-12-18 18:05:57 -0500 |
commit | b63038d6f4ca5d1849ce01d9fc5bb9cb426dec73 (patch) | |
tree | a838bc72781043e9d26ce0dddd9271472e2dd9a9 | |
parent | 55b02d2f4445ad625213817a1736bf2884d32547 (diff) |
ARM: 7214/1: mmc: mmci: Fixup handling of MCI_STARTBITERR
The interrupt was previously enabled and then correctly cleared.
Now we also handle it correctly.
Cc: <stable@vger.kernel.org>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | drivers/mmc/host/mmci.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 50b5f9926f64..826598115abd 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c | |||
@@ -675,7 +675,8 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data, | |||
675 | unsigned int status) | 675 | unsigned int status) |
676 | { | 676 | { |
677 | /* First check for errors */ | 677 | /* First check for errors */ |
678 | if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|MCI_RXOVERRUN)) { | 678 | if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_STARTBITERR| |
679 | MCI_TXUNDERRUN|MCI_RXOVERRUN)) { | ||
679 | u32 remain, success; | 680 | u32 remain, success; |
680 | 681 | ||
681 | /* Terminate the DMA transfer */ | 682 | /* Terminate the DMA transfer */ |
@@ -955,8 +956,9 @@ static irqreturn_t mmci_irq(int irq, void *dev_id) | |||
955 | dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status); | 956 | dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status); |
956 | 957 | ||
957 | data = host->data; | 958 | data = host->data; |
958 | if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN| | 959 | if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_STARTBITERR| |
959 | MCI_RXOVERRUN|MCI_DATAEND|MCI_DATABLOCKEND) && data) | 960 | MCI_TXUNDERRUN|MCI_RXOVERRUN|MCI_DATAEND| |
961 | MCI_DATABLOCKEND) && data) | ||
960 | mmci_data_irq(host, data, status); | 962 | mmci_data_irq(host, data, status); |
961 | 963 | ||
962 | cmd = host->cmd; | 964 | cmd = host->cmd; |