]> err.no Git - linux-2.6/commitdiff
pxamci: fix PXA27x MMC workaround for bad CRC with 136 bit response
authorNicolas Pitre <nico@cam.org>
Sun, 13 May 2007 16:03:08 +0000 (18:03 +0200)
committerPierre Ossman <drzeus@drzeus.cx>
Mon, 14 May 2007 16:51:48 +0000 (18:51 +0200)
... and make it depend on the response flag instead of the command type.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
drivers/mmc/host/pxamci.c

index d97d3864b57fc5d553dd7f51e487d4b5a5e75a2c..f8985c508bb9191ce5406b7f4b8bb43c092c939d 100644 (file)
@@ -232,20 +232,14 @@ static int pxamci_cmd_done(struct pxamci_host *host, unsigned int stat)
                /*
                 * workaround for erratum #42:
                 * Intel PXA27x Family Processor Specification Update Rev 001
+                * A bogus CRC error can appear if the msb of a 136 bit
+                * response is a one.
                 */
-               if (cmd->opcode == MMC_ALL_SEND_CID ||
-                   cmd->opcode == MMC_SEND_CSD ||
-                   cmd->opcode == MMC_SEND_CID) {
-                       /* a bogus CRC error can appear if the msb of
-                          the 15 byte response is a one */
-                       if ((cmd->resp[0] & 0x80000000) == 0)
-                               cmd->error = MMC_ERR_BADCRC;
-               } else {
-                       pr_debug("ignoring CRC from command %d - *risky*\n",cmd->opcode);
-               }
-#else
-               cmd->error = MMC_ERR_BADCRC;
+               if (cmd->flags & MMC_RSP_136 && cmd->resp[0] & 0x80000000) {
+                       pr_debug("ignoring CRC from command %d - *risky*\n", cmd->opcode);
+               } else
 #endif
+               cmd->error = MMC_ERR_BADCRC;
        }
 
        pxamci_disable_irq(host, END_CMD_RES);