LKML Archive on 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 20/42] ARM: davinci: pass clock as parameter to davinci_timer_init()
Date: Thu, 15 Mar 2018 21:52:36 -0500 [thread overview]
Message-ID: <1521168778-27236-21-git-send-email-david@lechnology.com> (raw)
In-Reply-To: <1521168778-27236-1-git-send-email-david@lechnology.com>
This changes davinci_timer_init() so that we pass the clock as a
parameter instead of using clk_get(). This is done in preparation
for converting to the common clock framework.
It removes the requirement that we have to have a clock with con_id
of "timer0", which will be good for DT bindings since clock-names =
"timer0" doesn't really make sense.
Additionally, when we convert to the common clock framework, most of
the clocks will be platform devices, which will not be available at
this point during the boot process, so we will need to pass a clock
that is available (i.e. ref_clk) instead of the "timer0" clock.
NB: The comment added in time.c is not entirely true when this patch
is applied, but it will be correct once the conversion to the common
clock framework is complete in subsequent patches.
Also, drop use of extern in header file since we are touching the
definition.
Signed-off-by: David Lechner <david@lechnology.com>
---
v8 changes:
- none
v7 changes:
- new in v7
arch/arm/mach-davinci/da830.c | 2 +-
arch/arm/mach-davinci/da850.c | 2 +-
arch/arm/mach-davinci/dm355.c | 2 +-
arch/arm/mach-davinci/dm365.c | 2 +-
arch/arm/mach-davinci/dm644x.c | 2 +-
arch/arm/mach-davinci/dm646x.c | 2 +-
arch/arm/mach-davinci/include/mach/common.h | 3 ++-
arch/arm/mach-davinci/time.c | 13 +++++++++----
8 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index 350d767..0b17e5a 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -1224,5 +1224,5 @@ void __init da830_init(void)
void __init da830_init_time(void)
{
davinci_clk_init(da830_clks);
- davinci_timer_init();
+ davinci_timer_init(&timerp64_0_clk);
}
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 34117e61..1dbf01c 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -1396,5 +1396,5 @@ void __init da850_init(void)
void __init da850_init_time(void)
{
davinci_clk_init(da850_clks);
- davinci_timer_init();
+ davinci_timer_init(&timerp64_0_clk);
}
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index f294804..0da7516 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -1047,7 +1047,7 @@ void __init dm355_init(void)
void __init dm355_init_time(void)
{
davinci_clk_init(dm355_clks);
- davinci_timer_init();
+ davinci_timer_init(&timer0_clk);
}
int __init dm355_init_video(struct vpfe_config *vpfe_cfg,
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 1e3df9d..871372a 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -1172,7 +1172,7 @@ void __init dm365_init(void)
void __init dm365_init_time(void)
{
davinci_clk_init(dm365_clks);
- davinci_timer_init();
+ davinci_timer_init(&timer0_clk);
}
static struct resource dm365_vpss_resources[] = {
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index b409801..71a16fc 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -935,7 +935,7 @@ void __init dm644x_init(void)
void __init dm644x_init_time(void)
{
davinci_clk_init(dm644x_clks);
- davinci_timer_init();
+ davinci_timer_init(&timer0_clk);
}
int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 109ab1f..e1d6e92 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -956,7 +956,7 @@ void __init dm646x_init_time(unsigned long ref_clk_rate,
ref_clk.rate = ref_clk_rate;
aux_clkin.rate = aux_clkin_rate;
davinci_clk_init(dm646x_clks);
- davinci_timer_init();
+ davinci_timer_init(&timer0_clk);
}
static int __init dm646x_init_devices(void)
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index f0d5e858..5f45d0a 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -12,11 +12,12 @@
#ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H
#define __ARCH_ARM_MACH_DAVINCI_COMMON_H
+#include <linux/clk.h>
#include <linux/compiler.h>
#include <linux/types.h>
#include <linux/reboot.h>
-extern void davinci_timer_init(void);
+void davinci_timer_init(struct clk *clk);
extern void davinci_irq_init(void);
extern void __iomem *davinci_intc_base;
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 1bb991a..2521333 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -334,10 +334,8 @@ static struct clock_event_device clockevent_davinci = {
.set_state_oneshot = davinci_set_oneshot,
};
-
-void __init davinci_timer_init(void)
+void __init davinci_timer_init(struct clk *timer_clk)
{
- struct clk *timer_clk;
struct davinci_soc_info *soc_info = &davinci_soc_info;
unsigned int clockevent_id;
unsigned int clocksource_id;
@@ -373,7 +371,14 @@ void __init davinci_timer_init(void)
}
}
- timer_clk = clk_get(NULL, "timer0");
+ /*
+ * REVISIT: Currently, timer_clk will be "ref_clk". However, the actual
+ * clock for this device comes from a PLL AUXCLK or a PSC clock
+ * (depending on the SoC). The PLL and PSC clocks are not registered
+ * until later in boot because they are platform devices. We should try
+ * again later to get the real clock so that the real clock is not
+ * turned off when disabling unused clocks, which would stop the timer.
+ */
BUG_ON(IS_ERR(timer_clk));
clk_prepare_enable(timer_clk);
--
2.7.4
next prev parent reply other threads:[~2018-03-16 2:56 UTC|newest]
Thread overview: 89+ 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 ` [PATCH v8 01/42] dt-bindings: clock: Add new bindings for TI Davinci PLL clocks David Lechner
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-20 16:56 ` 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-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-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-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-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-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-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-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-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-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 3:11 ` David Lechner
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-20 16:58 ` 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-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-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-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-20 17:04 ` Stephen Boyd
2018-03-16 2:52 ` [PATCH v8 18/42] clk: davinci: New driver for TI " David Lechner
2018-03-20 16:54 ` Stephen Boyd
2018-03-20 16:57 ` David Lechner
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-20 17:04 ` Stephen Boyd
2018-03-16 2:52 ` David Lechner [this message]
2018-04-05 12:12 ` [PATCH v8 20/42] ARM: davinci: pass clock as parameter to davinci_timer_init() 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 ` [PATCH v8 22/42] ARM: davinci: da850: " David Lechner
2018-03-16 2:52 ` [PATCH v8 23/42] ARM: davinci: dm355: " David Lechner
2018-03-16 2:52 ` [PATCH v8 24/42] ARM: davinci: dm365: " David Lechner
2018-03-16 2:52 ` [PATCH v8 25/42] ARM: davinci: dm644x: " David Lechner
2018-04-03 10:26 ` Sekhar Nori
2018-04-03 16:30 ` David Lechner
2018-04-04 6:47 ` Sekhar Nori
2018-04-04 12:44 ` Sekhar Nori
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 ` [PATCH v8 27/42] ARM: davinci: da8xx: add new USB PHY " 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 ` [PATCH v8 29/42] ARM: davinci: remove CONFIG_DAVINCI_RESET_CLOCKS David Lechner
2018-03-16 2:52 ` [PATCH v8 30/42] ARM: davinci_all_defconfig: " 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 ` [PATCH v8 32/42] ARM: davinci: da830: Remove legacy clock init David Lechner
2018-03-16 2:52 ` [PATCH v8 33/42] ARM: davinci: da850: " David Lechner
2018-03-16 2:52 ` [PATCH v8 34/42] ARM: davinci: dm355: " David Lechner
2018-03-16 2:52 ` [PATCH v8 35/42] ARM: davinci: dm365: " David Lechner
2018-03-16 2:52 ` [PATCH v8 36/42] ARM: davinci: dm644x: " David Lechner
2018-03-16 2:52 ` [PATCH v8 37/42] ARM: davinci: dm646x: " 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 ` [PATCH v8 39/42] ARM: davinci: remove legacy clocks David Lechner
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-03-16 2:52 ` [PATCH v8 41/42] ARM: davinci: da8xx-dt: switch to device tree clocks David Lechner
2018-03-16 2:52 ` [PATCH v8 42/42] ARM: dts: da850: Add clocks David Lechner
2018-03-16 17:20 ` David Lechner
2018-04-02 11:12 ` Sekhar Nori
2018-04-02 16:15 ` David Lechner
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-19 13:17 ` Bartosz Golaszewski
2018-03-19 15:59 ` David Lechner
2018-03-19 16:11 ` Adam Ford
2018-03-19 16:14 ` Bartosz Golaszewski
2018-03-19 16:15 ` Bartosz Golaszewski
2018-03-19 17:52 ` Adam Ford
2018-03-19 22:54 ` David Lechner
2018-03-19 22:14 ` David Lechner
2018-03-20 0:53 ` Stephen Boyd
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-21-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 \
--subject='Re: [PATCH v8 20/42] ARM: davinci: pass clock as parameter to davinci_timer_init()' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).