mmc: host: omap_hsmmc: use mmc_regulator_get_supply() to get regulators
authorKishon Vijay Abraham I <kishon@ti.com>
Wed, 7 Jun 2017 08:36:11 +0000 (14:06 +0530)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 20 Jun 2017 08:30:41 +0000 (10:30 +0200)
In preparation for using the generic mmc binding for io regulator
("vqmmc"), use mmc_regulator_get_supply() to get vmmc and vqmmc regulators.
Only if "vqmmc" regulator isn't found, fallback to use "vmmc_aux"
regulator.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/omap_hsmmc.c

index de82ac0a87e2f18b57415d8082f527858655cda1..7c12f3715676fc0e23855a01c4d8dfdc1365c742 100644 (file)
@@ -466,34 +466,27 @@ static int omap_hsmmc_disable_boot_regulators(struct omap_hsmmc_host *host)
 
 static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
 {
-       int ocr_value = 0;
        int ret;
        struct mmc_host *mmc = host->mmc;
 
        if (mmc_pdata(host)->set_power)
                return 0;
 
-       mmc->supply.vmmc = devm_regulator_get_optional(host->dev, "vmmc");
-       if (IS_ERR(mmc->supply.vmmc)) {
-               ret = PTR_ERR(mmc->supply.vmmc);
-               if ((ret != -ENODEV) && host->dev->of_node)
-                       return ret;
-               dev_dbg(host->dev, "unable to get vmmc regulator %ld\n",
-                       PTR_ERR(mmc->supply.vmmc));
-       } else {
-               ocr_value = mmc_regulator_get_ocrmask(mmc->supply.vmmc);
-               if (ocr_value > 0)
-                       mmc_pdata(host)->ocr_mask = ocr_value;
-       }
+       ret = mmc_regulator_get_supply(mmc);
+       if (ret == -EPROBE_DEFER)
+               return ret;
 
        /* Allow an aux regulator */
-       mmc->supply.vqmmc = devm_regulator_get_optional(host->dev, "vmmc_aux");
        if (IS_ERR(mmc->supply.vqmmc)) {
-               ret = PTR_ERR(mmc->supply.vqmmc);
-               if ((ret != -ENODEV) && host->dev->of_node)
-                       return ret;
-               dev_dbg(host->dev, "unable to get vmmc_aux regulator %ld\n",
-                       PTR_ERR(mmc->supply.vqmmc));
+               mmc->supply.vqmmc = devm_regulator_get_optional(host->dev,
+                                                               "vmmc_aux");
+               if (IS_ERR(mmc->supply.vqmmc)) {
+                       ret = PTR_ERR(mmc->supply.vqmmc);
+                       if ((ret != -ENODEV) && host->dev->of_node)
+                               return ret;
+                       dev_dbg(host->dev, "unable to get vmmc_aux regulator %ld\n",
+                               PTR_ERR(mmc->supply.vqmmc));
+               }
        }
 
        host->pbias = devm_regulator_get_optional(host->dev, "pbias");
@@ -2143,7 +2136,8 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
        if (ret)
                goto err_irq;
 
-       mmc->ocr_avail = mmc_pdata(host)->ocr_mask;
+       if (!mmc->ocr_avail)
+               mmc->ocr_avail = mmc_pdata(host)->ocr_mask;
 
        omap_hsmmc_disable_irq(host);