diff options
| author | Nicolas Pitre <nico@cam.org> | 2007-05-13 12:03:08 -0400 |
|---|---|---|
| committer | Pierre Ossman <drzeus@drzeus.cx> | 2007-05-14 12:51:48 -0400 |
| commit | 90e07d9f54c61449dd48eff82e2354d0124d4f7e (patch) | |
| tree | 78bf317dd0e300ccf57106df951901c671013e70 | |
| parent | fe6b4c8840c5e23fe9b8696450cee8f2e8cebffd (diff) | |
pxamci: fix PXA27x MMC workaround for bad CRC with 136 bit response
... 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>
| -rw-r--r-- | drivers/mmc/host/pxamci.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c index d97d3864b57f..f8985c508bb9 100644 --- a/drivers/mmc/host/pxamci.c +++ b/drivers/mmc/host/pxamci.c | |||
| @@ -232,20 +232,14 @@ static int pxamci_cmd_done(struct pxamci_host *host, unsigned int stat) | |||
| 232 | /* | 232 | /* |
| 233 | * workaround for erratum #42: | 233 | * workaround for erratum #42: |
| 234 | * Intel PXA27x Family Processor Specification Update Rev 001 | 234 | * Intel PXA27x Family Processor Specification Update Rev 001 |
| 235 | * A bogus CRC error can appear if the msb of a 136 bit | ||
| 236 | * response is a one. | ||
| 235 | */ | 237 | */ |
| 236 | if (cmd->opcode == MMC_ALL_SEND_CID || | 238 | if (cmd->flags & MMC_RSP_136 && cmd->resp[0] & 0x80000000) { |
| 237 | cmd->opcode == MMC_SEND_CSD || | 239 | pr_debug("ignoring CRC from command %d - *risky*\n", cmd->opcode); |
| 238 | cmd->opcode == MMC_SEND_CID) { | 240 | } else |
| 239 | /* a bogus CRC error can appear if the msb of | ||
| 240 | the 15 byte response is a one */ | ||
| 241 | if ((cmd->resp[0] & 0x80000000) == 0) | ||
| 242 | cmd->error = MMC_ERR_BADCRC; | ||
| 243 | } else { | ||
| 244 | pr_debug("ignoring CRC from command %d - *risky*\n",cmd->opcode); | ||
| 245 | } | ||
| 246 | #else | ||
| 247 | cmd->error = MMC_ERR_BADCRC; | ||
| 248 | #endif | 241 | #endif |
| 242 | cmd->error = MMC_ERR_BADCRC; | ||
| 249 | } | 243 | } |
| 250 | 244 | ||
| 251 | pxamci_disable_irq(host, END_CMD_RES); | 245 | pxamci_disable_irq(host, END_CMD_RES); |
