aboutsummaryrefslogtreecommitdiffstats
path: root/arch/score
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2015-07-16 07:26:27 -0400
committerDaniel Lezcano <daniel.lezcano@linaro.org>2015-08-10 05:41:04 -0400
commit07d93ebdbffac61201d2f7fb81d08872df402f91 (patch)
tree5a6f54e6108a6d5709aca1fca2aca7fd834d924a /arch/score
parent07aeed3f9ba2a846d07fa870c26c3634e849d4e4 (diff)
score/time: Migrate to new 'set-state' interface
Migrate score 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. We weren't doing anything in ONESHOT/SHUTDOWN/RESUME modes and so callbacks for them aren't implemented. Cc: Chen Liqin <liqin.linux@gmail.com> Cc: Lennox Wu <lennox.wu@gmail.com> Cc: Michael Opdenacker <michael.opdenacker@free-electrons.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'arch/score')
-rw-r--r--arch/score/kernel/time.c31
1 files changed, 10 insertions, 21 deletions
diff --git a/arch/score/kernel/time.c b/arch/score/kernel/time.c
index 24770cd9b473..679b8d7b0350 100644
--- a/arch/score/kernel/time.c
+++ b/arch/score/kernel/time.c
@@ -55,31 +55,20 @@ static int score_timer_set_next_event(unsigned long delta,
55 return 0; 55 return 0;
56} 56}
57 57
58static void score_timer_set_mode(enum clock_event_mode mode, 58static int score_timer_set_periodic(struct clock_event_device *evt)
59 struct clock_event_device *evdev)
60{ 59{
61 switch (mode) { 60 outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL);
62 case CLOCK_EVT_MODE_PERIODIC: 61 outl(SYSTEM_CLOCK / HZ, P_TIMER0_PRELOAD);
63 outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL); 62 outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL);
64 outl(SYSTEM_CLOCK/HZ, P_TIMER0_PRELOAD); 63 return 0;
65 outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL);
66 break;
67 case CLOCK_EVT_MODE_ONESHOT:
68 case CLOCK_EVT_MODE_SHUTDOWN:
69 case CLOCK_EVT_MODE_RESUME:
70 case CLOCK_EVT_MODE_UNUSED:
71 break;
72 default:
73 BUG();
74 }
75} 64}
76 65
77static struct clock_event_device score_clockevent = { 66static struct clock_event_device score_clockevent = {
78 .name = "score_clockevent", 67 .name = "score_clockevent",
79 .features = CLOCK_EVT_FEAT_PERIODIC, 68 .features = CLOCK_EVT_FEAT_PERIODIC,
80 .shift = 16, 69 .shift = 16,
81 .set_next_event = score_timer_set_next_event, 70 .set_next_event = score_timer_set_next_event,
82 .set_mode = score_timer_set_mode, 71 .set_state_periodic = score_timer_set_periodic,
83}; 72};
84 73
85void __init time_init(void) 74void __init time_init(void)