Message ID | 20210717112742.7196-1-digetx@gmail.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | [v1] clk: tegra: Implement disable_unused() of tegra_clk_sdmmc_mux_ops | expand |
17.07.2021 14:27, Dmitry Osipenko пишет: > Implement disable_unused() callback of tegra_clk_sdmmc_mux_ops to fix > imbalanced disabling of the unused MMC clock on Tegra210 Jetson Nano. > > Fixes: c592c8a28f58 ("clk: tegra: Fix refcounting of gate clocks") > Reported-by: Jon Hunter <jonathanh@nvidia.com> # T210 Nano > Tested-by: Jon Hunter <jonathanh@nvidia.com> # T210 Nano > Acked-by: Jon Hunter <jonathanh@nvidia.com> > Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > --- Stephen, please feel free to take this patch for the rc3 fixes.
Quoting Dmitry Osipenko (2021-07-17 04:27:42) > Implement disable_unused() callback of tegra_clk_sdmmc_mux_ops to fix > imbalanced disabling of the unused MMC clock on Tegra210 Jetson Nano. > > Fixes: c592c8a28f58 ("clk: tegra: Fix refcounting of gate clocks") > Reported-by: Jon Hunter <jonathanh@nvidia.com> # T210 Nano > Tested-by: Jon Hunter <jonathanh@nvidia.com> # T210 Nano > Acked-by: Jon Hunter <jonathanh@nvidia.com> > Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > --- Applied to clk-fixes
diff --git a/drivers/clk/tegra/clk-sdmmc-mux.c b/drivers/clk/tegra/clk-sdmmc-mux.c index 316912d3b1a4..4f2c3309eea4 100644 --- a/drivers/clk/tegra/clk-sdmmc-mux.c +++ b/drivers/clk/tegra/clk-sdmmc-mux.c @@ -194,6 +194,15 @@ static void clk_sdmmc_mux_disable(struct clk_hw *hw) gate_ops->disable(gate_hw); } +static void clk_sdmmc_mux_disable_unused(struct clk_hw *hw) +{ + struct tegra_sdmmc_mux *sdmmc_mux = to_clk_sdmmc_mux(hw); + const struct clk_ops *gate_ops = sdmmc_mux->gate_ops; + struct clk_hw *gate_hw = &sdmmc_mux->gate.hw; + + gate_ops->disable_unused(gate_hw); +} + static void clk_sdmmc_mux_restore_context(struct clk_hw *hw) { struct clk_hw *parent = clk_hw_get_parent(hw); @@ -218,6 +227,7 @@ static const struct clk_ops tegra_clk_sdmmc_mux_ops = { .is_enabled = clk_sdmmc_mux_is_enabled, .enable = clk_sdmmc_mux_enable, .disable = clk_sdmmc_mux_disable, + .disable_unused = clk_sdmmc_mux_disable_unused, .restore_context = clk_sdmmc_mux_restore_context, };