mmc: recognise SDIO cards with SDIO_CCCR_REV 3.00
Bing Zhao [Fri, 21 Oct 2011 02:16:32 +0000 (19:16 -0700)]
Table 6-2: CCCR bit Definitions, address 00h.  Part E1 SDIO Simplified
Specification Version 3.00, Feb. 25, 2011.

This patch has been tested with Marvell WLAN device SD8797.

Reviewed-on: http://git-master/r/72877

Change-Id: I1ea3b63bde2bbe8532459205f61feffae3e30f0a
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Signed-off-by: Pavan Kunapuli <pkunapuli@nvidia.com>
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-on: http://git-master/r/74581
Reviewed-by: Automatic_Commit_Validation_User

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

index fce904b..3d8a5e4 100644 (file)
@@ -116,8 +116,8 @@ static int sdio_read_cccr(struct mmc_card *card)
 
        cccr_vsn = data & 0x0f;
 
-       if (cccr_vsn > SDIO_CCCR_REV_1_20) {
-               printk(KERN_ERR "%s: unrecognised CCCR structure version %d\n",
+       if (cccr_vsn > SDIO_CCCR_REV_3_00) {
+               pr_err("%s: unrecognised CCCR structure version %d\n",
                        mmc_hostname(card->host), cccr_vsn);
                return -EINVAL;
        }
@@ -645,7 +645,7 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 ocr,
                        (MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 |
                         MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR104 |
                         MMC_CAP_UHS_DDR50))) {
-               err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
+               err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180, true);
                if (err) {
                        ocr &= ~R4_18V_PRESENT;
                        host->ocr &= ~R4_18V_PRESENT;
@@ -781,7 +781,7 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 ocr,
                        goto remove;
 
                /* Card is an ultra-high-speed card */
-               mmc_card_set_uhs(card);
+               mmc_sd_card_set_uhs(card);
        } else {
                /*
                 * Switch to high-speed (if supported).
index aced403..666ff6b 100644 (file)
 #define  SDIO_CCCR_REV_1_00    0       /* CCCR/FBR Version 1.00 */
 #define  SDIO_CCCR_REV_1_10    1       /* CCCR/FBR Version 1.10 */
 #define  SDIO_CCCR_REV_1_20    2       /* CCCR/FBR Version 1.20 */
+#define  SDIO_CCCR_REV_3_00    3       /* CCCR/FBR Version 3.00 */
 
 #define  SDIO_SDIO_REV_1_00    0       /* SDIO Spec Version 1.00 */
 #define  SDIO_SDIO_REV_1_10    1       /* SDIO Spec Version 1.10 */
 #define  SDIO_SDIO_REV_1_20    2       /* SDIO Spec Version 1.20 */
 #define  SDIO_SDIO_REV_2_00    3       /* SDIO Spec Version 2.00 */
-#define  SDIO_SD_REV_3_00      3       /* SD Physical Spev Version 3.00 */
+#define  SDIO_SDIO_REV_3_00    4       /* SDIO Spec Version 3.00 */
 
 #define SDIO_CCCR_SD           0x01