diff options
Diffstat (limited to 'kernel/time')
| -rw-r--r-- | kernel/time/clockevents.c | 24 | ||||
| -rw-r--r-- | kernel/time/timekeeping.c | 2 |
2 files changed, 26 insertions, 0 deletions
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c index 7e1ce012a851..30b6de0d977c 100644 --- a/kernel/time/clockevents.c +++ b/kernel/time/clockevents.c | |||
| @@ -397,6 +397,30 @@ void clockevents_exchange_device(struct clock_event_device *old, | |||
| 397 | local_irq_restore(flags); | 397 | local_irq_restore(flags); |
| 398 | } | 398 | } |
| 399 | 399 | ||
| 400 | /** | ||
| 401 | * clockevents_suspend - suspend clock devices | ||
| 402 | */ | ||
| 403 | void clockevents_suspend(void) | ||
| 404 | { | ||
| 405 | struct clock_event_device *dev; | ||
| 406 | |||
| 407 | list_for_each_entry_reverse(dev, &clockevent_devices, list) | ||
| 408 | if (dev->suspend) | ||
| 409 | dev->suspend(dev); | ||
| 410 | } | ||
| 411 | |||
| 412 | /** | ||
| 413 | * clockevents_resume - resume clock devices | ||
| 414 | */ | ||
| 415 | void clockevents_resume(void) | ||
| 416 | { | ||
| 417 | struct clock_event_device *dev; | ||
| 418 | |||
| 419 | list_for_each_entry(dev, &clockevent_devices, list) | ||
| 420 | if (dev->resume) | ||
| 421 | dev->resume(dev); | ||
| 422 | } | ||
| 423 | |||
| 400 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | 424 | #ifdef CONFIG_GENERIC_CLOCKEVENTS |
| 401 | /** | 425 | /** |
| 402 | * clockevents_notify - notification about relevant events | 426 | * clockevents_notify - notification about relevant events |
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index d3b91e75cecd..5ce06a3fa91e 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c | |||
| @@ -776,6 +776,7 @@ static void timekeeping_resume(void) | |||
| 776 | 776 | ||
| 777 | read_persistent_clock(&ts); | 777 | read_persistent_clock(&ts); |
| 778 | 778 | ||
| 779 | clockevents_resume(); | ||
| 779 | clocksource_resume(); | 780 | clocksource_resume(); |
| 780 | 781 | ||
| 781 | write_seqlock_irqsave(&tk->lock, flags); | 782 | write_seqlock_irqsave(&tk->lock, flags); |
| @@ -835,6 +836,7 @@ static int timekeeping_suspend(void) | |||
| 835 | 836 | ||
| 836 | clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL); | 837 | clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL); |
| 837 | clocksource_suspend(); | 838 | clocksource_suspend(); |
| 839 | clockevents_suspend(); | ||
| 838 | 840 | ||
| 839 | return 0; | 841 | return 0; |
| 840 | } | 842 | } |
