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 v10 25/27] ARM: davinci: add device tree support to timer Date: Wed, 9 May 2018 12:26:04 -0500 [thread overview] Message-ID: <20180509172606.29387-26-david@lechnology.com> (raw) In-Reply-To: <20180509172606.29387-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> --- v10 changes: - change compatible to "ti,da830-timer" - remove comment clocks as platform devices 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 | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 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..184e72922cc1 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,34 @@ 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. There will be problems later if the real clock + * source is disabled. + */ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + 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,da830-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 v10 25/27] ARM: davinci: add device tree support to timer Date: Wed, 9 May 2018 12:26:04 -0500 [thread overview] Message-ID: <20180509172606.29387-26-david@lechnology.com> (raw) In-Reply-To: <20180509172606.29387-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> --- v10 changes: - change compatible to "ti,da830-timer" - remove comment clocks as platform devices 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 | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 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..184e72922cc1 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,34 @@ 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. There will be problems later if the real clock + * source is disabled. + */ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + 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,da830-timer", of_davinci_timer_init); -- 2.17.0
next prev parent reply other threads:[~2018-05-09 17:28 UTC|newest] Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-09 17:25 [PATCH v10 00/27] ARM: davinci: convert to common clock framework David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 01/27] clk: davinci: pll: allow dev == NULL David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 02/27] clk: davinci: da850-pll: change PLL0 to CLK_OF_DECLARE David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-15 13:31 ` Sekhar Nori 2018-05-15 13:31 ` Sekhar Nori 2018-05-15 13:31 ` Sekhar Nori 2018-05-15 15:42 ` David Lechner 2018-05-15 15:42 ` David Lechner 2018-05-16 5:51 ` Sekhar Nori 2018-05-16 5:51 ` Sekhar Nori 2018-05-16 5:51 ` Sekhar Nori 2018-05-09 17:25 ` [PATCH v10 03/27] clk: davinci: psc: allow for dev == NULL David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-15 13:42 ` Sekhar Nori 2018-05-15 13:42 ` Sekhar Nori 2018-05-15 13:42 ` Sekhar Nori 2018-05-09 17:25 ` [PATCH v10 04/27] ARM: davinci: pass clock as parameter to davinci_timer_init() David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 05/27] ARM: davinci: da830: add new clock init using common clock framework David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 06/27] ARM: davinci: da850: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 07/27] ARM: davinci: dm355: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 08/27] ARM: davinci: dm365: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 09/27] ARM: davinci: dm644x: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 10/27] ARM: davinci: dm646x: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 11/27] ARM: davinci: da8xx: add new USB PHY " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 12/27] ARM: davinci: da8xx: add new sata_refclk " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 13/27] ARM: davinci: remove CONFIG_DAVINCI_RESET_CLOCKS David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 14/27] ARM: davinci_all_defconfig: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 15/27] ARM: davinci: switch to common clock framework David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 16/27] ARM: davinci: da830: Remove legacy clock init David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 17/27] ARM: davinci: da850: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 18/27] ARM: davinci: dm355: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 19/27] ARM: davinci: dm365: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 20/27] ARM: davinci: dm644x: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 21/27] ARM: davinci: dm646x: " David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 22/27] ARM: davinci: da8xx: Remove legacy USB and SATA " David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 23/27] ARM: davinci: remove legacy clocks David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 24/27] dt-bindings: timer: new bindings for TI DaVinci timer David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-18 14:24 ` Rob Herring 2018-05-18 14:24 ` Rob Herring 2018-05-09 17:26 ` David Lechner [this message] 2018-05-09 17:26 ` [PATCH v10 25/27] ARM: davinci: add device tree support to timer David Lechner 2018-05-17 14:35 ` Sekhar Nori 2018-05-17 14:35 ` Sekhar Nori 2018-05-17 14:35 ` Sekhar Nori 2018-05-17 15:09 ` David Lechner 2018-05-17 15:09 ` David Lechner 2018-05-18 6:05 ` Sekhar Nori 2018-05-18 6:05 ` Sekhar Nori 2018-05-18 6:05 ` Sekhar Nori 2018-05-18 15:35 ` David Lechner 2018-05-18 15:35 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 26/27] ARM: davinci: da8xx-dt: switch to device tree clocks David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 27/27] ARM: dts: da850: Add clocks David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-11 15:26 ` [PATCH v10 00/27] ARM: davinci: convert to common clock framework Sekhar Nori 2018-05-11 15:26 ` Sekhar Nori 2018-05-11 15:26 ` Sekhar Nori 2018-05-12 21:11 ` David Lechner 2018-05-12 21:11 ` David Lechner 2018-05-14 0:40 ` Adam Ford 2018-05-14 0:40 ` Adam Ford 2018-05-14 1:50 ` David Lechner 2018-05-14 1:50 ` David Lechner 2018-05-15 9:25 ` Bartosz Golaszewski 2018-05-15 9:25 ` Bartosz Golaszewski 2018-05-15 22:44 ` Adam Ford 2018-05-15 22:44 ` Adam Ford 2018-05-16 0:31 ` David Lechner 2018-05-16 0:31 ` David Lechner 2018-05-16 7:47 ` Bartosz Golaszewski 2018-05-16 7:47 ` Bartosz Golaszewski 2018-05-16 10:43 ` Sekhar Nori 2018-05-16 10:43 ` Sekhar Nori 2018-05-17 0:46 ` Adam Ford 2018-05-17 0:46 ` Adam Ford
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=20180509172606.29387-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: linkBe 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.