clk: ti: Optionally parse IO address from parent clock node
authorTony Lindgren <tony@atomide.com>
Fri, 4 Feb 2022 07:14:44 +0000 (09:14 +0200)
committerStephen Boyd <sboyd@kernel.org>
Fri, 11 Mar 2022 02:55:59 +0000 (18:55 -0800)
If no reg property is specified for a TI clock, let's try to use the
parent clock node IO address. This way we can avoid duplicate devicetree
reg properties that cause warnings for unique_unit_address.

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

index 29eafab..a0ddf16 100644 (file)
@@ -274,6 +274,8 @@ int ti_clk_get_reg_addr(struct device_node *node, int index,
        for (i = 0; i < CLK_MAX_MEMMAPS; i++) {
                if (clocks_node_ptr[i] == node->parent)
                        break;
+               if (clocks_node_ptr[i] == node->parent->parent)
+                       break;
        }
 
        if (i == CLK_MAX_MEMMAPS) {
@@ -284,8 +286,12 @@ int ti_clk_get_reg_addr(struct device_node *node, int index,
        reg->index = i;
 
        if (of_property_read_u32_index(node, "reg", index, &val)) {
-               pr_err("%pOFn must have reg[%d]!\n", node, index);
-               return -EINVAL;
+               if (of_property_read_u32_index(node->parent, "reg",
+                                              index, &val)) {
+                       pr_err("%pOFn or parent must have reg[%d]!\n",
+                              node, index);
+                       return -EINVAL;
+               }
        }
 
        reg->offset = val;