summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRobert Jarzmik <robert.jarzmik@free.fr>2012-04-16 21:47:15 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-04-17 22:02:54 +0200
commit0f0d40217f83596b93ff12cdb589931f8d9c3fa4 (patch)
tree4808d05e3369c11ea5f5d4191480f21f26fbe3a7 /drivers
parentb0bab98abdb1070e8466919d1ef2006972c8ea3f (diff)
downloadbarebox-0f0d40217f83596b93ff12cdb589931f8d9c3fa4.tar.gz
barebox-0f0d40217f83596b93ff12cdb589931f8d9c3fa4.tar.xz
mci: pxamci fix response type
When preparing a command, apply a mask so that only the command part will be used for the switch case. This will be more robust for future command response types. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mci/pxamci.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/mci/pxamci.c b/drivers/mci/pxamci.c
index 2d49187c36..f251d75f4e 100644
--- a/drivers/mci/pxamci.c
+++ b/drivers/mci/pxamci.c
@@ -163,18 +163,19 @@ static int pxamci_transfer_data(struct pxamci_host *host,
return ret;
}
+#define MMC_RSP_MASK (MMC_RSP_PRESENT | MMC_RSP_136 | MMC_RSP_CRC | \
+ MMC_RSP_BUSY | MMC_RSP_OPCODE)
static void pxamci_start_cmd(struct pxamci_host *host, struct mci_cmd *cmd,
unsigned int cmdat)
{
mci_dbg("cmd=(idx=%d,type=%d,clkrt=%d)\n", cmd->cmdidx, cmd->resp_type,
host->clkrt);
- if (cmd->resp_type & MMC_RSP_BUSY)
- cmdat |= CMDAT_BUSY;
- switch (cmd->resp_type) {
+ switch (cmd->resp_type & MMC_RSP_MASK) {
/* r1, r1b, r6, r7 */
- case MMC_RSP_R1:
case MMC_RSP_R1b:
+ cmdat |= CMDAT_BUSY;
+ case MMC_RSP_R1:
cmdat |= CMDAT_RESP_SHORT;
break;
case MMC_RSP_R2: