All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tero Kristo <t-kristo@ti.com>
To: <linux-omap@vger.kernel.org>, <linux-clk@vger.kernel.org>,
	<sboyd@codeaurora.org>, <mturquette@baylibre.com>,
	<tony@atomide.com>
Cc: <linux-arm-kernel@lists.infradead.org>
Subject: [RESEND PATCHv2 01/28] clk: ti: add ti_clk_get helper API
Date: Mon, 13 Jun 2016 22:04:35 +0300	[thread overview]
Message-ID: <1465844702-12200-2-git-send-email-t-kristo@ti.com> (raw)
In-Reply-To: <1465844702-12200-1-git-send-email-t-kristo@ti.com>

The API can be used to fetch directly DT clocks based on name. Using
this new API allows getting rid of most of the DT_CLK() entries under
drivers/clk/ti.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
 drivers/clk/ti/clk.c   | 35 +++++++++++++++++++++++++++++------
 include/linux/clk/ti.h |  2 ++
 2 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/drivers/clk/ti/clk.c b/drivers/clk/ti/clk.c
index 5fcf247..3dcf97e 100644
--- a/drivers/clk/ti/clk.c
+++ b/drivers/clk/ti/clk.c
@@ -68,6 +68,33 @@ static u32 clk_memmap_readl(void __iomem *reg)
 }
 
 /**
+ * ti_clk_get - lookup a TI clock handle
+ * @name: clock to find
+ *
+ * Searches for a TI clock handle. Will first attempt to search for a
+ * clock based on a DT node name, but if this fails, will revert to
+ * looking up a clock alias. Returns the pointer to the clock handle,
+ * or ERR_PTR in failure.
+ */
+struct clk *ti_clk_get(const char *name)
+{
+	struct of_phandle_args clkspec;
+	struct device_node *node;
+	struct clk *clk;
+
+	if (of_have_populated_dt()) {
+		node = of_find_node_by_name(NULL, name);
+		clkspec.np = node;
+		clk = of_clk_get_from_provider(&clkspec);
+
+		if (!IS_ERR(clk))
+			return clk;
+	}
+
+	return clk_get(NULL, name);
+}
+
+/**
  * ti_clk_setup_ll_ops - setup low level clock operations
  * @ops: low level clock ops descriptor
  *
@@ -102,14 +129,10 @@ int ti_clk_setup_ll_ops(struct ti_clk_ll_ops *ops)
 void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
 {
 	struct ti_dt_clk *c;
-	struct device_node *node;
 	struct clk *clk;
-	struct of_phandle_args clkspec;
 
 	for (c = oclks; c->node_name != NULL; c++) {
-		node = of_find_node_by_name(NULL, c->node_name);
-		clkspec.np = node;
-		clk = of_clk_get_from_provider(&clkspec);
+		clk = ti_clk_get(c->node_name);
 
 		if (!IS_ERR(clk)) {
 			c->lk.clk = clk;
@@ -446,7 +469,7 @@ void omap2_clk_enable_init_clocks(const char **clk_names, u8 num_clocks)
 	int i;
 
 	for (i = 0; i < num_clocks; i++) {
-		init_clk = clk_get(NULL, clk_names[i]);
+		init_clk = ti_clk_get(clk_names[i]);
 		if (WARN(IS_ERR(init_clk), "could not find init clock %s\n",
 			 clk_names[i]))
 			continue;
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index 6110fe0..331b81b 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -294,6 +294,8 @@ struct ti_clk_features {
 void ti_clk_setup_features(struct ti_clk_features *features);
 const struct ti_clk_features *ti_clk_get_features(void);
 
+struct clk *ti_clk_get(const char *name);
+
 extern const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll;
 
 #ifdef CONFIG_ATAGS
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: Tero Kristo <t-kristo@ti.com>
To: linux-omap@vger.kernel.org, linux-clk@vger.kernel.org,
	sboyd@codeaurora.org, mturquette@baylibre.com, tony@atomide.com
Cc: linux-arm-kernel@lists.infradead.org
Subject: [RESEND PATCHv2 01/28] clk: ti: add ti_clk_get helper API
Date: Mon, 13 Jun 2016 22:04:35 +0300	[thread overview]
Message-ID: <1465844702-12200-2-git-send-email-t-kristo@ti.com> (raw)
In-Reply-To: <1465844702-12200-1-git-send-email-t-kristo@ti.com>

The API can be used to fetch directly DT clocks based on name. Using
this new API allows getting rid of most of the DT_CLK() entries under
drivers/clk/ti.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
 drivers/clk/ti/clk.c   | 35 +++++++++++++++++++++++++++++------
 include/linux/clk/ti.h |  2 ++
 2 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/drivers/clk/ti/clk.c b/drivers/clk/ti/clk.c
index 5fcf247..3dcf97e 100644
--- a/drivers/clk/ti/clk.c
+++ b/drivers/clk/ti/clk.c
@@ -68,6 +68,33 @@ static u32 clk_memmap_readl(void __iomem *reg)
 }
 
 /**
+ * ti_clk_get - lookup a TI clock handle
+ * @name: clock to find
+ *
+ * Searches for a TI clock handle. Will first attempt to search for a
+ * clock based on a DT node name, but if this fails, will revert to
+ * looking up a clock alias. Returns the pointer to the clock handle,
+ * or ERR_PTR in failure.
+ */
+struct clk *ti_clk_get(const char *name)
+{
+	struct of_phandle_args clkspec;
+	struct device_node *node;
+	struct clk *clk;
+
+	if (of_have_populated_dt()) {
+		node = of_find_node_by_name(NULL, name);
+		clkspec.np = node;
+		clk = of_clk_get_from_provider(&clkspec);
+
+		if (!IS_ERR(clk))
+			return clk;
+	}
+
+	return clk_get(NULL, name);
+}
+
+/**
  * ti_clk_setup_ll_ops - setup low level clock operations
  * @ops: low level clock ops descriptor
  *
@@ -102,14 +129,10 @@ int ti_clk_setup_ll_ops(struct ti_clk_ll_ops *ops)
 void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
 {
 	struct ti_dt_clk *c;
-	struct device_node *node;
 	struct clk *clk;
-	struct of_phandle_args clkspec;
 
 	for (c = oclks; c->node_name != NULL; c++) {
-		node = of_find_node_by_name(NULL, c->node_name);
-		clkspec.np = node;
-		clk = of_clk_get_from_provider(&clkspec);
+		clk = ti_clk_get(c->node_name);
 
 		if (!IS_ERR(clk)) {
 			c->lk.clk = clk;
@@ -446,7 +469,7 @@ void omap2_clk_enable_init_clocks(const char **clk_names, u8 num_clocks)
 	int i;
 
 	for (i = 0; i < num_clocks; i++) {
-		init_clk = clk_get(NULL, clk_names[i]);
+		init_clk = ti_clk_get(clk_names[i]);
 		if (WARN(IS_ERR(init_clk), "could not find init clock %s\n",
 			 clk_names[i]))
 			continue;
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index 6110fe0..331b81b 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -294,6 +294,8 @@ struct ti_clk_features {
 void ti_clk_setup_features(struct ti_clk_features *features);
 const struct ti_clk_features *ti_clk_get_features(void);
 
+struct clk *ti_clk_get(const char *name);
+
 extern const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll;
 
 #ifdef CONFIG_ATAGS
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: t-kristo@ti.com (Tero Kristo)
To: linux-arm-kernel@lists.infradead.org
Subject: [RESEND PATCHv2 01/28] clk: ti: add ti_clk_get helper API
Date: Mon, 13 Jun 2016 22:04:35 +0300	[thread overview]
Message-ID: <1465844702-12200-2-git-send-email-t-kristo@ti.com> (raw)
In-Reply-To: <1465844702-12200-1-git-send-email-t-kristo@ti.com>

The API can be used to fetch directly DT clocks based on name. Using
this new API allows getting rid of most of the DT_CLK() entries under
drivers/clk/ti.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
 drivers/clk/ti/clk.c   | 35 +++++++++++++++++++++++++++++------
 include/linux/clk/ti.h |  2 ++
 2 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/drivers/clk/ti/clk.c b/drivers/clk/ti/clk.c
index 5fcf247..3dcf97e 100644
--- a/drivers/clk/ti/clk.c
+++ b/drivers/clk/ti/clk.c
@@ -68,6 +68,33 @@ static u32 clk_memmap_readl(void __iomem *reg)
 }
 
 /**
+ * ti_clk_get - lookup a TI clock handle
+ * @name: clock to find
+ *
+ * Searches for a TI clock handle. Will first attempt to search for a
+ * clock based on a DT node name, but if this fails, will revert to
+ * looking up a clock alias. Returns the pointer to the clock handle,
+ * or ERR_PTR in failure.
+ */
+struct clk *ti_clk_get(const char *name)
+{
+	struct of_phandle_args clkspec;
+	struct device_node *node;
+	struct clk *clk;
+
+	if (of_have_populated_dt()) {
+		node = of_find_node_by_name(NULL, name);
+		clkspec.np = node;
+		clk = of_clk_get_from_provider(&clkspec);
+
+		if (!IS_ERR(clk))
+			return clk;
+	}
+
+	return clk_get(NULL, name);
+}
+
+/**
  * ti_clk_setup_ll_ops - setup low level clock operations
  * @ops: low level clock ops descriptor
  *
@@ -102,14 +129,10 @@ int ti_clk_setup_ll_ops(struct ti_clk_ll_ops *ops)
 void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
 {
 	struct ti_dt_clk *c;
-	struct device_node *node;
 	struct clk *clk;
-	struct of_phandle_args clkspec;
 
 	for (c = oclks; c->node_name != NULL; c++) {
-		node = of_find_node_by_name(NULL, c->node_name);
-		clkspec.np = node;
-		clk = of_clk_get_from_provider(&clkspec);
+		clk = ti_clk_get(c->node_name);
 
 		if (!IS_ERR(clk)) {
 			c->lk.clk = clk;
@@ -446,7 +469,7 @@ void omap2_clk_enable_init_clocks(const char **clk_names, u8 num_clocks)
 	int i;
 
 	for (i = 0; i < num_clocks; i++) {
-		init_clk = clk_get(NULL, clk_names[i]);
+		init_clk = ti_clk_get(clk_names[i]);
 		if (WARN(IS_ERR(init_clk), "could not find init clock %s\n",
 			 clk_names[i]))
 			continue;
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index 6110fe0..331b81b 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -294,6 +294,8 @@ struct ti_clk_features {
 void ti_clk_setup_features(struct ti_clk_features *features);
 const struct ti_clk_features *ti_clk_get_features(void);
 
+struct clk *ti_clk_get(const char *name);
+
 extern const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll;
 
 #ifdef CONFIG_ATAGS
-- 
1.9.1

  reply	other threads:[~2016-06-13 19:04 UTC|newest]

Thread overview: 129+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-13 19:04 [RESEND PATCHv2 00/28] clk: ti: hwmod clock type support Tero Kristo
2016-06-13 19:04 ` Tero Kristo
2016-06-13 19:04 ` Tero Kristo
2016-06-13 19:04 ` Tero Kristo [this message]
2016-06-13 19:04   ` [RESEND PATCHv2 01/28] clk: ti: add ti_clk_get helper API Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-28  6:47   ` Tony Lindgren
2016-06-28  6:47     ` Tony Lindgren
2016-06-29  6:17     ` Tero Kristo
2016-06-29  6:17       ` Tero Kristo
2016-06-29  6:17       ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 02/28] clk: ti: dpll: use ti_clk_get to fetch ref/bypass clocks Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 03/28] ARM: OMAP2+: omap_device: create clock alias purely from DT data Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-28  7:00   ` Tony Lindgren
2016-06-28  7:00     ` Tony Lindgren
2016-06-29  7:08     ` Tero Kristo
2016-06-29  7:08       ` Tero Kristo
2016-06-29  7:08       ` Tero Kristo
2016-06-29  7:10       ` Tero Kristo
2016-06-29  7:10         ` Tero Kristo
2016-06-29  7:10         ` Tero Kristo
2016-06-29  7:54         ` Tony Lindgren
2016-06-29  7:54           ` Tony Lindgren
2016-06-29  9:00           ` Tero Kristo
2016-06-29  9:00             ` Tero Kristo
2016-06-29  9:00             ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 04/28] ARM: OMAP2+: hwmod: use new ti_clk_get API to search for clock handles Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-28  6:57   ` Tony Lindgren
2016-06-28  6:57     ` Tony Lindgren
2016-06-29  6:16     ` Tero Kristo
2016-06-29  6:16       ` Tero Kristo
2016-06-29  6:16       ` Tero Kristo
2016-06-29  7:01       ` Tony Lindgren
2016-06-29  7:01         ` Tony Lindgren
2016-06-13 19:04 ` [RESEND PATCHv2 05/28] ARM: OMAP2+: clock: use the new ti_clk_get for fetching clocks Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 06/28] ARM: OMAP2+: hwmod: fetch main_clk based on hwmod name Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-28  7:03   ` Tony Lindgren
2016-06-28  7:03     ` Tony Lindgren
2016-06-13 19:04 ` [RESEND PATCHv2 07/28] ARM: OMAP2+: timer: change order of hwmod data handling Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-28  7:04   ` Tony Lindgren
2016-06-28  7:04     ` Tony Lindgren
2016-06-13 19:04 ` [RESEND PATCHv2 08/28] ARM: OMAP2+: clockdomain: add usecounting support to autoidle APIs Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 23:31   ` Nishanth Menon
2016-06-13 23:31     ` Nishanth Menon
2016-06-13 23:31     ` Nishanth Menon
2016-06-14  6:31     ` Tero Kristo
2016-06-14  6:31       ` Tero Kristo
2016-06-14  6:31       ` Tero Kristo
2016-06-28  7:06   ` Tony Lindgren
2016-06-28  7:06     ` Tony Lindgren
2016-06-13 19:04 ` [RESEND PATCHv2 09/28] ARM: AM33xx: fix module_wait_ready without clkctrl register Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-28  7:08   ` Tony Lindgren
2016-06-28  7:08     ` Tony Lindgren
2016-06-13 19:04 ` [RESEND PATCHv2 10/28] clk: ti: omap2: transition to usage of ti_clk_get Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 11/28] clk: ti: am33xx: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 12/28] clk: ti: omap3: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 13/28] clk: ti: am43xx: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 14/28] clk: ti: omap4: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 15/28] clk: ti: omap5: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 16/28] clk: ti: dra7: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 17/28] clk: ti: dm814x: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 18/28] clk: ti: dm816x: cleanup any unnecessary clock aliases Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 19/28] clk: ti: remove un-used definitions from public clk_hw_omap struct Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 20/28] clk: ti: mux: export mux clock APIs locally Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 21/28] clk: ti: am33xx: fix timer3/6 init time setup for module clocks Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 22/28] dt-bindings: clk: ti: Document module clock type Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 23/28] clk: ti: add support for omap4 module clocks Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 24/28] ARM: dts: omap4: add hwmod " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04 ` [RESEND PATCHv2 25/28] ARM: dts: am33xx: " Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:04   ` Tero Kristo
2016-06-13 19:05 ` [RESEND PATCHv2 26/28] ARM: dts: am43xx: " Tero Kristo
2016-06-13 19:05   ` Tero Kristo
2016-06-13 19:05   ` Tero Kristo
2016-06-13 19:05 ` [RESEND PATCHv2 27/28] ARM: dts: omap5: " Tero Kristo
2016-06-13 19:05   ` Tero Kristo
2016-06-13 19:05   ` Tero Kristo
2016-06-13 19:05 ` [RESEND PATCHv2 28/28] ARM: dts: dra7: " Tero Kristo
2016-06-13 19:05   ` Tero Kristo
2016-06-13 19:05   ` Tero Kristo
2016-06-20 12:10 ` [RESEND PATCHv2 00/28] clk: ti: hwmod clock type support Tony Lindgren
2016-06-20 12:10   ` Tony Lindgren
2016-06-20 12:10   ` Tony Lindgren

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=1465844702-12200-2-git-send-email-t-kristo@ti.com \
    --to=t-kristo@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@codeaurora.org \
    --cc=tony@atomide.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.