mmc: omap_hsmmc: Handle failure of regulator_get better.
authorNeilBrown <neilb@suse.de>
Wed, 8 Aug 2012 04:06:00 +0000 (00:06 -0400)
committerChris Ball <cjb@laptop.org>
Tue, 4 Sep 2012 17:58:16 +0000 (13:58 -0400)
1/ If regulator_get fails, return an error.  This is important if
   it failed with EPROBE_DEFER, as the probe needs to be deferred.

2/ Don't set .set_power until the regulator has been found, or
   the deferred probe will not bother calling omap_hsmmc_reg_get().

Signed-off-by: NeilBrown <neilb@suse.de>
Acked-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/omap_hsmmc.c

index 3a09f93cc3b6f846a2b4cd327a7fd2a4524e31bc..e1807350d3edc6c00ef53642eaeb9ddfe653770c 100644 (file)
@@ -301,12 +301,12 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
        struct regulator *reg;
        int ocr_value = 0;
 
-       mmc_slot(host).set_power = omap_hsmmc_set_power;
-
        reg = regulator_get(host->dev, "vmmc");
        if (IS_ERR(reg)) {
                dev_dbg(host->dev, "vmmc regulator missing\n");
+               return PTR_ERR(reg);
        } else {
+               mmc_slot(host).set_power = omap_hsmmc_set_power;
                host->vcc = reg;
                ocr_value = mmc_regulator_get_ocrmask(reg);
                if (!mmc_slot(host).ocr_mask) {