aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2011-02-23 02:14:08 -0500
committerPaul Walmsley <paul@pwsan.com>2011-02-28 16:04:35 -0500
commit38698bef545403a334cf92153874bd06dc22cc66 (patch)
tree518b583fb0ead8709b11b2e5b04ebaa2af197a51 /arch/arm/mach-omap2
parenta2debdbd1ad896a410019c9cf30785cad15930fc (diff)
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: Paul 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: Santosh Shilimkar <santosh.shilimkar@ti.com> Cc: Tarun Kanti DebBarma <tarun.kanti@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/timer-gp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index 7b7c2683ae7b..fb8d656e4d0a 100644
--- a/arch/arm/mach-omap2/timer-gp.c
+++ b/arch/arm/mach-omap2/timer-gp.c
@@ -39,10 +39,11 @@
39#include <asm/mach/time.h> 39#include <asm/mach/time.h>
40#include <plat/dmtimer.h> 40#include <plat/dmtimer.h>
41#include <asm/localtimer.h> 41#include <asm/localtimer.h>
42#include <plat/common.h>
43#include <plat/omap_hwmod.h>
42 44
43#include "timer-gp.h" 45#include "timer-gp.h"
44 46
45#include <plat/common.h>
46 47
47/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */ 48/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
48#define MAX_GPTIMER_ID 12 49#define MAX_GPTIMER_ID 12
@@ -132,9 +133,13 @@ static void __init omap2_gp_clockevent_init(void)
132{ 133{
133 u32 tick_rate; 134 u32 tick_rate;
134 int src; 135 int src;
136 char clockevent_hwmod_name[8]; /* 8 = sizeof("timerXX0") */
135 137
136 inited = 1; 138 inited = 1;
137 139
140 sprintf(clockevent_hwmod_name, "timer%d", gptimer_id);
141 omap_hwmod_setup_one(clockevent_hwmod_name);
142
138 gptimer = omap_dm_timer_request_specific(gptimer_id); 143 gptimer = omap_dm_timer_request_specific(gptimer_id);
139 BUG_ON(gptimer == NULL); 144 BUG_ON(gptimer == NULL);
140 gptimer_wakeup = gptimer; 145 gptimer_wakeup = gptimer;