Commit ce473d5b authored by Michał Zegan's avatar Michał Zegan Committed by Ulf Hansson

mmc: meson-gx: fix error path when driver initialization fails before enabling clocks

This patch fixes the case where meson_mmc_probe function fails before
core_clk is enabled.
Originally, that would result in a try to disable the core clock, and if
it was not already enabled, it would result in a kernel warning.
This issue is similar to the one with div_clk.
Fix it by introducing another error path used only between successfully
enabling the core clock, and successfully enabling the div clock.
That would ensure that core clock is disabled only if it was enabled before.
Signed-off-by: default avatarMichał Zegan <webczat@webczatnet.pl>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent e8ce6742
...@@ -743,7 +743,7 @@ static int meson_mmc_probe(struct platform_device *pdev) ...@@ -743,7 +743,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
ret = meson_mmc_clk_init(host); ret = meson_mmc_clk_init(host);
if (ret) if (ret)
goto free_host; goto err_core_clk;
/* Stop execution */ /* Stop execution */
writel(0, host->regs + SD_EMMC_START); writel(0, host->regs + SD_EMMC_START);
...@@ -783,8 +783,9 @@ static int meson_mmc_probe(struct platform_device *pdev) ...@@ -783,8 +783,9 @@ static int meson_mmc_probe(struct platform_device *pdev)
err_div_clk: err_div_clk:
clk_disable_unprepare(host->cfg_div_clk); clk_disable_unprepare(host->cfg_div_clk);
free_host: err_core_clk:
clk_disable_unprepare(host->core_clk); clk_disable_unprepare(host->core_clk);
free_host:
mmc_free_host(mmc); mmc_free_host(mmc);
return ret; return ret;
} }
......
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