mmc: sdhci: using common mmc_regulator_set_vqmmc()
authorDong Aisheng <aisheng.dong@nxp.com>
Tue, 12 Jul 2016 07:46:10 +0000 (15:46 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 25 Jul 2016 08:34:52 +0000 (10:34 +0200)
Switch to use the more robust common mmc_regulator_set_vqmmc()
function in MMC core which set the target voltage as close as
possible to target voltage.

We did not re-factor the whole sdhci_start_signal_voltage_switch()
cause we want to keep the original signal switch order between host
and card to avoid potential break.

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci.c

index 2ee8bfa77116e9df9d09c8c0e43c2f00c745fe2f..7894652b992908e2501f549574a0d9795cb1ced2 100644 (file)
@@ -1835,8 +1835,7 @@ static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
                sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2);
 
                if (!IS_ERR(mmc->supply.vqmmc)) {
-                       ret = regulator_set_voltage(mmc->supply.vqmmc, 2700000,
-                                                   3600000);
+                       ret = mmc_regulator_set_vqmmc(mmc, ios);
                        if (ret) {
                                pr_warn("%s: Switching to 3.3V signalling voltage failed\n",
                                        mmc_hostname(mmc));
@@ -1859,8 +1858,7 @@ static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
                if (!(host->flags & SDHCI_SIGNALING_180))
                        return -EINVAL;
                if (!IS_ERR(mmc->supply.vqmmc)) {
-                       ret = regulator_set_voltage(mmc->supply.vqmmc,
-                                       1700000, 1950000);
+                       ret = mmc_regulator_set_vqmmc(mmc, ios);
                        if (ret) {
                                pr_warn("%s: Switching to 1.8V signalling voltage failed\n",
                                        mmc_hostname(mmc));
@@ -1892,8 +1890,7 @@ static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
                if (!(host->flags & SDHCI_SIGNALING_120))
                        return -EINVAL;
                if (!IS_ERR(mmc->supply.vqmmc)) {
-                       ret = regulator_set_voltage(mmc->supply.vqmmc, 1100000,
-                                                   1300000);
+                       ret = mmc_regulator_set_vqmmc(mmc, ios);
                        if (ret) {
                                pr_warn("%s: Switching to 1.2V signalling voltage failed\n",
                                        mmc_hostname(mmc));