kn02xa.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. * Hardware info common to DECstation 5000/1xx systems (otherwise
  3. * known as 3min or kn02ba) and Personal DECstations 5000/xx ones
  4. * (otherwise known as maxine or kn02ca).
  5. *
  6. * This file is subject to the terms and conditions of the GNU General Public
  7. * License. See the file "COPYING" in the main directory of this archive
  8. * for more details.
  9. *
  10. * Copyright (C) 1995,1996 by Paul M. Antoine, some code and definitions
  11. * are by courtesy of Chris Fraser.
  12. * Copyright (C) 2000, 2002, 2003, 2005 Maciej W. Rozycki
  13. *
  14. * These are addresses which have to be known early in the boot process.
  15. * For other addresses refer to tc.h, ioasic_addrs.h and friends.
  16. */
  17. #ifndef __ASM_MIPS_DEC_KN02XA_H
  18. #define __ASM_MIPS_DEC_KN02XA_H
  19. #include <asm/addrspace.h>
  20. #include <asm/dec/ioasic_addrs.h>
  21. #define KN02XA_SLOT_BASE CKSEG1ADDR(0x1c000000)
  22. /*
  23. * Some port addresses...
  24. */
  25. #define KN02XA_IOASIC_BASE (KN02XA_SLOT_BASE + IOASIC_IOCTL) /* I/O ASIC */
  26. #define KN02XA_RTC_BASE (KN02XA_SLOT_BASE + IOASIC_TOY) /* RTC */
  27. /*
  28. * Memory control ASIC registers.
  29. */
  30. #define KN02XA_MER CKSEG1ADDR(0x0c400000) /* memory error register */
  31. #define KN02XA_MSR CKSEG1ADDR(0x0c800000) /* memory size register */
  32. /*
  33. * CPU control ASIC registers.
  34. */
  35. #define KN02XA_MEM_CONF CKSEG1ADDR(0x0e000000) /* write timeout config */
  36. #define KN02XA_EAR CKSEG1ADDR(0x0e000004) /* error address register */
  37. #define KN02XA_BOOT0 CKSEG1ADDR(0x0e000008) /* boot 0 register */
  38. #define KN02XA_MEM_INTR CKSEG1ADDR(0x0e00000c) /* write err IRQ stat & ack */
  39. /*
  40. * Memory Error Register bits, common definitions.
  41. * The rest is defined in system-specific headers.
  42. */
  43. #define KN02XA_MER_RES_28 (0xf<<28) /* unused */
  44. #define KN02XA_MER_RES_17 (0x3ff<<17) /* unused */
  45. #define KN02XA_MER_PAGERR (1<<16) /* 2k page boundary error */
  46. #define KN02XA_MER_TRANSERR (1<<15) /* transfer length error */
  47. #define KN02XA_MER_PARDIS (1<<14) /* parity error disable */
  48. #define KN02XA_MER_SIZE (1<<13) /* r/o mirror of MSR_SIZE */
  49. #define KN02XA_MER_RES_12 (1<<12) /* unused */
  50. #define KN02XA_MER_BYTERR (0xf<<8) /* byte lane error bitmask: */
  51. #define KN02XA_MER_BYTERR_3 (0x8<<8) /* byte lane #3 */
  52. #define KN02XA_MER_BYTERR_2 (0x4<<8) /* byte lane #2 */
  53. #define KN02XA_MER_BYTERR_1 (0x2<<8) /* byte lane #1 */
  54. #define KN02XA_MER_BYTERR_0 (0x1<<8) /* byte lane #0 */
  55. #define KN02XA_MER_RES_0 (0xff<<0) /* unused */
  56. /*
  57. * Memory Size Register bits, common definitions.
  58. * The rest is defined in system-specific headers.
  59. */
  60. #define KN02XA_MSR_RES_27 (0x1f<<27) /* unused */
  61. #define KN02XA_MSR_RES_14 (0x7<<14) /* unused */
  62. #define KN02XA_MSR_SIZE (1<<13) /* 16M/4M stride */
  63. #define KN02XA_MSR_RES_0 (0x1fff<<0) /* unused */
  64. /*
  65. * Error Address Register bits.
  66. */
  67. #define KN02XA_EAR_RES_29 (0x7<<29) /* unused */
  68. #define KN02XA_EAR_ADDRESS (0x7ffffff<<2) /* address involved */
  69. #define KN02XA_EAR_RES_0 (0x3<<0) /* unused */
  70. #ifndef __ASSEMBLY__
  71. #include <linux/interrupt.h>
  72. struct pt_regs;
  73. extern void dec_kn02xa_be_init(void);
  74. extern int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup);
  75. extern irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id,
  76. struct pt_regs *regs);
  77. #endif
  78. #endif /* __ASM_MIPS_DEC_KN02XA_H */