提交 4134d29b 编写于 作者: V Viresh Kumar 提交者: Daniel Lezcano

clockevents/drivers/tegra20: Migrate to new 'set-state' interface

Migrate tegra20 driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Thierry Reding <treding@nvidia.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: NDaniel Lezcano <daniel.lezcano@linaro.org>
上级 6de6c977
...@@ -72,33 +72,36 @@ static int tegra_timer_set_next_event(unsigned long cycles, ...@@ -72,33 +72,36 @@ static int tegra_timer_set_next_event(unsigned long cycles,
return 0; return 0;
} }
static void tegra_timer_set_mode(enum clock_event_mode mode, static inline void timer_shutdown(struct clock_event_device *evt)
struct clock_event_device *evt)
{ {
u32 reg;
timer_writel(0, TIMER3_BASE + TIMER_PTV); timer_writel(0, TIMER3_BASE + TIMER_PTV);
}
static int tegra_timer_shutdown(struct clock_event_device *evt)
{
timer_shutdown(evt);
return 0;
}
switch (mode) { static int tegra_timer_set_periodic(struct clock_event_device *evt)
case CLOCK_EVT_MODE_PERIODIC: {
reg = 0xC0000000 | ((1000000/HZ)-1); u32 reg = 0xC0000000 | ((1000000 / HZ) - 1);
timer_shutdown(evt);
timer_writel(reg, TIMER3_BASE + TIMER_PTV); timer_writel(reg, TIMER3_BASE + TIMER_PTV);
break; return 0;
case CLOCK_EVT_MODE_ONESHOT:
break;
case CLOCK_EVT_MODE_UNUSED:
case CLOCK_EVT_MODE_SHUTDOWN:
case CLOCK_EVT_MODE_RESUME:
break;
}
} }
static struct clock_event_device tegra_clockevent = { static struct clock_event_device tegra_clockevent = {
.name = "timer0", .name = "timer0",
.rating = 300, .rating = 300,
.features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC, .features = CLOCK_EVT_FEAT_ONESHOT |
CLOCK_EVT_FEAT_PERIODIC,
.set_next_event = tegra_timer_set_next_event, .set_next_event = tegra_timer_set_next_event,
.set_mode = tegra_timer_set_mode, .set_state_shutdown = tegra_timer_shutdown,
.set_state_periodic = tegra_timer_set_periodic,
.set_state_oneshot = tegra_timer_shutdown,
.tick_resume = tegra_timer_shutdown,
}; };
static u64 notrace tegra_read_sched_clock(void) static u64 notrace tegra_read_sched_clock(void)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册