sdio: 1 add invalid bus width log;
authorlintao <lintao@rock-chips.com>
Mon, 9 Sep 2013 02:17:49 +0000 (10:17 +0800)
committerlintao <lintao@rock-chips.com>
Mon, 9 Sep 2013 02:17:49 +0000 (10:17 +0800)
      2 fix SDIO_CCCR_IF bus width setting

drivers/mmc/core/sdio.c
include/linux/mmc/sdio.h

index 9dff97cbd4a31668b719d1fe219b1d01add1c21c..05cf2c1ff4a43402952e9bbde3376ab6ce64b6eb 100755 (executable)
@@ -219,6 +219,12 @@ static int sdio_enable_wide(struct mmc_card *card)
        if (ret)
                return ret;
 
+    if ((ctrl & SDIO_BUS_WIDTH_MASK) == SDIO_BUS_WIDTH_RESERVED)
+               printk("%s: SDIO_CCCR_IF is invalid: 0x%02x\n",
+                          mmc_hostname(card->host), ctrl);
+
+    /* set as 4-bit bus width */
+       ctrl &= ~SDIO_BUS_WIDTH_MASK;
        ctrl |= SDIO_BUS_WIDTH_4BIT;
 
        ret = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_IF, ctrl, NULL);
index 5e5dd1ff596e7f01798e8852d4373ede55e52a75..26d116e96bb93f1fd9ab95c561b7621690bad4aa 100755 (executable)
@@ -99,7 +99,9 @@
 
 #define SDIO_CCCR_IF           0x07    /* bus interface controls */
 
+#define  SDIO_BUS_WIDTH_MASK   0x03    /* data bus width setting */
 #define  SDIO_BUS_WIDTH_1BIT   0x00
+#define  SDIO_BUS_WIDTH_RESERVED 0x01
 #define  SDIO_BUS_WIDTH_4BIT   0x02
 #define  SDIO_BUS_ECSI         0x20    /* Enable continuous SPI interrupt */
 #define  SDIO_BUS_SCSI         0x40    /* Support continuous SPI interrupt */