aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Hunter <jon-hunter@ti.com>2013-01-29 14:55:25 -0500
committerJon Hunter <jon-hunter@ti.com>2013-04-01 14:48:14 -0400
commite95ea43a90c32ccb47a601c70203ff60c0c1f345 (patch)
treefc21da31b789d4428d097a635333f261f7afbd9e
parent2d61aecee8f32259920cdf90a452fa26ffc64e9f (diff)
ARM: OMAP2+: Display correct system timer name
Currently on boot, when displaying the name of the gptimer used for clockevents and clocksource timers, the timer ID is shown. However, when booting with device-tree, the timer ID is not used to select a gptimer but a timer property. Hence, it is possible that the timer selected when booting with device-tree does not match the ID shown. Therefore, instead display the HWMOD name of the gptimer and use the HWMOD name as the name of clockevent and clocksource timer (if a gptimer is used). Signed-off-by: Jon Hunter <jon-hunter@ti.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
-rw-r--r--arch/arm/mach-omap2/timer.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 05b3a5472bfb..7d67d21fe52c 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -129,7 +129,6 @@ static void omap2_gp_timer_set_mode(enum clock_event_mode mode,
129} 129}
130 130
131static struct clock_event_device clockevent_gpt = { 131static struct clock_event_device clockevent_gpt = {
132 .name = "gp_timer",
133 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, 132 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
134 .shift = 32, 133 .shift = 32,
135 .rating = 300, 134 .rating = 300,
@@ -215,10 +214,11 @@ static u32 __init omap_dm_timer_get_errata(void)
215} 214}
216 215
217static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, 216static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
218 int gptimer_id, 217 int gptimer_id,
219 const char *fck_source, 218 const char *fck_source,
220 const char *property, 219 const char *property,
221 int posted) 220 const char **timer_name,
221 int posted)
222{ 222{
223 char name[10]; /* 10 = sizeof("gptXX_Xck0") */ 223 char name[10]; /* 10 = sizeof("gptXX_Xck0") */
224 const char *oh_name; 224 const char *oh_name;
@@ -255,6 +255,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
255 if (!oh) 255 if (!oh)
256 return -ENODEV; 256 return -ENODEV;
257 257
258 *timer_name = oh->name;
259
258 if (!of_have_populated_dt()) { 260 if (!of_have_populated_dt()) {
259 r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, 261 r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL,
260 &irq); 262 &irq);
@@ -328,7 +330,7 @@ static void __init omap2_gp_clockevent_init(int gptimer_id,
328 __omap_dm_timer_override_errata(&clkev, OMAP_TIMER_ERRATA_I103_I767); 330 __omap_dm_timer_override_errata(&clkev, OMAP_TIMER_ERRATA_I103_I767);
329 331
330 res = omap_dm_timer_init_one(&clkev, gptimer_id, fck_source, property, 332 res = omap_dm_timer_init_one(&clkev, gptimer_id, fck_source, property,
331 OMAP_TIMER_POSTED); 333 &clockevent_gpt.name, OMAP_TIMER_POSTED);
332 BUG_ON(res); 334 BUG_ON(res);
333 335
334 omap2_gp_timer_irq.dev_id = &clkev; 336 omap2_gp_timer_irq.dev_id = &clkev;
@@ -348,8 +350,8 @@ static void __init omap2_gp_clockevent_init(int gptimer_id,
348 clockevent_gpt.irq = omap_dm_timer_get_irq(&clkev); 350 clockevent_gpt.irq = omap_dm_timer_get_irq(&clkev);
349 clockevents_register_device(&clockevent_gpt); 351 clockevents_register_device(&clockevent_gpt);
350 352
351 pr_info("OMAP clockevent source: GPTIMER%d at %lu Hz\n", 353 pr_info("OMAP clockevent source: %s at %lu Hz\n", clockevent_gpt.name,
352 gptimer_id, clkev.rate); 354 clkev.rate);
353} 355}
354 356
355/* Clocksource code */ 357/* Clocksource code */
@@ -366,7 +368,6 @@ static cycle_t clocksource_read_cycles(struct clocksource *cs)
366} 368}
367 369
368static struct clocksource clocksource_gpt = { 370static struct clocksource clocksource_gpt = {
369 .name = "gp_timer",
370 .rating = 300, 371 .rating = 300,
371 .read = clocksource_read_cycles, 372 .read = clocksource_read_cycles,
372 .mask = CLOCKSOURCE_MASK(32), 373 .mask = CLOCKSOURCE_MASK(32),
@@ -456,6 +457,7 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id,
456 clksrc.errata = omap_dm_timer_get_errata(); 457 clksrc.errata = omap_dm_timer_get_errata();
457 458
458 res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source, NULL, 459 res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source, NULL,
460 &clocksource_gpt.name,
459 OMAP_TIMER_NONPOSTED); 461 OMAP_TIMER_NONPOSTED);
460 BUG_ON(res); 462 BUG_ON(res);
461 463
@@ -468,8 +470,8 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id,
468 pr_err("Could not register clocksource %s\n", 470 pr_err("Could not register clocksource %s\n",
469 clocksource_gpt.name); 471 clocksource_gpt.name);
470 else 472 else
471 pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n", 473 pr_info("OMAP clocksource: %s at %lu Hz\n",
472 gptimer_id, clksrc.rate); 474 clocksource_gpt.name, clksrc.rate);
473} 475}
474 476
475#ifdef CONFIG_SOC_HAS_REALTIME_COUNTER 477#ifdef CONFIG_SOC_HAS_REALTIME_COUNTER