mmc: sunxi: Drop the init / reset of the controller from set_ios
authorMaxime Ripard <maxime.ripard@bootlin.com>
Mon, 16 Apr 2018 14:23:05 +0000 (16:23 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 2 May 2018 13:08:43 +0000 (15:08 +0200)
Our set_ios hook is, when the card is power up or down, either doing a full
init or put our controller back into a reset mode.

Since we're also doing that in our runtime_pm hooks, and at possibly much
more often, we can drop it from the set_ios, and either rely on our
runtime_pm hooks or our probe to do it.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sunxi-mmc.c

index 0253deb153a4f33901a8d181606172000e223d5b..97c6b79b7d6f40c77bfeaa01d50986faff650fc5 100644 (file)
@@ -939,14 +939,7 @@ static void sunxi_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 {
        struct sunxi_mmc_host *host = mmc_priv(mmc);
 
-       if (ios->power_mode == MMC_POWER_OFF)
-               sunxi_mmc_reset_host(host);
-
        sunxi_mmc_card_power(host, ios);
-
-       if (ios->power_mode == MMC_POWER_UP)
-               sunxi_mmc_init_host(host);
-
        sunxi_mmc_set_bus_width(host, ios->bus_width);
        sunxi_mmc_set_clk(host, ios);
 }
@@ -1401,6 +1394,10 @@ static int sunxi_mmc_probe(struct platform_device *pdev)
        if (ret)
                goto error_free_dma;
 
+       ret = sunxi_mmc_init_host(host);
+       if (ret)
+               goto error_free_dma;
+
        pm_runtime_set_active(&pdev->dev);
        pm_runtime_set_autosuspend_delay(&pdev->dev, 50);
        pm_runtime_use_autosuspend(&pdev->dev);