Re: [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11 February 2016 at 13:59, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote:
> While accessing the device, make sure it stays active by increasing the
> runtime PM usage count for it.
>
> Let's also defer to enable runtime PM until we really need access to the
> device. This also enables the error path in ->probe() to become simpler.
>
> Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>

Nguyen, sorry for bothering you. Did you manage to test out these three patches?

Even if it doesn't solve the original issue that you reported [1],
perhaps these can anyway be useful as cleanups?

Kind regards
Uffe

[1]
http://www.spinics.net/lists/linux-sh/msg47766.html

> ---
>  drivers/mmc/host/sh_mmcif.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
> index 8d870ce..c6c2a08 100644
> --- a/drivers/mmc/host/sh_mmcif.c
> +++ b/drivers/mmc/host/sh_mmcif.c
> @@ -1519,23 +1519,23 @@ static int sh_mmcif_probe(struct platform_device *pdev)
>
>         platform_set_drvdata(pdev, host);
>
> -       pm_runtime_enable(dev);
> -       host->power = false;
> -
>         host->clk = devm_clk_get(dev, NULL);
>         if (IS_ERR(host->clk)) {
>                 ret = PTR_ERR(host->clk);
>                 dev_err(dev, "cannot get clock: %d\n", ret);
> -               goto err_pm;
> +               goto err_host;
>         }
>
>         ret = clk_prepare_enable(host->clk);
>         if (ret < 0)
> -               goto err_pm;
> +               goto err_host;
>
>         sh_mmcif_clk_setup(host);
>
> -       ret = pm_runtime_resume(dev);
> +       pm_runtime_enable(dev);
> +       host->power = false;
> +
> +       ret = pm_runtime_get_sync(dev);
>         if (ret < 0)
>                 goto err_clk;
>
> @@ -1579,12 +1579,13 @@ static int sh_mmcif_probe(struct platform_device *pdev)
>                  sh_mmcif_readl(host->addr, MMCIF_CE_VERSION) & 0xffff,
>                  clk_get_rate(host->clk) / 1000000UL);
>
> +       pm_runtime_put(dev);
>         clk_disable_unprepare(host->clk);
>         return ret;
>
>  err_clk:
>         clk_disable_unprepare(host->clk);
> -err_pm:
> +       pm_runtime_put_sync(dev);
>         pm_runtime_disable(dev);
>  err_host:
>         mmc_free_host(mmc);
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux