mmc.c (83d290c56fab2d38cd1ab4c4cc7099559c1d5046) | mmc.c (65117182543e58ba69f4abdc998423798137cbae) |
---|---|
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Copyright 2008, Freescale Semiconductor, Inc 4 * Andy Fleming 5 * 6 * Based vaguely on the Linux code 7 */ 8 --- 515 unchanged lines hidden (view full) --- 524 udelay(100); 525 else if (err) 526 return -ETIMEDOUT; 527 528 /* 529 * During a signal voltage level switch, the clock must be gated 530 * for 5 ms according to the SD spec 531 */ | 1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Copyright 2008, Freescale Semiconductor, Inc 4 * Andy Fleming 5 * 6 * Based vaguely on the Linux code 7 */ 8 --- 515 unchanged lines hidden (view full) --- 524 udelay(100); 525 else if (err) 526 return -ETIMEDOUT; 527 528 /* 529 * During a signal voltage level switch, the clock must be gated 530 * for 5 ms according to the SD spec 531 */ |
532 mmc_set_clock(mmc, mmc->clock, true); | 532 mmc_set_clock(mmc, mmc->clock, MMC_CLK_DISABLE); |
533 534 err = mmc_set_signal_voltage(mmc, signal_voltage); 535 if (err) 536 return err; 537 538 /* Keep clock gated for at least 10 ms, though spec only says 5 ms */ 539 mdelay(10); | 533 534 err = mmc_set_signal_voltage(mmc, signal_voltage); 535 if (err) 536 return err; 537 538 /* Keep clock gated for at least 10 ms, though spec only says 5 ms */ 539 mdelay(10); |
540 mmc_set_clock(mmc, mmc->clock, false); | 540 mmc_set_clock(mmc, mmc->clock, MMC_CLK_ENABLE); |
541 542 /* 543 * Failure to switch is indicated by the card holding 544 * dat[0:3] low. Wait for at least 1 ms according to spec 545 */ 546 err = mmc_wait_dat0(mmc, 1, 1000); 547 if (err == -ENOSYS) 548 udelay(1000); --- 1118 unchanged lines hidden (view full) --- 1667 1668 /* configure the bus mode (card) */ 1669 err = sd_set_card_speed(mmc, mwt->mode); 1670 if (err) 1671 goto error; 1672 1673 /* configure the bus mode (host) */ 1674 mmc_select_mode(mmc, mwt->mode); | 541 542 /* 543 * Failure to switch is indicated by the card holding 544 * dat[0:3] low. Wait for at least 1 ms according to spec 545 */ 546 err = mmc_wait_dat0(mmc, 1, 1000); 547 if (err == -ENOSYS) 548 udelay(1000); --- 1118 unchanged lines hidden (view full) --- 1667 1668 /* configure the bus mode (card) */ 1669 err = sd_set_card_speed(mmc, mwt->mode); 1670 if (err) 1671 goto error; 1672 1673 /* configure the bus mode (host) */ 1674 mmc_select_mode(mmc, mwt->mode); |
1675 mmc_set_clock(mmc, mmc->tran_speed, false); | 1675 mmc_set_clock(mmc, mmc->tran_speed, 1676 MMC_CLK_ENABLE); |
1676 1677#ifdef MMC_SUPPORTS_TUNING 1678 /* execute tuning if needed */ 1679 if (mwt->tuning && !mmc_host_is_spi(mmc)) { 1680 err = mmc_execute_tuning(mmc, 1681 mwt->tuning); 1682 if (err) { 1683 pr_debug("tuning failed\n"); --- 8 unchanged lines hidden (view full) --- 1692 pr_warn("unable to read ssr\n"); 1693#endif 1694 if (!err) 1695 return 0; 1696 1697error: 1698 /* revert to a safer bus speed */ 1699 mmc_select_mode(mmc, SD_LEGACY); | 1677 1678#ifdef MMC_SUPPORTS_TUNING 1679 /* execute tuning if needed */ 1680 if (mwt->tuning && !mmc_host_is_spi(mmc)) { 1681 err = mmc_execute_tuning(mmc, 1682 mwt->tuning); 1683 if (err) { 1684 pr_debug("tuning failed\n"); --- 8 unchanged lines hidden (view full) --- 1693 pr_warn("unable to read ssr\n"); 1694#endif 1695 if (!err) 1696 return 0; 1697 1698error: 1699 /* revert to a safer bus speed */ 1700 mmc_select_mode(mmc, SD_LEGACY); |
1700 mmc_set_clock(mmc, mmc->tran_speed, false); | 1701 mmc_set_clock(mmc, mmc->tran_speed, 1702 MMC_CLK_ENABLE); |
1701 } 1702 } 1703 } 1704 1705 pr_err("unable to select a mode\n"); 1706 return -ENOTSUPP; 1707} 1708 --- 144 unchanged lines hidden (view full) --- 1853 if (mmc->version < MMC_VERSION_4) 1854 return 0; 1855 1856 if (!mmc->ext_csd) { 1857 pr_debug("No ext_csd found!\n"); /* this should enver happen */ 1858 return -ENOTSUPP; 1859 } 1860 | 1703 } 1704 } 1705 } 1706 1707 pr_err("unable to select a mode\n"); 1708 return -ENOTSUPP; 1709} 1710 --- 144 unchanged lines hidden (view full) --- 1855 if (mmc->version < MMC_VERSION_4) 1856 return 0; 1857 1858 if (!mmc->ext_csd) { 1859 pr_debug("No ext_csd found!\n"); /* this should enver happen */ 1860 return -ENOTSUPP; 1861 } 1862 |
1861 mmc_set_clock(mmc, mmc->legacy_speed, false); | 1863 mmc_set_clock(mmc, mmc->legacy_speed, MMC_CLK_ENABLE); |
1862 1863 for_each_mmc_mode_by_pref(card_caps, mwt) { 1864 for_each_supported_width(card_caps & mwt->widths, 1865 mmc_is_mode_ddr(mwt->mode), ecbw) { 1866 enum mmc_voltage old_voltage; 1867 pr_debug("trying mode %s width %d (at %d MHz)\n", 1868 mmc_mode_name(mwt->mode), 1869 bus_width(ecbw->cap), --- 26 unchanged lines hidden (view full) --- 1896 EXT_CSD_BUS_WIDTH, 1897 ecbw->ext_csd_bits); 1898 if (err) 1899 goto error; 1900 } 1901 1902 /* configure the bus mode (host) */ 1903 mmc_select_mode(mmc, mwt->mode); | 1864 1865 for_each_mmc_mode_by_pref(card_caps, mwt) { 1866 for_each_supported_width(card_caps & mwt->widths, 1867 mmc_is_mode_ddr(mwt->mode), ecbw) { 1868 enum mmc_voltage old_voltage; 1869 pr_debug("trying mode %s width %d (at %d MHz)\n", 1870 mmc_mode_name(mwt->mode), 1871 bus_width(ecbw->cap), --- 26 unchanged lines hidden (view full) --- 1898 EXT_CSD_BUS_WIDTH, 1899 ecbw->ext_csd_bits); 1900 if (err) 1901 goto error; 1902 } 1903 1904 /* configure the bus mode (host) */ 1905 mmc_select_mode(mmc, mwt->mode); |
1904 mmc_set_clock(mmc, mmc->tran_speed, false); | 1906 mmc_set_clock(mmc, mmc->tran_speed, MMC_CLK_ENABLE); |
1905#ifdef MMC_SUPPORTS_TUNING 1906 1907 /* execute tuning if needed */ 1908 if (mwt->tuning) { 1909 err = mmc_execute_tuning(mmc, mwt->tuning); 1910 if (err) { 1911 pr_debug("tuning failed\n"); 1912 goto error; --- 508 unchanged lines hidden (view full) --- 2421 err = mmc_set_signal_voltage(mmc, MMC_SIGNAL_VOLTAGE_330); 2422 if (err != 0) 2423 err = mmc_set_signal_voltage(mmc, MMC_SIGNAL_VOLTAGE_180); 2424 if (err != 0) 2425 pr_warn("mmc: failed to set signal voltage\n"); 2426 2427 mmc_select_mode(mmc, MMC_LEGACY); 2428 mmc_set_bus_width(mmc, 1); | 1907#ifdef MMC_SUPPORTS_TUNING 1908 1909 /* execute tuning if needed */ 1910 if (mwt->tuning) { 1911 err = mmc_execute_tuning(mmc, mwt->tuning); 1912 if (err) { 1913 pr_debug("tuning failed\n"); 1914 goto error; --- 508 unchanged lines hidden (view full) --- 2423 err = mmc_set_signal_voltage(mmc, MMC_SIGNAL_VOLTAGE_330); 2424 if (err != 0) 2425 err = mmc_set_signal_voltage(mmc, MMC_SIGNAL_VOLTAGE_180); 2426 if (err != 0) 2427 pr_warn("mmc: failed to set signal voltage\n"); 2428 2429 mmc_select_mode(mmc, MMC_LEGACY); 2430 mmc_set_bus_width(mmc, 1); |
2429 mmc_set_clock(mmc, 0, false); | 2431 mmc_set_clock(mmc, 0, MMC_CLK_ENABLE); |
2430} 2431 2432static int mmc_power_on(struct mmc *mmc) 2433{ 2434#if CONFIG_IS_ENABLED(DM_MMC) && CONFIG_IS_ENABLED(DM_REGULATOR) 2435 if (mmc->vmmc_supply) { 2436 int ret = regulator_set_enable(mmc->vmmc_supply, true); 2437 2438 if (ret) { 2439 puts("Error enabling VMMC supply\n"); 2440 return ret; 2441 } 2442 } 2443#endif 2444 return 0; 2445} 2446 2447static int mmc_power_off(struct mmc *mmc) 2448{ | 2432} 2433 2434static int mmc_power_on(struct mmc *mmc) 2435{ 2436#if CONFIG_IS_ENABLED(DM_MMC) && CONFIG_IS_ENABLED(DM_REGULATOR) 2437 if (mmc->vmmc_supply) { 2438 int ret = regulator_set_enable(mmc->vmmc_supply, true); 2439 2440 if (ret) { 2441 puts("Error enabling VMMC supply\n"); 2442 return ret; 2443 } 2444 } 2445#endif 2446 return 0; 2447} 2448 2449static int mmc_power_off(struct mmc *mmc) 2450{ |
2449 mmc_set_clock(mmc, 0, true); | 2451 mmc_set_clock(mmc, 0, MMC_CLK_DISABLE); |
2450#if CONFIG_IS_ENABLED(DM_MMC) && CONFIG_IS_ENABLED(DM_REGULATOR) 2451 if (mmc->vmmc_supply) { 2452 int ret = regulator_set_enable(mmc->vmmc_supply, false); 2453 2454 if (ret) { 2455 pr_debug("Error disabling VMMC supply\n"); 2456 return ret; 2457 } --- 294 unchanged lines hidden --- | 2452#if CONFIG_IS_ENABLED(DM_MMC) && CONFIG_IS_ENABLED(DM_REGULATOR) 2453 if (mmc->vmmc_supply) { 2454 int ret = regulator_set_enable(mmc->vmmc_supply, false); 2455 2456 if (ret) { 2457 pr_debug("Error disabling VMMC supply\n"); 2458 return ret; 2459 } --- 294 unchanged lines hidden --- |