Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Hardware info common to DECstation 5000/1xx systems (otherwise
0003  * known as 3min or kn02ba) and Personal DECstations 5000/xx ones
0004  * (otherwise known as maxine or kn02ca).
0005  *
0006  * This file is subject to the terms and conditions of the GNU General Public
0007  * License.  See the file "COPYING" in the main directory of this archive
0008  * for more details.
0009  *
0010  * Copyright (C) 1995,1996 by Paul M. Antoine, some code and definitions
0011  * are by courtesy of Chris Fraser.
0012  * Copyright (C) 2000, 2002, 2003, 2005  Maciej W. Rozycki
0013  *
0014  * These are addresses which have to be known early in the boot process.
0015  * For other addresses refer to tc.h, ioasic_addrs.h and friends.
0016  */
0017 #ifndef __ASM_MIPS_DEC_KN02XA_H
0018 #define __ASM_MIPS_DEC_KN02XA_H
0019 
0020 #include <asm/dec/ioasic_addrs.h>
0021 
0022 #define KN02XA_SLOT_BASE    0x1c000000
0023 
0024 /*
0025  * Memory control ASIC registers.
0026  */
0027 #define KN02XA_MER      0x0c400000  /* memory error register */
0028 #define KN02XA_MSR      0x0c800000  /* memory size register */
0029 
0030 /*
0031  * CPU control ASIC registers.
0032  */
0033 #define KN02XA_MEM_CONF     0x0e000000  /* write timeout config */
0034 #define KN02XA_EAR      0x0e000004  /* error address register */
0035 #define KN02XA_BOOT0        0x0e000008  /* boot 0 register */
0036 #define KN02XA_MEM_INTR     0x0e00000c  /* write err IRQ stat & ack */
0037 
0038 /*
0039  * Memory Error Register bits, common definitions.
0040  * The rest is defined in system-specific headers.
0041  */
0042 #define KN02XA_MER_RES_28   (0xf<<28)   /* unused */
0043 #define KN02XA_MER_RES_17   (0x3ff<<17) /* unused */
0044 #define KN02XA_MER_PAGERR   (1<<16)     /* 2k page boundary error */
0045 #define KN02XA_MER_TRANSERR (1<<15)     /* transfer length error */
0046 #define KN02XA_MER_PARDIS   (1<<14)     /* parity error disable */
0047 #define KN02XA_MER_SIZE     (1<<13)     /* r/o mirror of MSR_SIZE */
0048 #define KN02XA_MER_RES_12   (1<<12)     /* unused */
0049 #define KN02XA_MER_BYTERR   (0xf<<8)    /* byte lane error bitmask: */
0050 #define KN02XA_MER_BYTERR_3 (0x8<<8)    /* byte lane #3 */
0051 #define KN02XA_MER_BYTERR_2 (0x4<<8)    /* byte lane #2 */
0052 #define KN02XA_MER_BYTERR_1 (0x2<<8)    /* byte lane #1 */
0053 #define KN02XA_MER_BYTERR_0 (0x1<<8)    /* byte lane #0 */
0054 #define KN02XA_MER_RES_0    (0xff<<0)   /* unused */
0055 
0056 /*
0057  * Memory Size Register bits, common definitions.
0058  * The rest is defined in system-specific headers.
0059  */
0060 #define KN02XA_MSR_RES_27   (0x1f<<27)  /* unused */
0061 #define KN02XA_MSR_RES_14   (0x7<<14)   /* unused */
0062 #define KN02XA_MSR_SIZE     (1<<13)     /* 16M/4M stride */
0063 #define KN02XA_MSR_RES_0    (0x1fff<<0) /* unused */
0064 
0065 /*
0066  * Error Address Register bits.
0067  */
0068 #define KN02XA_EAR_RES_29   (0x7<<29)   /* unused */
0069 #define KN02XA_EAR_ADDRESS  (0x7ffffff<<2)  /* address involved */
0070 #define KN02XA_EAR_RES_0    (0x3<<0)    /* unused */
0071 
0072 
0073 #ifndef __ASSEMBLY__
0074 
0075 #include <linux/interrupt.h>
0076 
0077 struct pt_regs;
0078 
0079 extern void dec_kn02xa_be_init(void);
0080 extern int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup);
0081 extern irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id);
0082 #endif
0083 
0084 #endif /* __ASM_MIPS_DEC_KN02XA_H */