All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Lechner <david@lechnology.com>
To: linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Cc: Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>, Sekhar Nori <nsekhar@ti.com>,
	Kevin Hilman <khilman@kernel.org>,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	Adam Ford <aford173@gmail.com>,
	linux-kernel@vger.kernel.org,
	David Lechner <david@lechnology.com>
Subject: [PATCH v8 40/42] ARM: davinci: add device tree support to timer
Date: Thu, 15 Mar 2018 21:52:56 -0500	[thread overview]
Message-ID: <1521168778-27236-41-git-send-email-david@lechnology.com> (raw)
In-Reply-To: <1521168778-27236-1-git-send-email-david@lechnology.com>

This adds device tree support to the davinci timer so that when clocks
are moved to device tree, the timer will still work.

Signed-off-by: David Lechner <david@lechnology.com>
---

v8 changes:
- none

v7 changes:
- add workaround for platform devices not available in early boot

v6 changes:
- none

 arch/arm/mach-davinci/Kconfig |  1 +
 arch/arm/mach-davinci/time.c  | 31 +++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index ba9912b..da8a039 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -59,6 +59,7 @@ config MACH_DA8XX_DT
 	default y
 	depends on ARCH_DAVINCI_DA850
 	select PINCTRL
+	select TIMER_OF
 	help
 	  Say y here to include support for TI DaVinci DA850 based using
 	  Flattened Device Tree. More information at Documentation/devicetree
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index d6a78f7..590b118 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -17,6 +17,7 @@
 #include <linux/io.h>
 #include <linux/clk.h>
 #include <linux/err.h>
+#include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/sched_clock.h>
 
@@ -405,3 +406,33 @@ void __init davinci_timer_init(struct clk *timer_clk)
 	for (i=0; i< ARRAY_SIZE(timers); i++)
 		timer32_config(&timers[i]);
 }
+
+static int __init of_davinci_timer_init(struct device_node *np)
+{
+	struct clk *clk;
+
+	clk = of_clk_get(np, 0);
+	if (IS_ERR(clk)) {
+		struct of_phandle_args clkspec;
+
+		/*
+		 * Fall back to using ref_clk if the actual clock is not
+		 * available. This currently always happens because platform
+		 * clocks (i.e PLLs and PSCs) are registered as platform
+		 * devices and therefore are not available at this point in
+		 * the boot process.
+		 */
+		clkspec.np = of_find_node_by_name(NULL, "ref_clk");
+		if (IS_ERR(clkspec.np)) {
+			pr_err("%s: No clock available for timer!\n", __func__);
+			return PTR_ERR(clkspec.np);
+		}
+		clk = of_clk_get_from_provider(&clkspec);
+		of_node_put(clkspec.np);
+	}
+
+	davinci_timer_init(clk);
+
+	return 0;
+}
+TIMER_OF_DECLARE(davinci_timer, "ti,davinci-timer", of_davinci_timer_init);
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: david@lechnology.com (David Lechner)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8 40/42] ARM: davinci: add device tree support to timer
Date: Thu, 15 Mar 2018 21:52:56 -0500	[thread overview]
Message-ID: <1521168778-27236-41-git-send-email-david@lechnology.com> (raw)
In-Reply-To: <1521168778-27236-1-git-send-email-david@lechnology.com>

This adds device tree support to the davinci timer so that when clocks
are moved to device tree, the timer will still work.

Signed-off-by: David Lechner <david@lechnology.com>
---

v8 changes:
- none

v7 changes:
- add workaround for platform devices not available in early boot

v6 changes:
- none

 arch/arm/mach-davinci/Kconfig |  1 +
 arch/arm/mach-davinci/time.c  | 31 +++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index ba9912b..da8a039 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -59,6 +59,7 @@ config MACH_DA8XX_DT
 	default y
 	depends on ARCH_DAVINCI_DA850
 	select PINCTRL
+	select TIMER_OF
 	help
 	  Say y here to include support for TI DaVinci DA850 based using
 	  Flattened Device Tree. More information at Documentation/devicetree
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index d6a78f7..590b118 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -17,6 +17,7 @@
 #include <linux/io.h>
 #include <linux/clk.h>
 #include <linux/err.h>
+#include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/sched_clock.h>
 
@@ -405,3 +406,33 @@ void __init davinci_timer_init(struct clk *timer_clk)
 	for (i=0; i< ARRAY_SIZE(timers); i++)
 		timer32_config(&timers[i]);
 }
+
+static int __init of_davinci_timer_init(struct device_node *np)
+{
+	struct clk *clk;
+
+	clk = of_clk_get(np, 0);
+	if (IS_ERR(clk)) {
+		struct of_phandle_args clkspec;
+
+		/*
+		 * Fall back to using ref_clk if the actual clock is not
+		 * available. This currently always happens because platform
+		 * clocks (i.e PLLs and PSCs) are registered as platform
+		 * devices and therefore are not available@this point in
+		 * the boot process.
+		 */
+		clkspec.np = of_find_node_by_name(NULL, "ref_clk");
+		if (IS_ERR(clkspec.np)) {
+			pr_err("%s: No clock available for timer!\n", __func__);
+			return PTR_ERR(clkspec.np);
+		}
+		clk = of_clk_get_from_provider(&clkspec);
+		of_node_put(clkspec.np);
+	}
+
+	davinci_timer_init(clk);
+
+	return 0;
+}
+TIMER_OF_DECLARE(davinci_timer, "ti,davinci-timer", of_davinci_timer_init);
-- 
2.7.4

  parent reply	other threads:[~2018-03-16  2:52 UTC|newest]

Thread overview: 239+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-16  2:52 [PATCH v8 00/42] ARM: davinci: convert to common clock framework​ David Lechner
2018-03-16  2:52 ` David Lechner
2018-03-16  2:52 ` [PATCH v8 01/42] dt-bindings: clock: Add new bindings for TI Davinci PLL clocks David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 02/42] clk: davinci: New driver for davinci " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 16:56   ` Stephen Boyd
2018-03-20 16:56     ` Stephen Boyd
2018-03-20 16:56     ` Stephen Boyd
2018-03-20 16:56     ` Stephen Boyd
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 03/42] clk: davinci: Add platform information for TI DA830 PLL David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 04/42] clk: davinci: Add platform information for TI DA850 PLL David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 05/42] clk: davinci: Add platform information for TI DM355 PLL David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 06/42] clk: davinci: Add platform information for TI DM365 PLL David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 07/42] clk: davinci: Add platform information for TI DM644x PLL David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 08/42] clk: davinci: Add platform information for TI DM646x PLL David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 09/42] dt-bindings: clock: New bindings for TI Davinci PSC David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 10/42] clk: davinci: New driver for davinci PSC clocks David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:03   ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-20 17:03     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 11/42] clk: davinci: Add platform information for TI DA830 PSC David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 12/42] clk: davinci: Add platform information for TI DA850 PSC David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  3:11   ` David Lechner
2018-03-16  3:11     ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 13/42] clk: davinci: Add platform information for TI DM355 PSC David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 16:58   ` Stephen Boyd
2018-03-20 16:58     ` Stephen Boyd
2018-03-20 16:58     ` Stephen Boyd
2018-03-20 16:58     ` Stephen Boyd
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 14/42] clk: davinci: Add platform information for TI DM365 PSC David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 15/42] clk: davinci: Add platform information for TI DM644x PSC David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 16/42] clk: davinci: Add platform information for TI DM646x PSC David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 17/42] dt-bindings: clock: Add bindings for DA8XX CFGCHIP clocks David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 18/42] clk: davinci: New driver for TI " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 16:54   ` Stephen Boyd
2018-03-20 16:54     ` Stephen Boyd
2018-03-20 16:54     ` Stephen Boyd
2018-03-20 16:54     ` Stephen Boyd
2018-03-20 16:57     ` David Lechner
2018-03-20 16:57       ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 19/42] clk: davinci: cfgchip: Add TI DA8XX USB PHY clocks David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-20 17:04   ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-20 17:04     ` Stephen Boyd
2018-03-16  2:52 ` [PATCH v8 20/42] ARM: davinci: pass clock as parameter to davinci_timer_init() David Lechner
2018-03-16  2:52   ` David Lechner
2018-04-05 12:12   ` Sekhar Nori
2018-04-05 12:12     ` Sekhar Nori
2018-04-05 12:12     ` Sekhar Nori
2018-03-16  2:52 ` [PATCH v8 21/42] ARM: davinci: da830: add new clock init using common clock framework David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 22/42] ARM: davinci: da850: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 23/42] ARM: davinci: dm355: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 24/42] ARM: davinci: dm365: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 25/42] ARM: davinci: dm644x: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-04-03 10:26   ` Sekhar Nori
2018-04-03 10:26     ` Sekhar Nori
2018-04-03 10:26     ` Sekhar Nori
2018-04-03 16:30     ` David Lechner
2018-04-03 16:30       ` David Lechner
2018-04-04  6:47       ` Sekhar Nori
2018-04-04  6:47         ` Sekhar Nori
2018-04-04  6:47         ` Sekhar Nori
2018-04-04 12:44         ` Sekhar Nori
2018-04-04 12:44           ` Sekhar Nori
2018-04-04 12:44           ` Sekhar Nori
2018-04-04 16:21     ` David Lechner
2018-04-04 16:21       ` David Lechner
2018-03-16  2:52 ` [PATCH v8 26/42] ARM: davinci: dm646x: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 27/42] ARM: davinci: da8xx: add new USB PHY " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 28/42] ARM: davinci: da8xx: add new sata_refclk " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 29/42] ARM: davinci: remove CONFIG_DAVINCI_RESET_CLOCKS David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 30/42] ARM: davinci_all_defconfig: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 31/42] ARM: davinci: switch to common clock framework David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 32/42] ARM: davinci: da830: Remove legacy clock init David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 33/42] ARM: davinci: da850: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 34/42] ARM: davinci: dm355: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 35/42] ARM: davinci: dm365: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 36/42] ARM: davinci: dm644x: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 37/42] ARM: davinci: dm646x: " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 38/42] ARM: davinci: da8xx: Remove legacy USB and SATA " David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 39/42] ARM: davinci: remove legacy clocks David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` David Lechner [this message]
2018-03-16  2:52   ` [PATCH v8 40/42] ARM: davinci: add device tree support to timer David Lechner
2018-04-05 11:30   ` Sekhar Nori
2018-04-05 11:30     ` Sekhar Nori
2018-04-05 11:30     ` Sekhar Nori
2018-03-16  2:52 ` [PATCH v8 41/42] ARM: davinci: da8xx-dt: switch to device tree clocks David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16  2:52 ` [PATCH v8 42/42] ARM: dts: da850: Add clocks David Lechner
2018-03-16  2:52   ` David Lechner
2018-03-16 17:20   ` David Lechner
2018-03-16 17:20     ` David Lechner
2018-04-02 11:12     ` Sekhar Nori
2018-04-02 11:12       ` Sekhar Nori
2018-04-02 11:12       ` Sekhar Nori
2018-04-02 16:15       ` David Lechner
2018-04-02 16:15         ` David Lechner
2018-04-03  5:43         ` Sekhar Nori
2018-04-03  5:43           ` Sekhar Nori
2018-04-03  5:43           ` Sekhar Nori
2018-03-16  2:59 ` [PATCH v8 00/42] ARM: davinci: convert to common clock framework​ David Lechner
2018-03-16  2:59   ` David Lechner
2018-03-19 13:17 ` Bartosz Golaszewski
2018-03-19 13:17   ` Bartosz Golaszewski
2018-03-19 15:59   ` David Lechner
2018-03-19 15:59     ` David Lechner
2018-03-19 16:11     ` Adam Ford
2018-03-19 16:11       ` Adam Ford
2018-03-19 16:11       ` Adam Ford
2018-03-19 16:14       ` Bartosz Golaszewski
2018-03-19 16:14         ` Bartosz Golaszewski
2018-03-19 16:14         ` Bartosz Golaszewski
2018-03-19 16:15         ` Bartosz Golaszewski
2018-03-19 16:15           ` Bartosz Golaszewski
2018-03-19 17:52           ` Adam Ford
2018-03-19 17:52             ` Adam Ford
2018-03-19 22:54             ` David Lechner
2018-03-19 22:54               ` David Lechner
2018-03-19 22:14       ` David Lechner
2018-03-19 22:14         ` David Lechner
2018-03-20  0:53 ` Stephen Boyd
2018-03-20  0:53   ` Stephen Boyd
2018-03-20  0:53   ` Stephen Boyd
2018-03-20  0:53   ` Stephen Boyd
2018-03-20 13:52   ` Sekhar Nori
2018-03-20 13:52     ` Sekhar Nori
2018-03-20 13:52     ` Sekhar Nori

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=1521168778-27236-41-git-send-email-david@lechnology.com \
    --to=david@lechnology.com \
    --cc=aford173@gmail.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=khilman@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mturquette@baylibre.com \
    --cc=nsekhar@ti.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@codeaurora.org \
    /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.