[PATCH 2/2] mmc: host: omap_hsmmc: Fix MMC for omap3 legacy booting

Ulf Hansson ulf.hansson at linaro.org
Wed Oct 7 07:06:40 PDT 2015


On 7 October 2015 at 15:22, Tony Lindgren <tony at atomide.com> wrote:
> Starting with commit 7d607f917008 ("mmc: host: omap_hsmmc: use
> devm_regulator_get_optional() for vmmc") MMC on omap3 stopped working
> for legacy booting.
>
> This is because legacy booting sets up some of the resource in the
> platform init code, and for optional regulators always seem to
> return -EPROBE_DEFER for the legacy booting.
>
> Let's fix the issue by checking for device tree based booting for
> now. Then when omap3 boots in device tree only mode, this patch
> can be just reverted.
>
> Fixes: 7d607f917008 ("mmc: host: omap_hsmmc: use
> devm_regulator_get_optional() for vmmc")
> Cc: Felipe Balbi <balbi at ti.com>
> Cc: Kishon Vijay Abraham I <kishon at ti.com>
> Cc: Nishanth Menon <nm at ti.com>
> Cc: Russell King <rmk+kernel at arm.linux.org.uk>
> Signed-off-by: Tony Lindgren <tony at atomide.com>

Thanks, applied for fixes!

Kind regards
Uffe

> ---
>  drivers/mmc/host/omap_hsmmc.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index ae3a2b9..7fb0753 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -478,7 +478,7 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
>         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)
> +               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));
> @@ -493,7 +493,7 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
>         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)
> +               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));
> @@ -503,7 +503,7 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
>         host->pbias = devm_regulator_get_optional(host->dev, "pbias");
>         if (IS_ERR(host->pbias)) {
>                 ret = PTR_ERR(host->pbias);
> -               if (ret != -ENODEV)
> +               if ((ret != -ENODEV) && host->dev->of_node)
>                         return ret;
>                 dev_dbg(host->dev, "unable to get pbias regulator %ld\n",
>                         PTR_ERR(host->pbias));
> --
> 2.1.4
>



More information about the linux-arm-kernel mailing list