mmc.c (c10b85d6c25f9ae0cdcf3ec9809a3063e0c3c2c9) mmc.c (04a2ea248f58b3b6216d0cd0a6b8698df8b14355)
1/*
2 * Copyright 2008, Freescale Semiconductor, Inc
3 * Andy Fleming
4 *
5 * Based vaguely on the Linux code
6 *
7 * SPDX-License-Identifier: GPL-2.0+
8 */

--- 1437 unchanged lines hidden (view full) ---

1446 bool uhs_en = (mmc->ocr & OCR_S18R) ? true : false;
1447 uint caps;
1448
1449
1450 err = sd_get_capabilities(mmc);
1451 if (err)
1452 return err;
1453 /* Restrict card's capabilities by what the host can do */
1/*
2 * Copyright 2008, Freescale Semiconductor, Inc
3 * Andy Fleming
4 *
5 * Based vaguely on the Linux code
6 *
7 * SPDX-License-Identifier: GPL-2.0+
8 */

--- 1437 unchanged lines hidden (view full) ---

1446 bool uhs_en = (mmc->ocr & OCR_S18R) ? true : false;
1447 uint caps;
1448
1449
1450 err = sd_get_capabilities(mmc);
1451 if (err)
1452 return err;
1453 /* Restrict card's capabilities by what the host can do */
1454 caps = mmc->card_caps & (mmc->cfg->host_caps | MMC_MODE_1BIT);
1454 caps = mmc->card_caps & (mmc->host_caps | MMC_MODE_1BIT);
1455
1456 if (!uhs_en)
1457 caps &= ~UHS_CAPS;
1458
1459 for_each_sd_mode_by_pref(caps, mwt) {
1460 uint *w;
1461
1462 for (w = widths; w < widths + ARRAY_SIZE(widths); w++) {

--- 131 unchanged lines hidden (view full) ---

1594 const struct mode_width_tuning *mwt;
1595 const struct ext_csd_bus_width *ecbw;
1596
1597 err = mmc_get_capabilities(mmc);
1598 if (err)
1599 return err;
1600
1601 /* Restrict card's capabilities by what the host can do */
1455
1456 if (!uhs_en)
1457 caps &= ~UHS_CAPS;
1458
1459 for_each_sd_mode_by_pref(caps, mwt) {
1460 uint *w;
1461
1462 for (w = widths; w < widths + ARRAY_SIZE(widths); w++) {

--- 131 unchanged lines hidden (view full) ---

1594 const struct mode_width_tuning *mwt;
1595 const struct ext_csd_bus_width *ecbw;
1596
1597 err = mmc_get_capabilities(mmc);
1598 if (err)
1599 return err;
1600
1601 /* Restrict card's capabilities by what the host can do */
1602 mmc->card_caps &= (mmc->cfg->host_caps | MMC_MODE_1BIT);
1602 mmc->card_caps &= (mmc->host_caps | MMC_MODE_1BIT);
1603
1604 /* Only version 4 of MMC supports wider bus widths */
1605 if (mmc->version < MMC_VERSION_4)
1606 return 0;
1607
1608 if (!mmc->ext_csd) {
1609 debug("No ext_csd found!\n"); /* this should enver happen */
1610 return -ENOTSUPP;

--- 566 unchanged lines hidden (view full) ---

2177}
2178
2179int mmc_start_init(struct mmc *mmc)
2180{
2181 bool no_card;
2182 bool uhs_en = supports_uhs(mmc->cfg->host_caps);
2183 int err;
2184
1603
1604 /* Only version 4 of MMC supports wider bus widths */
1605 if (mmc->version < MMC_VERSION_4)
1606 return 0;
1607
1608 if (!mmc->ext_csd) {
1609 debug("No ext_csd found!\n"); /* this should enver happen */
1610 return -ENOTSUPP;

--- 566 unchanged lines hidden (view full) ---

2177}
2178
2179int mmc_start_init(struct mmc *mmc)
2180{
2181 bool no_card;
2182 bool uhs_en = supports_uhs(mmc->cfg->host_caps);
2183 int err;
2184
2185 mmc->host_caps = mmc->cfg->host_caps;
2186
2185 /* we pretend there's no card when init is NULL */
2186 no_card = mmc_getcd(mmc) == 0;
2187#if !CONFIG_IS_ENABLED(DM_MMC)
2188 no_card = no_card || (mmc->cfg->ops->init == NULL);
2189#endif
2190 if (no_card) {
2191 mmc->has_init = 0;
2192#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)

--- 7 unchanged lines hidden (view full) ---

2200
2201#ifdef CONFIG_FSL_ESDHC_ADAPTER_IDENT
2202 mmc_adapter_card_type_ident();
2203#endif
2204 err = mmc_power_init(mmc);
2205 if (err)
2206 return err;
2207
2187 /* we pretend there's no card when init is NULL */
2188 no_card = mmc_getcd(mmc) == 0;
2189#if !CONFIG_IS_ENABLED(DM_MMC)
2190 no_card = no_card || (mmc->cfg->ops->init == NULL);
2191#endif
2192 if (no_card) {
2193 mmc->has_init = 0;
2194#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)

--- 7 unchanged lines hidden (view full) ---

2202
2203#ifdef CONFIG_FSL_ESDHC_ADAPTER_IDENT
2204 mmc_adapter_card_type_ident();
2205#endif
2206 err = mmc_power_init(mmc);
2207 if (err)
2208 return err;
2209
2208 err = mmc_power_on(mmc);
2210 err = mmc_power_cycle(mmc);
2211 if (err) {
2212 /*
2213 * if power cycling is not supported, we should not try
2214 * to use the UHS modes, because we wouldn't be able to
2215 * recover from an error during the UHS initialization.
2216 */
2217 debug("Unable to do a full power cycle. Disabling the UHS modes for safety\n");
2218 uhs_en = false;
2219 mmc->host_caps &= ~UHS_CAPS;
2220 err = mmc_power_on(mmc);
2221 }
2209 if (err)
2210 return err;
2211
2212#if CONFIG_IS_ENABLED(DM_MMC)
2213 /* The device has already been probed ready for use */
2214#else
2215 /* made sure it's not NULL earlier */
2216 err = mmc->cfg->ops->init(mmc);

--- 214 unchanged lines hidden ---
2222 if (err)
2223 return err;
2224
2225#if CONFIG_IS_ENABLED(DM_MMC)
2226 /* The device has already been probed ready for use */
2227#else
2228 /* made sure it's not NULL earlier */
2229 err = mmc->cfg->ops->init(mmc);

--- 214 unchanged lines hidden ---