[PATCH 27/38] mmc: sdhci-of-esdhc: remove platform_suspend/platform_resume callbacks

Ulf Hansson ulf.hansson at linaro.org
Thu Apr 24 00:32:30 PDT 2014


On 23 April 2014 21:08, Russell King <rmk+kernel at arm.linux.org.uk> wrote:
> We don't need these hooks in order to insert code in these paths, we
> can just provide our own handlers and call the main sdhci handlers as
> appropriate.
>
> Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
> ---
>  drivers/mmc/host/sdhci-of-esdhc.c | 55 +++++++++++++++++++++++++--------------
>  1 file changed, 36 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c
> index fcaeae5f55b8..605815e52f5f 100644
> --- a/drivers/mmc/host/sdhci-of-esdhc.c
> +++ b/drivers/mmc/host/sdhci-of-esdhc.c
> @@ -241,20 +241,6 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock)
>         mdelay(1);
>  }
>
> -#ifdef CONFIG_PM
> -static u32 esdhc_proctl;
> -static void esdhc_of_suspend(struct sdhci_host *host)
> -{
> -       esdhc_proctl = sdhci_be32bs_readl(host, SDHCI_HOST_CONTROL);
> -}
> -
> -static void esdhc_of_resume(struct sdhci_host *host)
> -{
> -       esdhc_of_enable_dma(host);
> -       sdhci_be32bs_writel(host, esdhc_proctl, SDHCI_HOST_CONTROL);
> -}
> -#endif
> -
>  static void esdhc_of_platform_init(struct sdhci_host *host)
>  {
>         u32 vvn;
> @@ -302,16 +288,47 @@ static const struct sdhci_ops sdhci_esdhc_ops = {
>         .get_max_clock = esdhc_of_get_max_clock,
>         .get_min_clock = esdhc_of_get_min_clock,
>         .platform_init = esdhc_of_platform_init,
> -#ifdef CONFIG_PM
> -       .platform_suspend = esdhc_of_suspend,
> -       .platform_resume = esdhc_of_resume,
> -#endif
>         .adma_workaround = esdhci_of_adma_workaround,
>         .set_bus_width = esdhc_pltfm_set_bus_width,
>         .reset = sdhci_reset,
>         .set_uhs_signaling = sdhci_set_uhs_signaling,
>  };
>
> +#ifdef CONFIG_PM

This should be CONFIG_PM_SLEEP

> +
> +static u32 esdhc_proctl;
> +static int esdhc_of_suspend(struct device *dev)
> +{
> +       struct sdhci_host *host = dev_get_drvdata(dev);
> +
> +       esdhc_proctl = sdhci_be32bs_readl(host, SDHCI_HOST_CONTROL);
> +
> +       return sdhci_suspend_host(host);
> +}
> +
> +static void esdhc_of_resume(device *dev)
> +{
> +       struct sdhci_host *host = dev_get_drvdata(dev);
> +       int ret = sdhci_resume_host(host);
> +
> +       if (ret == 0) {
> +               /* Isn't this already done by sdhci_resume_host() ? --rmk */
> +               esdhc_of_enable_dma(host);
> +               sdhci_be32bs_writel(host, esdhc_proctl, SDHCI_HOST_CONTROL);
> +       }
> +
> +       return ret;
> +}
> +
> +static const struct dev_pm_ops esdhc_pmops = {
> +       .suspend        = esdhci_of_suspend,
> +       .resume         = esdhci_of_resume,
> +};
> +#define ESDHC_PMOPS (&esdhc_pmops)
> +#else
> +#define ESDHC_PMOPS NULL
> +#endif
> +

I would suggest to use the SIMPLE_DEV_PM_OPS macro to simplify code a bit.

>  static const struct sdhci_pltfm_data sdhci_esdhc_pdata = {
>         /*
>          * card detection could be handled via GPIO
> @@ -373,7 +390,7 @@ static struct platform_driver sdhci_esdhc_driver = {
>                 .name = "sdhci-esdhc",
>                 .owner = THIS_MODULE,
>                 .of_match_table = sdhci_esdhc_of_match,
> -               .pm = SDHCI_PLTFM_PMOPS,
> +               .pm = ESDHC_PMOPS,
>         },
>         .probe = sdhci_esdhc_probe,
>         .remove = sdhci_esdhc_remove,
> --
> 1.8.3.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Kind regards
Ulf Hansson



More information about the linux-arm-kernel mailing list