diff options
author | Harald Welte <laforge@openmoko.org> | 2008-06-30 22:40:25 +0100 |
---|---|---|
committer | Pierre Ossman <drzeus@drzeus.cx> | 2008-07-15 14:14:46 +0200 |
commit | 679f0f8abd7187baaff40a47fe4733ae4c24cc9a (patch) | |
tree | 23e88d30350c7babd10424c668047c37406b0e0a /drivers/mmc | |
parent | be518018c6b9224c02284fb243207ef741c31ec6 (diff) | |
download | blackbird-op-linux-679f0f8abd7187baaff40a47fe4733ae4c24cc9a.tar.gz blackbird-op-linux-679f0f8abd7187baaff40a47fe4733ae4c24cc9a.zip |
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>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/s3cmci.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c index c6a4d3cadf2b..4db5bd7c0494 100644 --- a/drivers/mmc/host/s3cmci.c +++ b/drivers/mmc/host/s3cmci.c @@ -461,9 +461,19 @@ static irqreturn_t s3cmci_irq(int irq, void *dev_id) if (mci_csta & S3C2410_SDICMDSTAT_CRCFAIL) { if (cmd->flags & MMC_RSP_CRC) { - cmd->error = -EILSEQ; - host->status = "error: bad command crc"; - goto fail_transfer; + if (host->mrq->cmd->flags & MMC_RSP_136) { + dbg(host, dbg_irq, + "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; |