From: Tony Lindgren <tony@atomide.com>
To: linux-arm-kernel@lists.infradead.org
Cc: linux-omap@vger.kernel.org
Subject: [PATCH 07/10] omap2+: Reserve clocksource and timesource and initialize dmtimer later
Date: Mon, 28 Mar 2011 15:21:45 -0700 [thread overview]
Message-ID: <20110328222145.4046.65802.stgit@baageli.muru.com> (raw)
In-Reply-To: <20110328221501.4046.41079.stgit@baageli.muru.com>
There's no need to initialize the dmtimer framework early.
Just mark the clocksource and timesource as reserved, and
initialize dmtimer with an arch_initcall.
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
arch/arm/mach-omap1/timer32k.c | 4 ----
arch/arm/mach-omap2/timer-gp.c | 9 ++++-----
arch/arm/plat-omap/dmtimer.c | 8 ++++++++
arch/arm/plat-omap/include/plat/dmtimer.h | 1 +
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
index 13d7b8f..96604a5 100644
--- a/arch/arm/mach-omap1/timer32k.c
+++ b/arch/arm/mach-omap1/timer32k.c
@@ -183,10 +183,6 @@ static __init void omap_init_32k_timer(void)
bool __init omap_32k_timer_init(void)
{
omap_init_clocksource_32k();
-
-#ifdef CONFIG_OMAP_DM_TIMER
- omap_dm_timer_init();
-#endif
omap_init_32k_timer();
return true;
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index 4b071fb..5e8fa1e 100644
--- a/arch/arm/mach-omap2/timer-gp.c
+++ b/arch/arm/mach-omap2/timer-gp.c
@@ -69,6 +69,8 @@
/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
#define MAX_GPTIMER_ID 12
+u32 sys_timer_reserved;
+
/* Clockevent code */
static struct omap_dm_timer clkev;
@@ -190,6 +192,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
omap_hwmod_enable(oh);
+ sys_timer_reserved |= (1 << (gptimer_id - 1));
+
if (gptimer_id != 12) {
struct clk *src;
@@ -315,7 +319,6 @@ static void __init omap2_gp_clocksource_init(void)
#ifdef CONFIG_ARCH_OMAP2
static void __init omap242x_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP2_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -326,7 +329,6 @@ struct sys_timer omap242x_timer = {
static void __init omap243x_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP2_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -339,7 +341,6 @@ struct sys_timer omap243x_timer = {
#ifdef CONFIG_ARCH_OMAP3
static void __init omap3_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP3_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -354,7 +355,6 @@ struct sys_timer omap3_timer = {
*/
static void __init omap3_beagle_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(OMAP3_BEAGLE_TIMER, OMAP3_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -371,7 +371,6 @@ static void __init omap4_timer_init(void)
twd_base = ioremap(OMAP44XX_LOCAL_TWD_BASE, SZ_256);
BUG_ON(!twd_base);
#endif
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index ff9b732..5163cf4 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -677,8 +677,16 @@ int __init omap_dm_timer_init(void)
sprintf(clk_name, "gpt%d_fck", i + 1);
timer->fclk = clk_get(NULL, clk_name);
}
+
+ /* One or two timers may be set up early for sys_timer */
+ if (sys_timer_reserved & (1 << i)) {
+ timer->reserved = 1;
+ timer->posted = 1;
+ }
#endif
}
return 0;
}
+
+arch_initcall(omap_dm_timer_init);
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h
index 5e68974..97bc306 100644
--- a/arch/arm/plat-omap/include/plat/dmtimer.h
+++ b/arch/arm/plat-omap/include/plat/dmtimer.h
@@ -219,6 +219,7 @@ struct omap_dm_timer {
unsigned posted:1;
};
+extern u32 sys_timer_reserved;
void __omap_dm_timer_reset(struct omap_dm_timer *timer, int autoidle,
int wakeup);
void omap_dm_timer_prepare(struct omap_dm_timer *timer);
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 07/10] omap2+: Reserve clocksource and timesource and initialize dmtimer later
Date: Mon, 28 Mar 2011 15:21:45 -0700 [thread overview]
Message-ID: <20110328222145.4046.65802.stgit@baageli.muru.com> (raw)
In-Reply-To: <20110328221501.4046.41079.stgit@baageli.muru.com>
There's no need to initialize the dmtimer framework early.
Just mark the clocksource and timesource as reserved, and
initialize dmtimer with an arch_initcall.
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
arch/arm/mach-omap1/timer32k.c | 4 ----
arch/arm/mach-omap2/timer-gp.c | 9 ++++-----
arch/arm/plat-omap/dmtimer.c | 8 ++++++++
arch/arm/plat-omap/include/plat/dmtimer.h | 1 +
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
index 13d7b8f..96604a5 100644
--- a/arch/arm/mach-omap1/timer32k.c
+++ b/arch/arm/mach-omap1/timer32k.c
@@ -183,10 +183,6 @@ static __init void omap_init_32k_timer(void)
bool __init omap_32k_timer_init(void)
{
omap_init_clocksource_32k();
-
-#ifdef CONFIG_OMAP_DM_TIMER
- omap_dm_timer_init();
-#endif
omap_init_32k_timer();
return true;
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index 4b071fb..5e8fa1e 100644
--- a/arch/arm/mach-omap2/timer-gp.c
+++ b/arch/arm/mach-omap2/timer-gp.c
@@ -69,6 +69,8 @@
/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
#define MAX_GPTIMER_ID 12
+u32 sys_timer_reserved;
+
/* Clockevent code */
static struct omap_dm_timer clkev;
@@ -190,6 +192,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
omap_hwmod_enable(oh);
+ sys_timer_reserved |= (1 << (gptimer_id - 1));
+
if (gptimer_id != 12) {
struct clk *src;
@@ -315,7 +319,6 @@ static void __init omap2_gp_clocksource_init(void)
#ifdef CONFIG_ARCH_OMAP2
static void __init omap242x_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP2_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -326,7 +329,6 @@ struct sys_timer omap242x_timer = {
static void __init omap243x_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP2_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -339,7 +341,6 @@ struct sys_timer omap243x_timer = {
#ifdef CONFIG_ARCH_OMAP3
static void __init omap3_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP3_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -354,7 +355,6 @@ struct sys_timer omap3_timer = {
*/
static void __init omap3_beagle_timer_init(void)
{
- omap_dm_timer_init();
omap2_gp_clockevent_init(OMAP3_BEAGLE_TIMER, OMAP3_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
@@ -371,7 +371,6 @@ static void __init omap4_timer_init(void)
twd_base = ioremap(OMAP44XX_LOCAL_TWD_BASE, SZ_256);
BUG_ON(!twd_base);
#endif
- omap_dm_timer_init();
omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE);
omap2_gp_clocksource_init();
}
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index ff9b732..5163cf4 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -677,8 +677,16 @@ int __init omap_dm_timer_init(void)
sprintf(clk_name, "gpt%d_fck", i + 1);
timer->fclk = clk_get(NULL, clk_name);
}
+
+ /* One or two timers may be set up early for sys_timer */
+ if (sys_timer_reserved & (1 << i)) {
+ timer->reserved = 1;
+ timer->posted = 1;
+ }
#endif
}
return 0;
}
+
+arch_initcall(omap_dm_timer_init);
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h
index 5e68974..97bc306 100644
--- a/arch/arm/plat-omap/include/plat/dmtimer.h
+++ b/arch/arm/plat-omap/include/plat/dmtimer.h
@@ -219,6 +219,7 @@ struct omap_dm_timer {
unsigned posted:1;
};
+extern u32 sys_timer_reserved;
void __omap_dm_timer_reset(struct omap_dm_timer *timer, int autoidle,
int wakeup);
void omap_dm_timer_prepare(struct omap_dm_timer *timer);
next prev parent reply other threads:[~2011-03-28 22:21 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-28 22:21 [PATCH 00/10] omap init_early changes for irq and timer init Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 01/10] omap: Use separate init_irq functions to avoid cpu_is_omap tests early Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-29 6:11 ` [PATCH 01/10] omap: Use separate init_irq functions to avoidcpu_is_omap " Santosh Shilimkar
2011-03-29 6:11 ` Santosh Shilimkar
2011-03-29 6:11 ` Santosh Shilimkar
2011-03-29 6:11 ` Santosh Shilimkar
2011-03-29 15:30 ` Tony Lindgren
2011-03-29 15:30 ` Tony Lindgren
2011-03-29 22:27 ` Tony Lindgren
2011-03-29 22:27 ` Tony Lindgren
2011-03-29 6:11 ` Santosh Shilimkar
2011-03-29 6:11 ` Santosh Shilimkar
2011-03-29 6:11 ` Santosh Shilimkar
2011-03-29 6:11 ` Santosh Shilimkar
2011-03-29 17:11 ` [PATCH 01/10] omap: Use separate init_irq functions to avoid cpu_is_omap " Kevin Hilman
2011-03-29 17:11 ` Kevin Hilman
2011-03-29 17:14 ` Tony Lindgren
2011-03-29 17:14 ` Tony Lindgren
2011-05-17 11:28 ` Tony Lindgren
2011-05-17 11:28 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 02/10] omap: Set separate timer init functions to avoid cpu_is_omap tests Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 03/10] omap: Move dmtimer defines to dmtimer.h Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-29 17:41 ` Kevin Hilman
2011-03-29 17:41 ` Kevin Hilman
2011-03-29 17:44 ` Tony Lindgren
2011-03-29 17:44 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 04/10] omap: Make a subset of dmtimer functions into inline functions Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-29 17:51 ` Kevin Hilman
2011-03-29 17:51 ` Kevin Hilman
2011-03-29 17:58 ` Tony Lindgren
2011-03-29 17:58 ` Tony Lindgren
2011-03-29 18:01 ` Kevin Hilman
2011-03-29 18:01 ` Kevin Hilman
2011-03-29 18:02 ` Tony Lindgren
2011-03-29 18:02 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 05/10] omap2+: Use dmtimer macros for clockevent Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-29 17:16 ` Tony Lindgren
2011-03-29 17:16 ` Tony Lindgren
2011-03-31 21:35 ` Kevin Hilman
2011-03-31 21:35 ` Kevin Hilman
2011-03-31 22:04 ` Tony Lindgren
2011-03-31 22:04 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 06/10] omap2+: Remove gptimer_wakekup for now Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-31 22:09 ` Kevin Hilman
2011-03-31 22:09 ` Kevin Hilman
2011-04-01 16:26 ` Santosh Shilimkar
2011-04-01 16:26 ` Santosh Shilimkar
2011-03-28 22:21 ` Tony Lindgren [this message]
2011-03-28 22:21 ` [PATCH 07/10] omap2+: Reserve clocksource and timesource and initialize dmtimer later Tony Lindgren
2011-03-28 22:21 ` [PATCH 08/10] omap2+: Use dmtimer macros for clocksource Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 09/10] omap2+: Remove omap2_gp_clockevent_set_gptimer Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 10/10] omap2+: Rename timer-gp.c into timer.c to combine timer init functions Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-29 18:16 ` [PATCH 00/10] omap init_early changes for irq and timer init Kevin Hilman
2011-03-29 18:16 ` Kevin Hilman
2011-03-30 7:56 ` Santosh Shilimkar
2011-03-30 7:56 ` Santosh Shilimkar
2011-03-30 18:22 ` Tony Lindgren
2011-03-30 18:22 ` Tony Lindgren
2011-03-31 8:16 ` Santosh Shilimkar
2011-03-31 8:16 ` Santosh Shilimkar
2011-03-31 17:32 ` Tony Lindgren
2011-03-31 17:32 ` Tony Lindgren
2011-04-01 8:39 ` Santosh Shilimkar
2011-04-01 8:39 ` Santosh Shilimkar
-- strict thread matches above, loose matches on Subject: below --
2011-06-20 9:23 [PATCH 00/10] init_early cleanup for omap init_irq and init_timer Tony Lindgren
2011-06-20 9:23 ` [PATCH 07/10] omap2+: Reserve clocksource and timesource and initialize dmtimer later Tony Lindgren
2011-06-20 9:23 ` Tony Lindgren
2011-06-23 17:01 ` Kevin Hilman
2011-06-23 17:01 ` Kevin Hilman
2011-06-27 7:48 ` Tony Lindgren
2011-06-27 7:48 ` Tony Lindgren
2011-06-27 16:41 ` Kevin Hilman
2011-06-27 16:41 ` Kevin Hilman
2011-06-23 17:13 ` Kevin Hilman
2011-06-23 17:13 ` Kevin Hilman
2011-06-27 7:51 ` Tony Lindgren
2011-06-27 7:51 ` Tony Lindgren
2011-06-27 10:44 ` Tony Lindgren
2011-06-27 10:44 ` 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=20110328222145.4046.65802.stgit@baageli.muru.com \
--to=tony@atomide.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.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.