}
DEFINE_SHOW_ATTRIBUTE(rzg2l_mod_clock_mstop);
-static int rzg2l_mod_clock_endisable(struct clk_hw *hw, bool enable)
+static int rzg2l_mod_clock_endisable_helper(struct clk_hw *hw, bool enable,
+ bool set_mstop_state)
{
struct mod_clock *clock = to_mod_clock(hw);
struct rzg2l_cpg_priv *priv = clock->priv;
scoped_guard(spinlock_irqsave, &priv->rmw_lock) {
if (enable) {
writel(value, priv->base + CLK_ON_R(reg));
- rzg2l_mod_clock_module_set_state(clock, false);
+ if (set_mstop_state)
+ rzg2l_mod_clock_module_set_state(clock, false);
} else {
- rzg2l_mod_clock_module_set_state(clock, true);
+ if (set_mstop_state)
+ rzg2l_mod_clock_module_set_state(clock, true);
writel(value, priv->base + CLK_ON_R(reg));
}
}
return error;
}
+static int rzg2l_mod_clock_endisable(struct clk_hw *hw, bool enable)
+{
+ return rzg2l_mod_clock_endisable_helper(hw, enable, true);
+}
+
static int rzg2l_mod_clock_enable(struct clk_hw *hw)
{
struct mod_clock *clock = to_mod_clock(hw);