clk: ti: Use clock-output-names for clkctrl
authorTony Lindgren <tony@atomide.com>
Fri, 4 Feb 2022 07:14:46 +0000 (09:14 +0200)
committerStephen Boyd <sboyd@kernel.org>
Fri, 11 Mar 2022 02:55:59 +0000 (18:55 -0800)
Use clock-output-names devicetree property for clkctrl clocks if
available.

Signed-off-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20220204071449.16762-6-tony@atomide.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/ti/clkctrl.c

index 0049828db0e97d8186470c825a0d831d849ba64c..535f35b21204f87787d6abb9de6deb672c91d4a2 100644 (file)
@@ -469,14 +469,32 @@ static void __init _clkctrl_add_provider(void *data,
        of_clk_add_hw_provider(np, _ti_omap4_clkctrl_xlate, data);
 }
 
-/* Get clock name based on compatible string for clkctrl */
-static char * __init clkctrl_get_name(struct device_node *np)
+/*
+ * Get clock name based on "clock-output-names" property or the
+ * compatible property for clkctrl.
+ */
+static const char * __init clkctrl_get_name(struct device_node *np)
 {
        struct property *prop;
        const int prefix_len = 11;
        const char *compat;
+       const char *output;
        char *name;
 
+       if (!of_property_read_string_index(np, "clock-output-names", 0,
+                                          &output)) {
+               const char *end;
+               int len;
+
+               len = strlen(output);
+               end = strstr(output, "_clkctrl");
+               if (end)
+                       len -= strlen(end);
+               name = kstrndup(output, len, GFP_KERNEL);
+
+               return name;
+       }
+
        of_property_for_each_string(np, "compatible", prop, compat) {
                if (!strncmp("ti,clkctrl-", compat, prefix_len)) {
                        /* Two letter minimum name length for l3, l4 etc */