diff mbox series

clk: Check ops are available in clk_gate_restore_context

Message ID 20240120100711.2832897-1-cristian.marussi@arm.com (mailing list archive)
State New, archived
Headers show
Series clk: Check ops are available in clk_gate_restore_context | expand

Commit Message

Cristian Marussi Jan. 20, 2024, 10:07 a.m. UTC
Add a check in clk_gate_restore_context() to assure that the clock enable
and disable ops are available before calling them.

CC: Michael Turquette <mturquette@baylibre.com>
CC: Stephen Boyd <sboyd@kernel.org>
CC: linux-clk@vger.kernel.org
Fixes: 9be766274db4 ("clk: Clean up suspend/resume coding style")
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
Spotted this by code inspection.
I may be missing something, though, given my limited familiarity with CLK.
---
 drivers/clk/clk.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Stephen Boyd April 9, 2024, 11:31 a.m. UTC | #1
Quoting Cristian Marussi (2024-01-20 02:07:11)
> Add a check in clk_gate_restore_context() to assure that the clock enable
> and disable ops are available before calling them.
> 
> CC: Michael Turquette <mturquette@baylibre.com>
> CC: Stephen Boyd <sboyd@kernel.org>
> CC: linux-clk@vger.kernel.org
> Fixes: 9be766274db4 ("clk: Clean up suspend/resume coding style")
> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> ---
> Spotted this by code inspection.
> I may be missing something, though, given my limited familiarity with CLK.

It assumes this is for a gate clk, which has enable/disable clk ops.
Also, only TI uses this code and I suggest you don't use it.
diff mbox series

Patch

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index f0940af485a5..79b90a8099d7 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1200,9 +1200,11 @@  void clk_gate_restore_context(struct clk_hw *hw)
 	struct clk_core *core = hw->core;
 
 	if (core->enable_count)
-		core->ops->enable(hw);
+		if (core->ops->enable)
+			core->ops->enable(hw);
 	else
-		core->ops->disable(hw);
+		if (core->ops->disable)
+			core->ops->disable(hw);
 }
 EXPORT_SYMBOL_GPL(clk_gate_restore_context);