powerpc: move iSeries_setup.[ch] and mf.c into platforms/iseries
[linux-2.6.git] / arch / ppc64 / kernel / rtc.c
index de02aed..88ae13f 100644 (file)
@@ -35,6 +35,7 @@
 #include <linux/spinlock.h>
 #include <linux/bcd.h>
 #include <linux/interrupt.h>
+#include <linux/delay.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
 #include <asm/time.h>
 #include <asm/rtas.h>
 
-#include <asm/iSeries/mf.h>
 #include <asm/machdep.h>
 
-extern int piranha_simulator;
-
 /*
  *     We sponge a minor off of the misc major. No need slurping
  *     up another valuable major dev number for this. If you add
@@ -264,44 +262,10 @@ static int rtc_read_proc(char *page, char **start, off_t off,
         return len;
 }
 
-#ifdef CONFIG_PPC_ISERIES
-/*
- * Get the RTC from the virtual service processor
- * This requires flowing LpEvents to the primary partition
- */
-void iSeries_get_rtc_time(struct rtc_time *rtc_tm)
-{
-       if (piranha_simulator)
-               return;
-
-       mf_get_rtc(rtc_tm);
-       rtc_tm->tm_mon--;
-}
-
-/*
- * Set the RTC in the virtual service processor
- * This requires flowing LpEvents to the primary partition
- */
-int iSeries_set_rtc_time(struct rtc_time *tm)
-{
-       mf_set_rtc(tm);
-       return 0;
-}
-
-void iSeries_get_boot_time(struct rtc_time *tm)
-{
-       if ( piranha_simulator )
-               return;
-
-       mf_get_boot_rtc(tm);
-       tm->tm_mon  -= 1;
-}
-#endif
-
 #ifdef CONFIG_PPC_RTAS
 #define MAX_RTC_WAIT 5000      /* 5 sec */
 #define RTAS_CLOCK_BUSY (-2)
-void pSeries_get_boot_time(struct rtc_time *rtc_tm)
+void rtas_get_boot_time(struct rtc_time *rtc_tm)
 {
        int ret[8];
        int error, wait_time;
@@ -336,7 +300,7 @@ void pSeries_get_boot_time(struct rtc_time *rtc_tm)
  * and if a delay is needed to read the clock.  In this case we just
  * silently return without updating rtc_tm.
  */
-void pSeries_get_rtc_time(struct rtc_time *rtc_tm)
+void rtas_get_rtc_time(struct rtc_time *rtc_tm)
 {
         int ret[8];
        int error, wait_time;
@@ -351,8 +315,7 @@ void pSeries_get_rtc_time(struct rtc_time *rtc_tm)
                                return; /* delay not allowed */
                        }
                        wait_time = rtas_extended_busy_delay_time(error);
-                       set_current_state(TASK_INTERRUPTIBLE);
-                       schedule_timeout(wait_time);
+                       msleep_interruptible(wait_time);
                        error = RTAS_CLOCK_BUSY;
                }
        } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb));
@@ -371,7 +334,7 @@ void pSeries_get_rtc_time(struct rtc_time *rtc_tm)
        rtc_tm->tm_year = ret[0] - 1900;
 }
 
-int pSeries_set_rtc_time(struct rtc_time *tm)
+int rtas_set_rtc_time(struct rtc_time *tm)
 {
        int error, wait_time;
        unsigned long max_wait_tb;
@@ -386,8 +349,7 @@ int pSeries_set_rtc_time(struct rtc_time *tm)
                        if (in_interrupt())
                                return 1;       /* probably decrementer */
                        wait_time = rtas_extended_busy_delay_time(error);
-                       set_current_state(TASK_INTERRUPTIBLE);
-                       schedule_timeout(wait_time);
+                       msleep_interruptible(wait_time);
                        error = RTAS_CLOCK_BUSY;
                }
        } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb));