[PATCH] mci: mmci: Fix status flags check
Alexander Shiyan
shc_work at mail.ru
Fri Aug 7 01:39:55 PDT 2015
Data transfer procedures should check _DATA_ flags instead of _CMD_.
---
drivers/mci/mmci.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/mci/mmci.c b/drivers/mci/mmci.c
index 608cac1..9d1e858 100644
--- a/drivers/mci/mmci.c
+++ b/drivers/mci/mmci.c
@@ -269,18 +269,18 @@ static int read_bytes(struct mci_host *mci, char *dest, unsigned int blkcount, u
xfercount -= len;
dest += len;
status = mmci_readl(host, MMCISTATUS);
- status_err = status & (MCI_CMDCRCFAIL | MCI_DATATIMEOUT |
- MCI_RXOVERRUN);
+ status_err = status & (MCI_DATACRCFAIL | MCI_DATATIMEOUT |
+ MCI_RXOVERRUN);
} while(xfercount && !status_err);
status_err = status &
- (MCI_CMDCRCFAIL | MCI_DATATIMEOUT | MCI_DATABLOCKEND |
+ (MCI_DATACRCFAIL | MCI_DATATIMEOUT | MCI_DATABLOCKEND |
MCI_RXOVERRUN);
while (!status_err) {
status = mmci_readl(host, MMCISTATUS);
status_err = status &
- (MCI_CMDCRCFAIL | MCI_DATATIMEOUT | MCI_DATABLOCKEND |
+ (MCI_DATACRCFAIL | MCI_DATATIMEOUT | MCI_DATABLOCKEND |
MCI_RXOVERRUN);
}
@@ -288,7 +288,7 @@ static int read_bytes(struct mci_host *mci, char *dest, unsigned int blkcount, u
dev_err(host->hw_dev, "Read data timed out, xfercount: %u, status: 0x%08X\n",
xfercount, status);
return -ETIMEDOUT;
- } else if (status & MCI_CMDCRCFAIL) {
+ } else if (status & MCI_DATACRCFAIL) {
dev_err(host->hw_dev, "Read data bytes CRC error: 0x%x\n", status);
return -EILSEQ;
} else if (status & MCI_RXOVERRUN) {
@@ -351,7 +351,7 @@ static int write_bytes(struct mci_host *mci, char *dest, unsigned int blkcount,
dev_dbg(host->hw_dev, "write_bytes: blkcount=%u blksize=%u\n", blkcount, blksize);
status = mmci_readl(host, MMCISTATUS);
- status_err = status & (MCI_CMDCRCFAIL | MCI_DATATIMEOUT);
+ status_err = status & (MCI_DATACRCFAIL | MCI_DATATIMEOUT);
do {
len = mmci_pio_write(host, dest, xfercount, status);
@@ -359,11 +359,11 @@ static int write_bytes(struct mci_host *mci, char *dest, unsigned int blkcount,
dest += len;
status = mmci_readl(host, MMCISTATUS);
- status_err = status & (MCI_CMDCRCFAIL | MCI_DATATIMEOUT);
+ status_err = status & (MCI_DATACRCFAIL | MCI_DATATIMEOUT);
} while (!status_err && xfercount);
status_err = status &
- (MCI_CMDCRCFAIL | MCI_DATATIMEOUT | MCI_DATABLOCKEND);
+ (MCI_DATACRCFAIL | MCI_DATATIMEOUT | MCI_DATABLOCKEND);
while (!status_err) {
status = mmci_readl(host, MMCISTATUS);
status_err = status &
@@ -374,7 +374,7 @@ static int write_bytes(struct mci_host *mci, char *dest, unsigned int blkcount,
dev_err(host->hw_dev, "Write data timed out, xfercount:%u,status:0x%08X\n",
xfercount, status);
return -ETIMEDOUT;
- } else if (status & MCI_CMDCRCFAIL) {
+ } else if (status & MCI_DATACRCFAIL) {
dev_err(host->hw_dev, "Write data CRC error\n");
return -EILSEQ;
}
--
2.3.6
More information about the barebox
mailing list