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;