clk: ti: change ti_clk_register[_omap_hw]() API
authorDario Binacchi <dario.binacchi@amarulasolutions.com>
Sun, 13 Nov 2022 18:11:46 +0000 (19:11 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:51:57 +0000 (11:51 +0100)
[ Upstream commit 3400d546a741a2b2001d88e7fa29110d45a3930d ]

The ti_clk_register() and ti_clk_register_omap_hw() functions are always
called with the parameter of type "struct device" set to NULL, since the
functions from which they are called always have a parameter of type
"struct device_node". Replacing "struct device" type parameter with
"struct device_node" will allow you to register a TI clock to the common
clock framework by taking advantage of the facilities provided by the
"struct device_node" type. Further, adding the "of_" prefix to the name
of these functions explicitly binds them to the "struct device_node"
type.

The patch has been tested on a Beaglebone board.

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Tested-by: Tony Lindgren <tony@atomide.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20221113181147.1626585-1-dario.binacchi@amarulasolutions.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Stable-dep-of: 7af5b9eadd64 ("clk: ti: fix double free in of_ti_divider_clk_setup()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
12 files changed:
drivers/clk/ti/apll.c
drivers/clk/ti/clk-dra7-atl.c
drivers/clk/ti/clk.c
drivers/clk/ti/clkctrl.c
drivers/clk/ti/clock.h
drivers/clk/ti/composite.c
drivers/clk/ti/divider.c
drivers/clk/ti/dpll.c
drivers/clk/ti/fixed-factor.c
drivers/clk/ti/gate.c
drivers/clk/ti/interface.c
drivers/clk/ti/mux.c

index dd0709c9c2498b57f1993d607cc6cc2980b85fa5..93183287c58db78cad885de7ae96a058705da817 100644 (file)
@@ -160,7 +160,7 @@ static void __init omap_clk_register_apll(void *user,
        ad->clk_bypass = __clk_get_hw(clk);
 
        name = ti_dt_clk_name(node);
-       clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+       clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
        if (!IS_ERR(clk)) {
                of_clk_add_provider(node, of_clk_src_simple_get, clk);
                kfree(init->parent_names);
@@ -400,7 +400,7 @@ static void __init of_omap2_apll_setup(struct device_node *node)
                goto cleanup;
 
        name = ti_dt_clk_name(node);
-       clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+       clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
        if (!IS_ERR(clk)) {
                of_clk_add_provider(node, of_clk_src_simple_get, clk);
                kfree(init);
index ff4d6a9516813c30eb063dde75a6d64cf356014e..1c576599f6dbdd42918ce849524d28629163aef4 100644 (file)
@@ -197,7 +197,7 @@ static void __init of_dra7_atl_clock_setup(struct device_node *node)
 
        init.parent_names = parent_names;
 
-       clk = ti_clk_register(NULL, &clk_hw->hw, name);
+       clk = of_ti_clk_register(node, &clk_hw->hw, name);
 
        if (!IS_ERR(clk)) {
                of_clk_add_provider(node, of_clk_src_simple_get, clk);
index 1dc2f15fb75b2657a48a05392485561cfa3120f1..269355010cdceac07e1cf319132ad011cd802a14 100644 (file)
@@ -475,7 +475,7 @@ void __init ti_clk_add_aliases(void)
                clkspec.np = np;
                clk = of_clk_get_from_provider(&clkspec);
 
-               ti_clk_add_alias(NULL, clk, ti_dt_clk_name(np));
+               ti_clk_add_alias(clk, ti_dt_clk_name(np));
        }
 }
 
@@ -528,7 +528,6 @@ void omap2_clk_enable_init_clocks(const char **clk_names, u8 num_clocks)
 
 /**
  * ti_clk_add_alias - add a clock alias for a TI clock
- * @dev: device alias for this clock
  * @clk: clock handle to create alias for
  * @con: connection ID for this clock
  *
@@ -536,7 +535,7 @@ void omap2_clk_enable_init_clocks(const char **clk_names, u8 num_clocks)
  * and assigns the data to it. Returns 0 if successful, negative error
  * value otherwise.
  */
-int ti_clk_add_alias(struct device *dev, struct clk *clk, const char *con)
+int ti_clk_add_alias(struct clk *clk, const char *con)
 {
        struct clk_lookup *cl;
 
@@ -550,8 +549,6 @@ int ti_clk_add_alias(struct device *dev, struct clk *clk, const char *con)
        if (!cl)
                return -ENOMEM;
 
-       if (dev)
-               cl->dev_id = dev_name(dev);
        cl->con_id = con;
        cl->clk = clk;
 
@@ -561,8 +558,8 @@ int ti_clk_add_alias(struct device *dev, struct clk *clk, const char *con)
 }
 
 /**
- * ti_clk_register - register a TI clock to the common clock framework
- * @dev: device for this clock
+ * of_ti_clk_register - register a TI clock to the common clock framework
+ * @node: device node for this clock
  * @hw: hardware clock handle
  * @con: connection ID for this clock
  *
@@ -570,17 +567,18 @@ int ti_clk_add_alias(struct device *dev, struct clk *clk, const char *con)
  * alias for it. Returns a handle to the registered clock if successful,
  * ERR_PTR value in failure.
  */
-struct clk *ti_clk_register(struct device *dev, struct clk_hw *hw,
-                           const char *con)
+struct clk *of_ti_clk_register(struct device_node *node, struct clk_hw *hw,
+                              const char *con)
 {
        struct clk *clk;
        int ret;
 
-       clk = clk_register(dev, hw);
-       if (IS_ERR(clk))
-               return clk;
+       ret = of_clk_hw_register(node, hw);
+       if (ret)
+               return ERR_PTR(ret);
 
-       ret = ti_clk_add_alias(dev, clk, con);
+       clk = hw->clk;
+       ret = ti_clk_add_alias(clk, con);
        if (ret) {
                clk_unregister(clk);
                return ERR_PTR(ret);
@@ -590,8 +588,8 @@ struct clk *ti_clk_register(struct device *dev, struct clk_hw *hw,
 }
 
 /**
- * ti_clk_register_omap_hw - register a clk_hw_omap to the clock framework
- * @dev: device for this clock
+ * of_ti_clk_register_omap_hw - register a clk_hw_omap to the clock framework
+ * @node: device node for this clock
  * @hw: hardware clock handle
  * @con: connection ID for this clock
  *
@@ -600,13 +598,13 @@ struct clk *ti_clk_register(struct device *dev, struct clk_hw *hw,
  * Returns a handle to the registered clock if successful, ERR_PTR value
  * in failure.
  */
-struct clk *ti_clk_register_omap_hw(struct device *dev, struct clk_hw *hw,
-                                   const char *con)
+struct clk *of_ti_clk_register_omap_hw(struct device_node *node,
+                                      struct clk_hw *hw, const char *con)
 {
        struct clk *clk;
        struct clk_hw_omap *oclk;
 
-       clk = ti_clk_register(dev, hw, con);
+       clk = of_ti_clk_register(node, hw, con);
        if (IS_ERR(clk))
                return clk;
 
index 57611bfb299c1f77f5ef0eb435511e6a4a7ffdf6..87e5624789ef692069343639a51c371bad4db01c 100644 (file)
@@ -308,7 +308,7 @@ _ti_clkctrl_clk_register(struct omap_clkctrl_provider *provider,
        init.ops = ops;
        init.flags = 0;
 
-       clk = ti_clk_register(NULL, clk_hw, init.name);
+       clk = of_ti_clk_register(node, clk_hw, init.name);
        if (IS_ERR_OR_NULL(clk)) {
                ret = -EINVAL;
                goto cleanup;
@@ -689,7 +689,7 @@ clkdm_found:
                init.ops = &omap4_clkctrl_clk_ops;
                hw->hw.init = &init;
 
-               clk = ti_clk_register_omap_hw(NULL, &hw->hw, init.name);
+               clk = of_ti_clk_register_omap_hw(node, &hw->hw, init.name);
                if (IS_ERR_OR_NULL(clk))
                        goto cleanup;
 
index 37ab53339a9be7e43b7ec9420143de4cdf0d082e..16a9f7c2280a57016a55373d8d706c331974ece1 100644 (file)
@@ -199,12 +199,12 @@ extern const struct omap_clkctrl_data dm816_clkctrl_data[];
 
 typedef void (*ti_of_clk_init_cb_t)(void *, struct device_node *);
 
-struct clk *ti_clk_register(struct device *dev, struct clk_hw *hw,
-                           const char *con);
-struct clk *ti_clk_register_omap_hw(struct device *dev, struct clk_hw *hw,
-                                   const char *con);
+struct clk *of_ti_clk_register(struct device_node *node, struct clk_hw *hw,
+                              const char *con);
+struct clk *of_ti_clk_register_omap_hw(struct device_node *node,
+                                      struct clk_hw *hw, const char *con);
 const char *ti_dt_clk_name(struct device_node *np);
-int ti_clk_add_alias(struct device *dev, struct clk *clk, const char *con);
+int ti_clk_add_alias(struct clk *clk, const char *con);
 void ti_clk_add_aliases(void);
 
 void ti_clk_latch(struct clk_omap_reg *reg, s8 shift);
index 77b771dd050a9b87466cd627d44d5a7507c9ce45..b85382c370f7e49ae320c6c47152a2675ca36645 100644 (file)
@@ -176,7 +176,7 @@ static void __init _register_composite(void *user,
                                     &ti_composite_gate_ops, 0);
 
        if (!IS_ERR(clk)) {
-               ret = ti_clk_add_alias(NULL, clk, name);
+               ret = ti_clk_add_alias(clk, name);
                if (ret) {
                        clk_unregister(clk);
                        goto cleanup;
index 488d3da60c317a1041a4608f4b66f0fd6de131fa..768a1f3398b47d03c642c28b47ea82d2f1827218 100644 (file)
@@ -326,7 +326,7 @@ static struct clk *_register_divider(struct device_node *node,
        div->hw.init = &init;
 
        /* register the clock */
-       clk = ti_clk_register(NULL, &div->hw, name);
+       clk = of_ti_clk_register(node, &div->hw, name);
 
        if (IS_ERR(clk))
                kfree(div);
index 8ed43bc6b7cc8dfa004d98ca467fb46b1c7e68ff..403ec81f561b6c3c5536392655ac75a9afc33f9c 100644 (file)
@@ -187,7 +187,7 @@ static void __init _register_dpll(void *user,
 
        /* register the clock */
        name = ti_dt_clk_name(node);
-       clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+       clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
        if (!IS_ERR(clk)) {
                of_clk_add_provider(node, of_clk_src_simple_get, clk);
@@ -259,7 +259,7 @@ static void _register_dpll_x2(struct device_node *node,
 #endif
 
        /* register the clock */
-       clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+       clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
        if (IS_ERR(clk))
                kfree(clk_hw);
index c80cee0f5d3d7c64e1aa351238de4a48eacb2193..c102c53201686cf722c5843b8b803f290b832264 100644 (file)
@@ -54,7 +54,7 @@ static void __init of_ti_fixed_factor_clk_setup(struct device_node *node)
        if (!IS_ERR(clk)) {
                of_clk_add_provider(node, of_clk_src_simple_get, clk);
                of_ti_clk_autoidle_setup(node);
-               ti_clk_add_alias(NULL, clk, clk_name);
+               ti_clk_add_alias(clk, clk_name);
        }
 }
 CLK_OF_DECLARE(ti_fixed_factor_clk, "ti,fixed-factor-clock",
index 307702921431d1a4547963d19c365ee6310bb21e..8e477d50d0fdbfabc67ec4bfbe162864a1559ad5 100644 (file)
@@ -85,7 +85,7 @@ static int omap36xx_gate_clk_enable_with_hsdiv_restore(struct clk_hw *hw)
        return ret;
 }
 
-static struct clk *_register_gate(struct device *dev, const char *name,
+static struct clk *_register_gate(struct device_node *node, const char *name,
                                  const char *parent_name, unsigned long flags,
                                  struct clk_omap_reg *reg, u8 bit_idx,
                                  u8 clk_gate_flags, const struct clk_ops *ops,
@@ -115,7 +115,7 @@ static struct clk *_register_gate(struct device *dev, const char *name,
 
        init.flags = flags;
 
-       clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+       clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
        if (IS_ERR(clk))
                kfree(clk_hw);
@@ -158,7 +158,7 @@ static void __init _of_ti_gate_clk_setup(struct device_node *node,
                clk_gate_flags |= INVERT_ENABLE;
 
        name = ti_dt_clk_name(node);
-       clk = _register_gate(NULL, name, parent_name, flags, &reg,
+       clk = _register_gate(node, name, parent_name, flags, &reg,
                             enable_bit, clk_gate_flags, ops, hw_ops);
 
        if (!IS_ERR(clk))
index f47beeea211e8b0e5481168c8e58130ec5320b47..172301c646f85a62b400f7993caa86ff53cd0425 100644 (file)
@@ -24,7 +24,8 @@ static const struct clk_ops ti_interface_clk_ops = {
        .is_enabled     = &omap2_dflt_clk_is_enabled,
 };
 
-static struct clk *_register_interface(struct device *dev, const char *name,
+static struct clk *_register_interface(struct device_node *node,
+                                      const char *name,
                                       const char *parent_name,
                                       struct clk_omap_reg *reg, u8 bit_idx,
                                       const struct clk_hw_omap_ops *ops)
@@ -49,7 +50,7 @@ static struct clk *_register_interface(struct device *dev, const char *name,
        init.num_parents = 1;
        init.parent_names = &parent_name;
 
-       clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+       clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
        if (IS_ERR(clk))
                kfree(clk_hw);
@@ -80,7 +81,7 @@ static void __init _of_ti_interface_clk_setup(struct device_node *node,
        }
 
        name = ti_dt_clk_name(node);
-       clk = _register_interface(NULL, name, parent_name, &reg,
+       clk = _register_interface(node, name, parent_name, &reg,
                                  enable_bit, ops);
 
        if (!IS_ERR(clk))
index 46b45b3e8319adf347f06b4fcfa9e36f4b7d42c8..1ebafa386be6150be385ad9172b682eacc9c109b 100644 (file)
@@ -118,7 +118,7 @@ const struct clk_ops ti_clk_mux_ops = {
        .restore_context = clk_mux_restore_context,
 };
 
-static struct clk *_register_mux(struct device *dev, const char *name,
+static struct clk *_register_mux(struct device_node *node, const char *name,
                                 const char * const *parent_names,
                                 u8 num_parents, unsigned long flags,
                                 struct clk_omap_reg *reg, u8 shift, u32 mask,
@@ -148,7 +148,7 @@ static struct clk *_register_mux(struct device *dev, const char *name,
        mux->table = table;
        mux->hw.init = &init;
 
-       clk = ti_clk_register(dev, &mux->hw, name);
+       clk = of_ti_clk_register(node, &mux->hw, name);
 
        if (IS_ERR(clk))
                kfree(mux);
@@ -207,7 +207,7 @@ static void of_mux_clk_setup(struct device_node *node)
        mask = (1 << fls(mask)) - 1;
 
        name = ti_dt_clk_name(node);
-       clk = _register_mux(NULL, name, parent_names, num_parents,
+       clk = _register_mux(node, name, parent_names, num_parents,
                            flags, &reg, shift, mask, latch, clk_mux_flags,
                            NULL);