All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: linux-clk@vger.kernel.org
Cc: Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Tero Kristo <t-kristo@ti.com>,
	linux-omap@vger.kernel.org
Subject: [PATCH 4/8] clk: ti: Add ti_find_clock_provider() to use clock-output-names
Date: Fri,  4 Feb 2022 09:14:45 +0200	[thread overview]
Message-ID: <20220204071449.16762-5-tony@atomide.com> (raw)
In-Reply-To: <20220204071449.16762-1-tony@atomide.com>

Let's add ti_find_clock_provider() so we can use clock-output-names
to name the clock provider instead of relying on non-standard devicetree
node names.

Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/clk/ti/clk.c | 43 +++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 41 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/ti/clk.c b/drivers/clk/ti/clk.c
--- a/drivers/clk/ti/clk.c
+++ b/drivers/clk/ti/clk.c
@@ -119,12 +119,51 @@ int ti_clk_setup_ll_ops(struct ti_clk_ll_ops *ops)
 	return 0;
 }
 
+/*
+ * Eventually we could standardize to using '_' for clk-*.c files to follow the
+ * TRM naming and leave out the tmp name here.
+ */
+static struct device_node *ti_find_clock_provider(struct device_node *from,
+						  const char *name)
+{
+	struct device_node *np;
+	bool found = false;
+	const char *n;
+	char *tmp;
+
+	tmp = kstrdup(name, GFP_KERNEL);
+	if (!tmp)
+		return NULL;
+	strreplace(tmp, '-', '_');
+
+	/* Node named "clock" with "clock-output-names" */
+	for_each_of_allnodes_from(from, np) {
+		if (of_property_read_string_index(np, "clock-output-names",
+						  0, &n))
+			continue;
+
+		if (!strncmp(n, tmp, strlen(tmp))) {
+			found = true;
+			break;
+		}
+	}
+	of_node_put(from);
+	kfree(tmp);
+
+	if (found)
+		return np;
+
+	/* Fall back to using old node name base provider name */
+	return of_find_node_by_name(from, name);
+}
+
 /**
  * ti_dt_clocks_register - register DT alias clocks during boot
  * @oclks: list of clocks to register
  *
  * Register alias or non-standard DT clock entries during boot. By
- * default, DT clocks are found based on their node name. If any
+ * default, DT clocks are found based on their clock-output-names
+ * property, or the clock node name for legacy cases. If any
  * additional con-id / dev-id -> clock mapping is required, use this
  * function to list these.
  */
@@ -168,7 +207,7 @@ void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
 		if (num_args && clkctrl_nodes_missing)
 			continue;
 
-		node = of_find_node_by_name(NULL, buf);
+		node = ti_find_clock_provider(NULL, buf);
 		if (num_args && compat_mode) {
 			parent = node;
 			child = of_get_child_by_name(parent, "clock");
-- 
2.35.1

  parent reply	other threads:[~2022-02-04  7:15 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-04  7:14 [PATCH 0/8] Clock changes for TI dts reg and node name issues Tony Lindgren
2022-02-04  7:14 ` [PATCH 1/8] clk: ti: Constify clkctrl_name Tony Lindgren
2022-03-11  3:30   ` Stephen Boyd
2022-02-04  7:14 ` [PATCH 2/8] clk: ti: Preserve node in ti_dt_clocks_register() Tony Lindgren
2022-03-11  3:31   ` Stephen Boyd
2022-02-04  7:14 ` [PATCH 3/8] clk: ti: Optionally parse IO address from parent clock node Tony Lindgren
2022-03-11  3:31   ` Stephen Boyd
2022-02-04  7:14 ` Tony Lindgren [this message]
2022-03-11  3:31   ` [PATCH 4/8] clk: ti: Add ti_find_clock_provider() to use clock-output-names Stephen Boyd
2022-02-04  7:14 ` [PATCH 5/8] clk: ti: Use clock-output-names for clkctrl Tony Lindgren
2022-03-11  3:31   ` Stephen Boyd
2022-02-04  7:14 ` [PATCH 6/8] clk: ti: Add ti_dt_clk_name() helper to use clock-output-names Tony Lindgren
2022-03-11  3:31   ` Stephen Boyd
2022-02-04  7:14 ` [PATCH 7/8] clk: ti: Update pll and clockdomain clocks to use ti_dt_clk_name() Tony Lindgren
2022-03-11  3:31   ` Stephen Boyd
2022-02-04  7:14 ` [PATCH 8/8] clk: ti: Update component " Tony Lindgren
2022-03-11  3:32   ` Stephen Boyd

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220204071449.16762-5-tony@atomide.com \
    --to=tony@atomide.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@codeaurora.org \
    --cc=t-kristo@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.