MMC: S3C24XX MMC/SD driver write fixes
This patch is a workaround of some S3C2410 MMC chip bug Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:
parent
be518018c6
commit
679f0f8abd
|
@ -461,9 +461,19 @@ static irqreturn_t s3cmci_irq(int irq, void *dev_id)
|
||||||
|
|
||||||
if (mci_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
|
if (mci_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
|
||||||
if (cmd->flags & MMC_RSP_CRC) {
|
if (cmd->flags & MMC_RSP_CRC) {
|
||||||
cmd->error = -EILSEQ;
|
if (host->mrq->cmd->flags & MMC_RSP_136) {
|
||||||
host->status = "error: bad command crc";
|
dbg(host, dbg_irq,
|
||||||
goto fail_transfer;
|
"fixup: ignore CRC fail with long rsp\n");
|
||||||
|
} else {
|
||||||
|
/* note, we used to fail the transfer
|
||||||
|
* here, but it seems that this is just
|
||||||
|
* the hardware getting it wrong.
|
||||||
|
*
|
||||||
|
* cmd->error = -EILSEQ;
|
||||||
|
* host->status = "error: bad command crc";
|
||||||
|
* goto fail_transfer;
|
||||||
|
*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mci_cclear |= S3C2410_SDICMDSTAT_CRCFAIL;
|
mci_cclear |= S3C2410_SDICMDSTAT_CRCFAIL;
|
||||||
|
|
Loading…
Reference in New Issue