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] / include / asm-mips / dec / kn02xa.h
index 648c4dc..a25f3d7 100644 (file)
@@ -9,7 +9,7 @@
  *
  * Copyright (C) 1995,1996 by Paul M. Antoine, some code and definitions
  * are by courtesy of Chris Fraser.
- * Copyright (C) 2000, 2002, 2003  Maciej W. Rozycki
+ * Copyright (C) 2000, 2002, 2003, 2005  Maciej W. Rozycki
  *
  * These are addresses which have to be known early in the boot process.
  * For other addresses refer to tc.h, ioasic_addrs.h and friends.
 #ifndef __ASM_MIPS_DEC_KN02XA_H
 #define __ASM_MIPS_DEC_KN02XA_H
 
-#include <asm/addrspace.h>
 #include <asm/dec/ioasic_addrs.h>
 
-#define KN02XA_SLOT_BASE       KSEG1ADDR(0x1c000000)
-
-/*
- * Some port addresses...
- */
-#define KN02XA_IOASIC_BASE    (KN02XA_SLOT_BASE + IOASIC_IOCTL)        /* I/O ASIC */
-#define KN02XA_RTC_BASE                (KN02XA_SLOT_BASE + IOASIC_TOY) /* RTC */
-
+#define KN02XA_SLOT_BASE       0x1c000000
 
 /*
  * Memory control ASIC registers.
  */
-#define KN02XA_MER     KSEG1ADDR(0x0c400000)   /* memory error register */
-#define KN02XA_MSR     KSEG1ADDR(0x0c800000)   /* memory size register */
+#define KN02XA_MER             0x0c400000      /* memory error register */
+#define KN02XA_MSR             0x0c800000      /* memory size register */
 
 /*
  * CPU control ASIC registers.
  */
-#define KN02XA_MEM_CONF        KSEG1ADDR(0x0e000000)   /* write timeout config */
-#define KN02XA_EAR     KSEG1ADDR(0x0e000004)   /* error address register */
-#define KN02XA_BOOT0   KSEG1ADDR(0x0e000008)   /* boot 0 register */
-#define KN02XA_MEM_INTR        KSEG1ADDR(0x0e00000c)   /* write err IRQ stat & ack */
+#define KN02XA_MEM_CONF                0x0e000000      /* write timeout config */
+#define KN02XA_EAR             0x0e000004      /* error address register */
+#define KN02XA_BOOT0           0x0e000008      /* boot 0 register */
+#define KN02XA_MEM_INTR                0x0e00000c      /* write err IRQ stat & ack */
 
 /*
  * Memory Error Register bits, common definitions.
 #define KN02XA_MER_PAGERR      (1<<16)         /* 2k page boundary error */
 #define KN02XA_MER_TRANSERR    (1<<15)         /* transfer length error */
 #define KN02XA_MER_PARDIS      (1<<14)         /* parity error disable */
-#define KN02XA_MER_RES_12      (0x3<<12)       /* unused */
-#define KN02XA_MER_BYTERR      (0xf<<8)        /* byte lane error bitmask */
+#define KN02XA_MER_SIZE                (1<<13)         /* r/o mirror of MSR_SIZE */
+#define KN02XA_MER_RES_12      (1<<12)         /* unused */
+#define KN02XA_MER_BYTERR      (0xf<<8)        /* byte lane error bitmask: */
+#define KN02XA_MER_BYTERR_3    (0x8<<8)        /* byte lane #3 */
+#define KN02XA_MER_BYTERR_2    (0x4<<8)        /* byte lane #2 */
+#define KN02XA_MER_BYTERR_1    (0x2<<8)        /* byte lane #1 */
+#define KN02XA_MER_BYTERR_0    (0x1<<8)        /* byte lane #0 */
 #define KN02XA_MER_RES_0       (0xff<<0)       /* unused */
 
 /*
 #define KN02XA_EAR_ADDRESS     (0x7ffffff<<2)  /* address involved */
 #define KN02XA_EAR_RES_0       (0x3<<0)        /* unused */
 
+
+#ifndef __ASSEMBLY__
+
+#include <linux/interrupt.h>
+
+struct pt_regs;
+
+extern void dec_kn02xa_be_init(void);
+extern int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup);
+extern irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id,
+                                          struct pt_regs *regs);
+#endif
+
 #endif /* __ASM_MIPS_DEC_KN02XA_H */