Commit 38698bef authored by Paul Walmsley's avatar Paul Walmsley

OMAP2+: clockevent: set up GPTIMER clockevent hwmod right before timer init

Set up the GPTIMER hwmod used for the clockevent source immediately
before it is used.  This avoids the need to set up all of the hwmods
until the boot process is further along.  (In general, we want to defer
as much as possible until late in the boot process.)

This second version fixes a bug pointed out by Santosh Shilimkar
<santosh.shilimkar@ti.com>, that would cause the kernel to use an
incorrect timer hwmod name if the selected GPTIMER was not 1 or 12 -
thanks Santosh.  Also, Tarun Kanti DebBarma <tarun.kanti@ti.com>
pointed out that the original patch did not apply cleanly; this has
now been fixed.
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
Cc: Benoît Cousson <b-cousson@ti.com>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Kevin Hilman <khilman@ti.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Tarun Kanti DebBarma <tarun.kanti@ti.com>
parent a2debdbd
...@@ -39,10 +39,11 @@ ...@@ -39,10 +39,11 @@
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <plat/dmtimer.h> #include <plat/dmtimer.h>
#include <asm/localtimer.h> #include <asm/localtimer.h>
#include <plat/common.h>
#include <plat/omap_hwmod.h>
#include "timer-gp.h" #include "timer-gp.h"
#include <plat/common.h>
/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */ /* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
#define MAX_GPTIMER_ID 12 #define MAX_GPTIMER_ID 12
...@@ -132,9 +133,13 @@ static void __init omap2_gp_clockevent_init(void) ...@@ -132,9 +133,13 @@ static void __init omap2_gp_clockevent_init(void)
{ {
u32 tick_rate; u32 tick_rate;
int src; int src;
char clockevent_hwmod_name[8]; /* 8 = sizeof("timerXX0") */
inited = 1; inited = 1;
sprintf(clockevent_hwmod_name, "timer%d", gptimer_id);
omap_hwmod_setup_one(clockevent_hwmod_name);
gptimer = omap_dm_timer_request_specific(gptimer_id); gptimer = omap_dm_timer_request_specific(gptimer_id);
BUG_ON(gptimer == NULL); BUG_ON(gptimer == NULL);
gptimer_wakeup = gptimer; gptimer_wakeup = gptimer;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment