mmc_spi: generate response for send status command
authorThomas Chou <thomas@wytron.com.tw>
Tue, 19 Apr 2011 03:48:32 +0000 (03:48 +0000)
committerAndy Fleming <afleming@freescale.com>
Wed, 18 May 2011 19:30:34 +0000 (14:30 -0500)
A "send status" command is added with the commit "mmc: checking
status after commands with R1b response". But the status register
returned from send status command of SPI protocol is different from
that of MMC/SD protocol. We do a simple test and generate a response
in stead of full bit-by-bit translation.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
drivers/mmc/mmc_spi.c
include/mmc.h

index dc7574cbe5538c4577ca47670839803e8a92448a..49fb9e02a91e039837c85729c36e0171407dcf17 100644 (file)
@@ -208,6 +208,11 @@ static int mmc_spi_request(struct mmc *mmc, struct mmc_cmd *cmd,
                        cmd->response[0] = swab32(cmd->response[0]);
                        debug("r32 %x\n", cmd->response[0]);
                        break;
+               case MMC_CMD_SEND_STATUS:
+                       spi_xfer(spi, 1 * 8, NULL, cmd->response, 0);
+                       cmd->response[0] = (cmd->response[0] & 0xff) ?
+                               MMC_STATUS_ERROR : MMC_STATUS_RDY_FOR_DATA;
+                       break;
                }
        } else {
                debug("%s:data %x %x %x\n", __func__,
index f7f2286981d3c0c1532d1f1aaa44c712b65c0402..863b7e293b2a8ca602aa2d34a52efd09be398ea8 100644 (file)
 #define MMC_STATUS_MASK                (~0x0206BF7F)
 #define MMC_STATUS_RDY_FOR_DATA (1 << 8)
 #define MMC_STATUS_CURR_STATE  (0xf << 9)
+#define MMC_STATUS_ERROR       (1 << 19)
 
 #define MMC_VDD_165_195                0x00000080      /* VDD voltage 1.65 - 1.95 */
 #define MMC_VDD_20_21          0x00000100      /* VDD voltage 2.0 ~ 2.1 */