Skip to content

Commit

Permalink
ARM: OMAP2+: Display correct system timer name
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jon Hunter committed Apr 1, 2013
1 parent 2d61aec commit e95ea43
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions arch/arm/mach-omap2/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,6 @@ static void omap2_gp_timer_set_mode(enum clock_event_mode mode,
}

static struct clock_event_device clockevent_gpt = {
.name = "gp_timer",
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
.shift = 32,
.rating = 300,
Expand Down Expand Up @@ -215,10 +214,11 @@ static u32 __init omap_dm_timer_get_errata(void)
}

static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
int gptimer_id,
const char *fck_source,
const char *property,
int posted)
int gptimer_id,
const char *fck_source,
const char *property,
const char **timer_name,
int posted)
{
char name[10]; /* 10 = sizeof("gptXX_Xck0") */
const char *oh_name;
Expand Down Expand Up @@ -255,6 +255,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
if (!oh)
return -ENODEV;

*timer_name = oh->name;

if (!of_have_populated_dt()) {
r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL,
&irq);
Expand Down Expand Up @@ -328,7 +330,7 @@ static void __init omap2_gp_clockevent_init(int gptimer_id,
__omap_dm_timer_override_errata(&clkev, OMAP_TIMER_ERRATA_I103_I767);

res = omap_dm_timer_init_one(&clkev, gptimer_id, fck_source, property,
OMAP_TIMER_POSTED);
&clockevent_gpt.name, OMAP_TIMER_POSTED);
BUG_ON(res);

omap2_gp_timer_irq.dev_id = &clkev;
Expand All @@ -348,8 +350,8 @@ static void __init omap2_gp_clockevent_init(int gptimer_id,
clockevent_gpt.irq = omap_dm_timer_get_irq(&clkev);
clockevents_register_device(&clockevent_gpt);

pr_info("OMAP clockevent source: GPTIMER%d at %lu Hz\n",
gptimer_id, clkev.rate);
pr_info("OMAP clockevent source: %s at %lu Hz\n", clockevent_gpt.name,
clkev.rate);
}

/* Clocksource code */
Expand All @@ -366,7 +368,6 @@ static cycle_t clocksource_read_cycles(struct clocksource *cs)
}

static struct clocksource clocksource_gpt = {
.name = "gp_timer",
.rating = 300,
.read = clocksource_read_cycles,
.mask = CLOCKSOURCE_MASK(32),
Expand Down Expand Up @@ -456,6 +457,7 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id,
clksrc.errata = omap_dm_timer_get_errata();

res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source, NULL,
&clocksource_gpt.name,
OMAP_TIMER_NONPOSTED);
BUG_ON(res);

Expand All @@ -468,8 +470,8 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id,
pr_err("Could not register clocksource %s\n",
clocksource_gpt.name);
else
pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n",
gptimer_id, clksrc.rate);
pr_info("OMAP clocksource: %s at %lu Hz\n",
clocksource_gpt.name, clksrc.rate);
}

#ifdef CONFIG_SOC_HAS_REALTIME_COUNTER
Expand Down

0 comments on commit e95ea43

Please sign in to comment.