]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: ti: Add ti_dt_clk_name() helper to use clock-output-names
authorTony Lindgren <tony@atomide.com>
Fri, 4 Feb 2022 07:14:47 +0000 (09:14 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:08:17 +0000 (11:08 +0100)
[ Upstream commit 2c1593328d7f02fe49de5ad6b42c36296c9d6922 ]

Let's create the clock alias based on the clock-output-names property if
available. Also the component clock drivers can use ti_dt_clk_name() in
the following patches.

Signed-off-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20220204071449.16762-7-tony@atomide.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>
drivers/clk/ti/clk.c
drivers/clk/ti/clock.h

index 29eafab4353ef16c6006f2887838617a1e67ba72..b941ce0f3c3946f90097fbad4ca48beeeceed788 100644 (file)
@@ -402,6 +402,24 @@ static const struct of_device_id simple_clk_match_table[] __initconst = {
        { }
 };
 
+/**
+ * ti_dt_clk_name - init clock name from first output name or node name
+ * @np: device node
+ *
+ * Use the first clock-output-name for the clock name if found. Fall back
+ * to legacy naming based on node name.
+ */
+const char *ti_dt_clk_name(struct device_node *np)
+{
+       const char *name;
+
+       if (!of_property_read_string_index(np, "clock-output-names", 0,
+                                          &name))
+               return name;
+
+       return np->name;
+}
+
 /**
  * ti_clk_add_aliases - setup clock aliases
  *
@@ -418,7 +436,7 @@ void __init ti_clk_add_aliases(void)
                clkspec.np = np;
                clk = of_clk_get_from_provider(&clkspec);
 
-               ti_clk_add_alias(NULL, clk, np->name);
+               ti_clk_add_alias(NULL, clk, ti_dt_clk_name(np));
        }
 }
 
index f1dd62de2bfcb64e7367b6c8252cee43cbdb81c8..938f34e290ed2b7a325d6d74d95a6646cb9f0c4d 100644 (file)
@@ -214,6 +214,7 @@ 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);
+const char *ti_dt_clk_name(struct device_node *np);
 int ti_clk_add_alias(struct device *dev, struct clk *clk, const char *con);
 void ti_clk_add_aliases(void);