Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / mips / dec / prom / identify.c
index 9380588..81d5e87 100644 (file)
@@ -2,7 +2,7 @@
  * identify.c: machine identification code.
  *
  * Copyright (C) 1998 Harald Koerfgen and Paul M. Antoine
- * Copyright (C) 2002, 2003, 2004  Maciej W. Rozycki
+ * Copyright (C) 2002, 2003, 2004, 2005  Maciej W. Rozycki
  */
 #include <linux/init.h>
 #include <linux/kernel.h>
@@ -12,6 +12,7 @@
 #include <linux/types.h>
 
 #include <asm/bootinfo.h>
+
 #include <asm/dec/ioasic.h>
 #include <asm/dec/ioasic_addrs.h>
 #include <asm/dec/kn01.h>
@@ -21,6 +22,7 @@
 #include <asm/dec/kn03.h>
 #include <asm/dec/kn230.h>
 #include <asm/dec/prom.h>
+#include <asm/dec/system.h>
 
 #include "dectypes.h"
 
@@ -68,34 +70,44 @@ EXPORT_SYMBOL(dec_rtc_base);
 
 static inline void prom_init_kn01(void)
 {
-       dec_rtc_base = (void *)KN01_RTC_BASE;
+       dec_kn_slot_base = KN01_SLOT_BASE;
        dec_kn_slot_size = KN01_SLOT_SIZE;
+
+       dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN01_RTC);
 }
 
 static inline void prom_init_kn230(void)
 {
-       dec_rtc_base = (void *)KN01_RTC_BASE;
+       dec_kn_slot_base = KN01_SLOT_BASE;
        dec_kn_slot_size = KN01_SLOT_SIZE;
+
+       dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN01_RTC);
 }
 
 static inline void prom_init_kn02(void)
 {
-       dec_rtc_base = (void *)KN02_RTC_BASE;
+       dec_kn_slot_base = KN02_SLOT_BASE;
        dec_kn_slot_size = KN02_SLOT_SIZE;
+
+       dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN02_RTC);
 }
 
 static inline void prom_init_kn02xa(void)
 {
-       ioasic_base = (void *)KN02XA_IOASIC_BASE;
-       dec_rtc_base = (void *)KN02XA_RTC_BASE;
+       dec_kn_slot_base = KN02XA_SLOT_BASE;
        dec_kn_slot_size = IOASIC_SLOT_SIZE;
+
+       ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL);
+       dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY);
 }
 
 static inline void prom_init_kn03(void)
 {
-       ioasic_base = (void *)KN03_IOASIC_BASE;
-       dec_rtc_base = (void *)KN03_RTC_BASE;
+       dec_kn_slot_base = KN03_SLOT_BASE;
        dec_kn_slot_size = IOASIC_SLOT_SIZE;
+
+       ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL);
+       dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY);
 }