Message ID | 20170216145222.1577-2-webczat@webczatnet.pl (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Michał Zegan <webczat@webczatnet.pl> writes: > At the end of function meson_mmc_clk_init, the cfg_div clock was > prepared, enabled and configured, but then immediately disabled due to bogus if statements. > That made later calls to clk_disable_unprepare executed during module removal to fail with a kernel warning. > Fix that by changing the code to disable clock only when it failed to be configured. > > Signed-off-by: Michał Zegan <webczat@webczatnet.pl> I believe this one is not needed any more after Heiner's cleanups? Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
W dniu 17.02.2017 o 20:44, Kevin Hilman pisze: > Michał Zegan <webczat@webczatnet.pl> writes: > >> At the end of function meson_mmc_clk_init, the cfg_div clock was >> prepared, enabled and configured, but then immediately disabled due to bogus if statements. >> That made later calls to clk_disable_unprepare executed during module removal to fail with a kernel warning. >> Fix that by changing the code to disable clock only when it failed to be configured. >> >> Signed-off-by: Michał Zegan <webczat@webczatnet.pl> > I believe this one is not needed any more after Heiner's cleanups? I think it is not needed, yes. > > Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c index 09739352834c..d444b6bfa02b 100644 --- a/drivers/mmc/host/meson-gx-mmc.c +++ b/drivers/mmc/host/meson-gx-mmc.c @@ -324,11 +324,12 @@ static int meson_mmc_clk_init(struct meson_host *host) writel(cfg, host->regs + SD_EMMC_CFG); ret = clk_prepare_enable(host->cfg_div_clk); - if (!ret) + if (!ret) { ret = meson_mmc_clk_set(host, f_min); - if (!ret) - clk_disable_unprepare(host->cfg_div_clk); + if (ret) + clk_disable_unprepare(host->cfg_div_clk); + } return ret; }
At the end of function meson_mmc_clk_init, the cfg_div clock was prepared, enabled and configured, but then immediately disabled due to bogus if statements. That made later calls to clk_disable_unprepare executed during module removal to fail with a kernel warning. Fix that by changing the code to disable clock only when it failed to be configured. Signed-off-by: Michał Zegan <webczat@webczatnet.pl> --- drivers/mmc/host/meson-gx-mmc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)