Revert "temp revert alarm change"
author黄涛 <huangtao@rock-chips.com>
Sun, 31 Jul 2011 16:24:19 +0000 (00:24 +0800)
committer黄涛 <huangtao@rock-chips.com>
Sun, 31 Jul 2011 16:24:19 +0000 (00:24 +0800)
This reverts commit b283ec8cc448d5cfec727ce96eb633a23e267e0c.

drivers/rtc/alarm.c

index b445a8675850031598ba604367da3e7d098ad4a0..35b078d29adb620c0eb0dd2828739db3d9ebe6e1 100644 (file)
@@ -423,6 +423,7 @@ static int alarm_suspend(struct platform_device *pdev, pm_message_t state)
                if (rtc_current_time + 1 >= rtc_alarm_time) {
                        pr_alarm(SUSPEND, "alarm about to go off\n");
                        memset(&rtc_alarm, 0, sizeof(rtc_alarm));
+                       rtc_time_to_tm(0, &rtc_alarm.time);
                        rtc_alarm.enabled = 0;
                        rtc_set_alarm(alarm_rtc_dev, &rtc_alarm);
 
@@ -448,6 +449,7 @@ static int alarm_resume(struct platform_device *pdev)
        pr_alarm(SUSPEND, "alarm_resume(%p)\n", pdev);
 
        memset(&alarm, 0, sizeof(alarm));
+       rtc_time_to_tm(0, &alarm.time);
        alarm.enabled = 0;
        rtc_set_alarm(alarm_rtc_dev, &alarm);
 
@@ -461,6 +463,18 @@ static int alarm_resume(struct platform_device *pdev)
        return 0;
 }
 
+static void alarm_shutdown(struct platform_device *pdev)
+{
+       struct rtc_wkalrm alarm;
+
+       pr_alarm(FLOW, "alarm_shutdown(%p)\n", pdev);
+
+       memset(&alarm, 0, sizeof(alarm));
+       rtc_time_to_tm(0, &alarm.time);
+       alarm.enabled = 0;
+       rtc_set_alarm(alarm_rtc_dev, &alarm);
+}
+
 static struct rtc_task alarm_rtc_task = {
        .func = alarm_triggered_func
 };
@@ -520,6 +534,7 @@ static struct class_interface rtc_alarm_interface = {
 static struct platform_driver alarm_driver = {
        .suspend = alarm_suspend,
        .resume = alarm_resume,
+       .shutdown = alarm_shutdown,
        .driver = {
                .name = "alarm"
        }