mmc: sdhci: disable the 8bit mode when host doesn't support it
authorJaehoon Chung <jh80.chung@samsung.com>
Fri, 30 Dec 2016 06:30:11 +0000 (15:30 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Wed, 11 Jan 2017 09:14:47 +0000 (18:14 +0900)
Buswidth is depeneded on Hardware schematic.
Evne though host can support the 8bit buswidth, if hardware doesn't
support 8bit mode, it doesn't work fine.
So the buswidth mode selection leaves a matter in each SoC drivers.

On the contrary to this, hardware supports 8bit mode, but host doesn't
support it. then controller has to disable the MMC_MODE_8BIT.
(Host can check whether 8bit mode is supported or not, since V3.0)

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
drivers/mmc/sdhci.c

index cbf5f56221c2db11979705726bcac0f5c2a88270..853c268d721bc9010253af8b0c113fc8dbc29d63 100644 (file)
@@ -594,14 +594,13 @@ int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host,
 
        cfg->host_caps = MMC_MODE_HS | MMC_MODE_HS_52MHz | MMC_MODE_4BIT;
        if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) {
-               if (caps & SDHCI_CAN_DO_8BIT)
-                       cfg->host_caps |= MMC_MODE_8BIT;
+               if (!(caps & SDHCI_CAN_DO_8BIT))
+                       cfg->host_caps &= ~MMC_MODE_8BIT;
        }
 
        if (host->host_caps)
                cfg->host_caps |= host->host_caps;
 
-
        cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
 
        /*