clk: cs2000-cp: make clock skip setting configurable
authorDaniel Mack <daniel@zonque.org>
Tue, 25 Jan 2022 09:33:34 +0000 (10:33 +0100)
committerStephen Boyd <sboyd@kernel.org>
Tue, 25 Jan 2022 22:23:16 +0000 (14:23 -0800)
The clock skip function of this chip is not necessarily desirable in
all hardware appliances. This patch makes the feature configurable
through a device-tree property.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Link: https://lore.kernel.org/r/20220125093336.226787-8-daniel@zonque.org
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk-cs2000-cp.c

index bd030e1..9f99e39 100644 (file)
@@ -81,6 +81,7 @@ struct cs2000_priv {
 
        bool dynamic_mode;
        bool lf_ratio;
+       bool clk_skip;
 
        /* suspend/resume */
        unsigned long saved_rate;
@@ -133,7 +134,7 @@ static int cs2000_enable_dev_config(struct cs2000_priv *priv, bool enable)
                return ret;
 
        ret = cs2000_bset(priv, FUNC_CFG1, CLKSKIPEN,
-                         enable ? CLKSKIPEN : 0);
+                         (enable && priv->clk_skip) ? CLKSKIPEN : 0);
        if (ret < 0)
                return ret;
 
@@ -464,6 +465,8 @@ static int cs2000_clk_register(struct cs2000_priv *priv)
        if (ret < 0)
                return ret;
 
+       priv->clk_skip = of_property_read_bool(np, "cirrus,clock-skip");
+
        ref_clk_rate = clk_get_rate(priv->ref_clk);
        ret = cs2000_ref_clk_bound_rate(priv, ref_clk_rate);
        if (ret < 0)