diff mbox series

[v1] clk: tegra: Implement disable_unused() of tegra_clk_sdmmc_mux_ops

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

Commit Message

Dmitry Osipenko July 17, 2021, 11:27 a.m. UTC
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>
---
 drivers/clk/tegra/clk-sdmmc-mux.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Dmitry Osipenko July 22, 2021, 7:06 p.m. UTC | #1
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.
Stephen Boyd July 27, 2021, 9:54 p.m. UTC | #2
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 mbox series

Patch

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,
 };