Loading drivers/mmc/core/core.c +13 −0 Original line number Diff line number Diff line Loading @@ -2230,6 +2230,14 @@ void mmc_ungate_clock(struct mmc_host *host) WARN_ON(host->ios.clock); /* This call will also set host->clk_gated to false */ __mmc_set_clock(host, host->clk_old); /* * We have seen that host controller's clock tuning circuit may * go out of sync if controller clocks are gated. * To workaround this issue, we are triggering retuning of the * tuning circuit after ungating the controller clocks. */ if (host->sdr104_wa) mmc_retune_needed(host); } } Loading Loading @@ -2272,6 +2280,8 @@ int mmc_execute_tuning(struct mmc_card *card) if (err) pr_err("%s: tuning execution failed\n", mmc_hostname(host)); else mmc_retune_enable(host); return err; } Loading Loading @@ -2774,6 +2784,7 @@ void mmc_power_up(struct mmc_host *host, u32 ocr) return; mmc_host_clk_hold(host); mmc_retune_disable(host); host->ios.vdd = fls(ocr) - 1; if (mmc_host_is_spi(host)) Loading Loading @@ -2821,6 +2832,7 @@ void mmc_power_off(struct mmc_host *host) return; mmc_host_clk_hold(host); mmc_retune_disable(host); host->ios.clock = 0; host->ios.vdd = 0; Loading Loading @@ -3701,6 +3713,7 @@ static int mmc_do_hw_reset(struct mmc_host *host, int check) return -EOPNOTSUPP; mmc_host_clk_hold(host); mmc_retune_disable(host); mmc_set_clock(host, host->f_init); if (mmc_card_mmc(card) && host->ops->hw_reset) Loading Loading
drivers/mmc/core/core.c +13 −0 Original line number Diff line number Diff line Loading @@ -2230,6 +2230,14 @@ void mmc_ungate_clock(struct mmc_host *host) WARN_ON(host->ios.clock); /* This call will also set host->clk_gated to false */ __mmc_set_clock(host, host->clk_old); /* * We have seen that host controller's clock tuning circuit may * go out of sync if controller clocks are gated. * To workaround this issue, we are triggering retuning of the * tuning circuit after ungating the controller clocks. */ if (host->sdr104_wa) mmc_retune_needed(host); } } Loading Loading @@ -2272,6 +2280,8 @@ int mmc_execute_tuning(struct mmc_card *card) if (err) pr_err("%s: tuning execution failed\n", mmc_hostname(host)); else mmc_retune_enable(host); return err; } Loading Loading @@ -2774,6 +2784,7 @@ void mmc_power_up(struct mmc_host *host, u32 ocr) return; mmc_host_clk_hold(host); mmc_retune_disable(host); host->ios.vdd = fls(ocr) - 1; if (mmc_host_is_spi(host)) Loading Loading @@ -2821,6 +2832,7 @@ void mmc_power_off(struct mmc_host *host) return; mmc_host_clk_hold(host); mmc_retune_disable(host); host->ios.clock = 0; host->ios.vdd = 0; Loading Loading @@ -3701,6 +3713,7 @@ static int mmc_do_hw_reset(struct mmc_host *host, int check) return -EOPNOTSUPP; mmc_host_clk_hold(host); mmc_retune_disable(host); mmc_set_clock(host, host->f_init); if (mmc_card_mmc(card) && host->ops->hw_reset) Loading