|
@@ -298,18 +298,17 @@ static void tick_shutdown(unsigned int *cpup)
|
|
|
spin_unlock_irqrestore(&tick_device_lock, flags);
|
|
|
}
|
|
|
|
|
|
-static void tick_suspend_periodic(void)
|
|
|
+static void tick_suspend(void)
|
|
|
{
|
|
|
struct tick_device *td = &__get_cpu_var(tick_cpu_device);
|
|
|
unsigned long flags;
|
|
|
|
|
|
spin_lock_irqsave(&tick_device_lock, flags);
|
|
|
- if (td->mode == TICKDEV_MODE_PERIODIC)
|
|
|
- clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_SHUTDOWN);
|
|
|
+ clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_SHUTDOWN);
|
|
|
spin_unlock_irqrestore(&tick_device_lock, flags);
|
|
|
}
|
|
|
|
|
|
-static void tick_resume_periodic(void)
|
|
|
+static void tick_resume(void)
|
|
|
{
|
|
|
struct tick_device *td = &__get_cpu_var(tick_cpu_device);
|
|
|
unsigned long flags;
|
|
@@ -317,6 +316,8 @@ static void tick_resume_periodic(void)
|
|
|
spin_lock_irqsave(&tick_device_lock, flags);
|
|
|
if (td->mode == TICKDEV_MODE_PERIODIC)
|
|
|
tick_setup_periodic(td->evtdev, 0);
|
|
|
+ else
|
|
|
+ tick_resume_oneshot();
|
|
|
spin_unlock_irqrestore(&tick_device_lock, flags);
|
|
|
}
|
|
|
|
|
@@ -348,13 +349,13 @@ static int tick_notify(struct notifier_block *nb, unsigned long reason,
|
|
|
break;
|
|
|
|
|
|
case CLOCK_EVT_NOTIFY_SUSPEND:
|
|
|
- tick_suspend_periodic();
|
|
|
+ tick_suspend();
|
|
|
tick_suspend_broadcast();
|
|
|
break;
|
|
|
|
|
|
case CLOCK_EVT_NOTIFY_RESUME:
|
|
|
if (!tick_resume_broadcast())
|
|
|
- tick_resume_periodic();
|
|
|
+ tick_resume();
|
|
|
break;
|
|
|
|
|
|
default:
|