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 v9 25/27] ARM: davinci: add device tree support to timer
Date: Thu, 26 Apr 2018 19:17:43 -0500	[thread overview]
Message-ID: <20180427001745.4116-26-david@lechnology.com> (raw)
In-Reply-To: <20180427001745.4116-1-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>
---

v9 changes:
- none (there were supposed to be changed, but apparently they got squashed
  into the next commit - will fix on the next round)

v8 changes:
- none

v7 changes:
- rebased
- add davinci prefix to commit message

v6 changes:
- rebased

 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 ba9912b4dfab..da8a039d65f9 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 7ea3db0ff062..7a8c6fada644 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>
 
@@ -397,3 +398,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.17.0

WARNING: multiple messages have this Message-ID (diff)
From: david@lechnology.com (David Lechner)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v9 25/27] ARM: davinci: add device tree support to timer
Date: Thu, 26 Apr 2018 19:17:43 -0500	[thread overview]
Message-ID: <20180427001745.4116-26-david@lechnology.com> (raw)
In-Reply-To: <20180427001745.4116-1-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>
---

v9 changes:
- none (there were supposed to be changed, but apparently they got squashed
  into the next commit - will fix on the next round)

v8 changes:
- none

v7 changes:
- rebased
- add davinci prefix to commit message

v6 changes:
- rebased

 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 ba9912b4dfab..da8a039d65f9 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 7ea3db0ff062..7a8c6fada644 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>
 
@@ -397,3 +398,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.17.0

  parent reply	other threads:[~2018-04-27  0:17 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-27  0:17 [PATCH v9 00/27] ARM: davinci: convert to common clock framework​ David Lechner
2018-04-27  0:17 ` David Lechner
2018-04-27  0:17 ` David Lechner
2018-04-27  0:17 ` [PATCH v9 01/27] clk: davinci: pll: allow dev == NULL David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-01 13:27   ` Sekhar Nori
2018-05-01 13:27     ` Sekhar Nori
2018-05-01 13:27     ` Sekhar Nori
2018-05-02  1:44     ` David Lechner
2018-05-02  1:44       ` David Lechner
2018-04-27  0:17 ` [PATCH v9 02/27] clk: davinci: da850-pll: change PLL0 to CLK_OF_DECLARE David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-01 13:46   ` Sekhar Nori
2018-05-01 13:46     ` Sekhar Nori
2018-05-01 13:46     ` Sekhar Nori
2018-05-02  1:46     ` David Lechner
2018-05-02  1:46       ` David Lechner
2018-04-27  0:17 ` [PATCH v9 03/27] clk: davinci: psc: allow for dev == NULL David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-01 14:02   ` Sekhar Nori
2018-05-01 14:02     ` Sekhar Nori
2018-05-01 14:02     ` Sekhar Nori
2018-05-02  1:49     ` David Lechner
2018-05-02  1:49       ` David Lechner
2018-05-02 15:08       ` Sekhar Nori
2018-05-02 15:08         ` Sekhar Nori
2018-05-02 15:08         ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 04/27] ARM: davinci: pass clock as parameter to davinci_timer_init() David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-01 14:09   ` Sekhar Nori
2018-05-01 14:09     ` Sekhar Nori
2018-05-01 14:09     ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 05/27] ARM: davinci: da830: add new clock init using common clock framework David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-01 14:13   ` Sekhar Nori
2018-05-01 14:13     ` Sekhar Nori
2018-05-01 14:13     ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 06/27] ARM: davinci: da850: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-01 14:17   ` Sekhar Nori
2018-05-01 14:17     ` Sekhar Nori
2018-05-01 14:17     ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 07/27] ARM: davinci: dm355: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-03 15:34   ` Sekhar Nori
2018-05-03 15:34     ` Sekhar Nori
2018-05-03 15:34     ` Sekhar Nori
2018-05-03 15:44     ` David Lechner
2018-05-03 15:44       ` David Lechner
2018-05-04 10:01       ` Sekhar Nori
2018-05-04 10:01         ` Sekhar Nori
2018-05-04 10:01         ` Sekhar Nori
2018-05-04 14:26         ` David Lechner
2018-05-04 14:26           ` David Lechner
2018-04-27  0:17 ` [PATCH v9 08/27] ARM: davinci: dm365: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 09/27] ARM: davinci: dm644x: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-05-03 13:18   ` Sekhar Nori
2018-05-03 13:18     ` Sekhar Nori
2018-05-03 13:18     ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 10/27] ARM: davinci: dm646x: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 11/27] ARM: davinci: da8xx: add new USB PHY " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 12/27] ARM: davinci: da8xx: add new sata_refclk " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 13/27] ARM: davinci: remove CONFIG_DAVINCI_RESET_CLOCKS David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 14/27] ARM: davinci_all_defconfig: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 15/27] ARM: davinci: switch to common clock framework David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 16/27] ARM: davinci: da830: Remove legacy clock init David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 17/27] ARM: davinci: da850: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 18/27] ARM: davinci: dm355: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 19/27] ARM: davinci: dm365: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 20/27] ARM: davinci: dm644x: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 21/27] ARM: davinci: dm646x: " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 22/27] ARM: davinci: da8xx: Remove legacy USB and SATA " David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 23/27] ARM: davinci: remove legacy clocks David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  0:17 ` [PATCH v9 24/27] dt-bindings: timer: new bindings for TI DaVinci timer David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27 14:05   ` Rob Herring
2018-04-27 14:05     ` Rob Herring
2018-04-27 14:05     ` Rob Herring
2018-05-02  1:52     ` David Lechner
2018-05-02  1:52       ` David Lechner
2018-05-02  5:03       ` Sekhar Nori
2018-05-02  5:03         ` Sekhar Nori
2018-05-02  5:03         ` Sekhar Nori
2018-04-27  0:17 ` David Lechner [this message]
2018-04-27  0:17   ` [PATCH v9 25/27] ARM: davinci: add device tree support to timer David Lechner
2018-04-27  0:17 ` [PATCH v9 26/27] ARM: davinci: da8xx-dt: switch to device tree clocks David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27  9:53   ` Bartosz Golaszewski
2018-04-27  9:53     ` Bartosz Golaszewski
2018-04-27  0:17 ` [PATCH v9 27/27] ARM: dts: da850: Add clocks David Lechner
2018-04-27  0:17   ` David Lechner
2018-04-27 12:04 ` [PATCH v9 00/27] ARM: davinci: convert to common clock framework​ Bartosz Golaszewski
2018-04-27 12:04   ` Bartosz Golaszewski
2018-04-30 20:35 ` Bartosz Golaszewski
2018-04-30 20:35   ` Bartosz Golaszewski
2018-05-01 14:45 ` Sekhar Nori
2018-05-01 14:45   ` Sekhar Nori
2018-05-01 14:45   ` 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=20180427001745.4116-26-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.