vserver 2.0 rc7
[linux-2.6.git] / arch / arm / mach-integrator / time.c
index 249581f..1a844ca 100644 (file)
@@ -40,25 +40,32 @@ static int integrator_set_rtc(void)
        return 1;
 }
 
-static void rtc_read_alarm(struct rtc_wkalrm *alrm)
+static int rtc_read_alarm(struct rtc_wkalrm *alrm)
 {
        rtc_time_to_tm(readl(rtc_base + RTC_MR), &alrm->time);
+       return 0;
 }
 
-static int rtc_set_alarm(struct rtc_wkalrm *alrm)
+static inline int rtc_set_alarm(struct rtc_wkalrm *alrm)
 {
        unsigned long time;
        int ret;
 
-       ret = rtc_tm_to_time(&alrm->time, &time);
+       /*
+        * At the moment, we can only deal with non-wildcarded alarm times.
+        */
+       ret = rtc_valid_tm(&alrm->time);
+       if (ret == 0)
+               ret = rtc_tm_to_time(&alrm->time, &time);
        if (ret == 0)
                writel(time, rtc_base + RTC_MR);
        return ret;
 }
 
-static void rtc_read_time(struct rtc_time *tm)
+static int rtc_read_time(struct rtc_time *tm)
 {
        rtc_time_to_tm(readl(rtc_base + RTC_DR), tm);
+       return 0;
 }
 
 /*
@@ -69,7 +76,7 @@ static void rtc_read_time(struct rtc_time *tm)
  * edge of the 1Hz clock, we must write the time one second
  * in advance.
  */
-static int rtc_set_time(struct rtc_time *tm)
+static inline int rtc_set_time(struct rtc_time *tm)
 {
        unsigned long time;
        int ret;
@@ -158,7 +165,7 @@ static int rtc_remove(struct amba_device *dev)
 
 static struct timespec rtc_delta;
 
-static int rtc_suspend(struct amba_device *dev, u32 state)
+static int rtc_suspend(struct amba_device *dev, pm_message_t state)
 {
        struct timespec rtc;