Commit bb2726b5 authored by Tony Lindgren's avatar Tony Lindgren Committed by Ulf Hansson

Revert "mmc: host: omap_hsmmc: use regulator_is_enabled to find pbias status"

This reverts commit c55d7a05.

Without reverting this commit we get "unbalanced disables for pbias_mmc_omap4"
errors on omap4430. It seems that 4430 and 4460 behave in a different way for
the PBIAS regulator registers and until that has been debugged further we
cannot rely on the regulator status registers in hardare on 4430.

Fixes: 7d607f91 ("mmc: host: omap_hsmmc: use
devm_regulator_get_optional() for vmmc")
Cc: Felipe Balbi <balbi@ti.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Nishanth Menon <nm@ti.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
Tested-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 049e6dde
...@@ -182,6 +182,7 @@ struct omap_hsmmc_host { ...@@ -182,6 +182,7 @@ struct omap_hsmmc_host {
struct clk *fclk; struct clk *fclk;
struct clk *dbclk; struct clk *dbclk;
struct regulator *pbias; struct regulator *pbias;
bool pbias_enabled;
void __iomem *base; void __iomem *base;
int vqmmc_enabled; int vqmmc_enabled;
resource_size_t mapbase; resource_size_t mapbase;
...@@ -328,20 +329,22 @@ static int omap_hsmmc_set_pbias(struct omap_hsmmc_host *host, bool power_on, ...@@ -328,20 +329,22 @@ static int omap_hsmmc_set_pbias(struct omap_hsmmc_host *host, bool power_on,
return ret; return ret;
} }
if (!regulator_is_enabled(host->pbias)) { if (host->pbias_enabled == 0) {
ret = regulator_enable(host->pbias); ret = regulator_enable(host->pbias);
if (ret) { if (ret) {
dev_err(host->dev, "pbias reg enable fail\n"); dev_err(host->dev, "pbias reg enable fail\n");
return ret; return ret;
} }
host->pbias_enabled = 1;
} }
} else { } else {
if (regulator_is_enabled(host->pbias)) { if (host->pbias_enabled == 1) {
ret = regulator_disable(host->pbias); ret = regulator_disable(host->pbias);
if (ret) { if (ret) {
dev_err(host->dev, "pbias reg disable fail\n"); dev_err(host->dev, "pbias reg disable fail\n");
return ret; return ret;
} }
host->pbias_enabled = 0;
} }
} }
...@@ -2053,6 +2056,7 @@ static int omap_hsmmc_probe(struct platform_device *pdev) ...@@ -2053,6 +2056,7 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
host->base = base + pdata->reg_offset; host->base = base + pdata->reg_offset;
host->power_mode = MMC_POWER_OFF; host->power_mode = MMC_POWER_OFF;
host->next_data.cookie = 1; host->next_data.cookie = 1;
host->pbias_enabled = 0;
host->vqmmc_enabled = 0; host->vqmmc_enabled = 0;
ret = omap_hsmmc_gpio_init(mmc, host, pdata); ret = omap_hsmmc_gpio_init(mmc, host, pdata);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment