fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / ppc / syslib / todc_time.c
index c1eb1f4..a8168b8 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * arch/ppc/syslib/todc_time.c
- *
  * Time of Day Clock support for the M48T35, M48T37, M48T59, and MC146818
  * Real Time Clocks/Timekeepers.
  *
@@ -18,6 +16,7 @@
 #include <linux/time.h>
 #include <linux/timex.h>
 #include <linux/bcd.h>
+#include <linux/mc146818rtc.h>
 
 #include <asm/machdep.h>
 #include <asm/io.h>
@@ -48,8 +47,6 @@
  *                                             --MAG
  */
 
-extern spinlock_t      rtc_lock;
-
 /*
  * 'todc_info' should be initialized in your *_setup.c file to
  * point to a fully initialized 'todc_info_t' structure.
@@ -82,13 +79,13 @@ extern spinlock_t   rtc_lock;
 u_char
 todc_direct_read_val(int addr)
 {
-       return readb(todc_info->nvram_data + addr);
+       return readb((void __iomem *)(todc_info->nvram_data + addr));
 }
 
 void
 todc_direct_write_val(int addr, unsigned char val)
 {
-       writeb(val, todc_info->nvram_data + addr);
+       writeb(val, (void __iomem *)(todc_info->nvram_data + addr));
        return;
 }
 
@@ -277,9 +274,9 @@ todc_time_init(void)
 ulong
 todc_get_rtc_time(void)
 {
-       uint    year, mon, day, hour, min, sec;
+       uint    year = 0, mon = 0, day = 0, hour = 0, min = 0, sec = 0;
        uint    limit, i;
-       u_char  save_control, uip;
+       u_char  save_control, uip = 0;
 
        spin_lock(&rtc_lock);
        save_control = todc_read_val(todc_info->control_a);
@@ -288,6 +285,7 @@ todc_get_rtc_time(void)
                limit = 1;
 
                switch (todc_info->rtc_type) {
+                       case TODC_TYPE_DS1553:
                        case TODC_TYPE_DS1557:
                        case TODC_TYPE_DS1743:
                        case TODC_TYPE_DS1746:  /* XXXX BAD HACK -> FIX */
@@ -323,6 +321,7 @@ todc_get_rtc_time(void)
 
        if (todc_info->rtc_type != TODC_TYPE_MC146818) {
                switch (todc_info->rtc_type) {
+                       case TODC_TYPE_DS1553:
                        case TODC_TYPE_DS1557:
                        case TODC_TYPE_DS1743:
                        case TODC_TYPE_DS1746:  /* XXXX BAD HACK -> FIX */
@@ -361,7 +360,7 @@ int
 todc_set_rtc_time(unsigned long nowtime)
 {
        struct rtc_time tm;
-       u_char          save_control, save_freq_select;
+       u_char          save_control, save_freq_select = 0;
 
        spin_lock(&rtc_lock);
        to_tm(nowtime, &tm);
@@ -416,9 +415,10 @@ todc_set_rtc_time(unsigned long nowtime)
  */
 static unsigned char __init todc_read_timereg(int addr)
 {
-       unsigned char save_control, val;
+       unsigned char save_control = 0, val;
 
        switch (todc_info->rtc_type) {
+               case TODC_TYPE_DS1553:
                case TODC_TYPE_DS1557:
                case TODC_TYPE_DS1746:  /* XXXX BAD HACK -> FIX */
                case TODC_TYPE_DS1747:
@@ -433,6 +433,7 @@ static unsigned char __init todc_read_timereg(int addr)
        val = todc_read_val(addr);
 
        switch (todc_info->rtc_type) {
+               case TODC_TYPE_DS1553:
                case TODC_TYPE_DS1557:
                case TODC_TYPE_DS1746:  /* XXXX BAD HACK -> FIX */
                case TODC_TYPE_DS1747: