|
@@ -22,6 +22,7 @@ static void bc_set_mode(enum clock_event_mode mode,
|
|
|
struct clock_event_device *bc)
|
|
|
{
|
|
|
switch (mode) {
|
|
|
+ case CLOCK_EVT_MODE_UNUSED:
|
|
|
case CLOCK_EVT_MODE_SHUTDOWN:
|
|
|
/*
|
|
|
* Note, we cannot cancel the timer here as we might
|
|
@@ -101,10 +102,13 @@ static enum hrtimer_restart bc_handler(struct hrtimer *t)
|
|
|
{
|
|
|
ce_broadcast_hrtimer.event_handler(&ce_broadcast_hrtimer);
|
|
|
|
|
|
- if (ce_broadcast_hrtimer.next_event.tv64 == KTIME_MAX)
|
|
|
+ switch (ce_broadcast_hrtimer.mode) {
|
|
|
+ case CLOCK_EVT_MODE_ONESHOT:
|
|
|
+ if (ce_broadcast_hrtimer.next_event.tv64 != KTIME_MAX)
|
|
|
+ return HRTIMER_RESTART;
|
|
|
+ default:
|
|
|
return HRTIMER_NORESTART;
|
|
|
-
|
|
|
- return HRTIMER_RESTART;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void tick_setup_hrtimer_broadcast(void)
|