Commit 70fe8217 authored by Thomas Gleixner's avatar Thomas Gleixner

Merge branch 'clockevents/fixes' of git://git.linaro.org/people/dlezcano/linux into timers/urgent

 * Hide event stream Kconfig option for the arch_arm_timer for ARM=n
 * Fix a missing a clk_put in case the registering of the sh_mtu[2] drivers fails.
 * Reuse clockevents_config_and_register for the at91rm9200_time timer
parents 4be77398 77f7ce9a
...@@ -174,7 +174,6 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev) ...@@ -174,7 +174,6 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev)
static struct clock_event_device clkevt = { static struct clock_event_device clkevt = {
.name = "at91_tick", .name = "at91_tick",
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
.shift = 32,
.rating = 150, .rating = 150,
.set_next_event = clkevt32k_next_event, .set_next_event = clkevt32k_next_event,
.set_mode = clkevt32k_mode, .set_mode = clkevt32k_mode,
...@@ -265,11 +264,9 @@ void __init at91rm9200_timer_init(void) ...@@ -265,11 +264,9 @@ void __init at91rm9200_timer_init(void)
at91_st_write(AT91_ST_RTMR, 1); at91_st_write(AT91_ST_RTMR, 1);
/* Setup timer clockevent, with minimum of two ticks (important!!) */ /* Setup timer clockevent, with minimum of two ticks (important!!) */
clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift);
clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt);
clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1;
clkevt.cpumask = cpumask_of(0); clkevt.cpumask = cpumask_of(0);
clockevents_register_device(&clkevt); clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK,
2, AT91_ST_ALMV);
/* register clocksource */ /* register clocksource */
clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK);
......
...@@ -87,6 +87,7 @@ config ARM_ARCH_TIMER ...@@ -87,6 +87,7 @@ config ARM_ARCH_TIMER
config ARM_ARCH_TIMER_EVTSTREAM config ARM_ARCH_TIMER_EVTSTREAM
bool "Support for ARM architected timer event stream generation" bool "Support for ARM architected timer event stream generation"
default y if ARM_ARCH_TIMER default y if ARM_ARCH_TIMER
depends on ARM_ARCH_TIMER
help help
This option enables support for event stream generation based on This option enables support for event stream generation based on
the ARM architected timer. It is used for waking up CPUs executing the ARM architected timer. It is used for waking up CPUs executing
......
...@@ -313,8 +313,20 @@ static int sh_mtu2_setup(struct sh_mtu2_priv *p, struct platform_device *pdev) ...@@ -313,8 +313,20 @@ static int sh_mtu2_setup(struct sh_mtu2_priv *p, struct platform_device *pdev)
goto err1; goto err1;
} }
return sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev), ret = clk_prepare(p->clk);
cfg->clockevent_rating); if (ret < 0)
goto err2;
ret = sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev),
cfg->clockevent_rating);
if (ret < 0)
goto err3;
return 0;
err3:
clk_unprepare(p->clk);
err2:
clk_put(p->clk);
err1: err1:
iounmap(p->mapbase); iounmap(p->mapbase);
err0: err0:
......
...@@ -472,12 +472,26 @@ static int sh_tmu_setup(struct sh_tmu_priv *p, struct platform_device *pdev) ...@@ -472,12 +472,26 @@ static int sh_tmu_setup(struct sh_tmu_priv *p, struct platform_device *pdev)
ret = PTR_ERR(p->clk); ret = PTR_ERR(p->clk);
goto err1; goto err1;
} }
ret = clk_prepare(p->clk);
if (ret < 0)
goto err2;
p->cs_enabled = false; p->cs_enabled = false;
p->enable_count = 0; p->enable_count = 0;
return sh_tmu_register(p, (char *)dev_name(&p->pdev->dev), ret = sh_tmu_register(p, (char *)dev_name(&p->pdev->dev),
cfg->clockevent_rating, cfg->clockevent_rating,
cfg->clocksource_rating); cfg->clocksource_rating);
if (ret < 0)
goto err3;
return 0;
err3:
clk_unprepare(p->clk);
err2:
clk_put(p->clk);
err1: err1:
iounmap(p->mapbase); iounmap(p->mapbase);
err0: err0:
......
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