crime.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:7k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * Definitions for the SGI O2 Crime chip.
  3.  *
  4.  * This file is subject to the terms and conditions of the GNU General Public
  5.  * License.  See the file "COPYING" in the main directory of this archive
  6.  * for more details.
  7.  *
  8.  * Copyright (C) 2000 Harald Koerfgen
  9.  */
  10. #ifndef __ASM_CRIME_H__
  11. #define __ASM_CRIME_H__
  12. #include <asm/addrspace.h>
  13. /*
  14.  * Address map
  15.  */
  16. #ifndef __ASSEMBLY__
  17. #define CRIME_BASE KSEG1ADDR(0x14000000)
  18. #else
  19. #define CRIME_BASE 0xffffffffb4000000
  20. #endif
  21. #ifndef __ASSEMBLY__
  22. static inline u64 crime_read_64 (unsigned long __offset) {
  23.         return *((volatile u64 *) (CRIME_BASE + __offset));
  24. }
  25. static inline void crime_write_64 (unsigned long __offset, u64 __val) {
  26.         *((volatile u64 *) (CRIME_BASE + __offset)) = __val;
  27. }
  28. #endif
  29. #undef BIT
  30. #define BIT(x) (1UL << (x))
  31. /* All CRIME registers are 64 bits */
  32. #define CRIME_ID 0
  33. #define CRIME_ID_MASK 0xff
  34. #define CRIME_ID_IDBITS 0xf0
  35. #define CRIME_ID_IDVALUE 0xa0
  36. #define CRIME_ID_REV 0x0f
  37. #define CRIME_REV_PETTY 0x00
  38. #define CRIME_REV_11 0x11
  39. #define CRIME_REV_13 0x13
  40. #define CRIME_REV_14 0x14
  41. #define CRIME_CONTROL (0x00000008)
  42. #define CRIME_CONTROL_MASK 0x3fff /* 14-bit registers */
  43. /* CRIME_CONTROL register bits */
  44. #define CRIME_CONTROL_TRITON_SYSADC 0x2000
  45. #define CRIME_CONTROL_CRIME_SYSADC 0x1000
  46. #define CRIME_CONTROL_HARD_RESET 0x0800
  47. #define CRIME_CONTROL_SOFT_RESET 0x0400
  48. #define CRIME_CONTROL_DOG_ENA 0x0200
  49. #define CRIME_CONTROL_ENDIANESS 0x0100
  50. #define CRIME_CONTROL_ENDIAN_BIG 0x0100
  51. #define CRIME_CONTROL_ENDIAN_LITTLE 0x0000
  52. #define CRIME_CONTROL_CQUEUE_HWM 0x000f
  53. #define CRIME_CONTROL_CQUEUE_SHFT 0
  54. #define CRIME_CONTROL_WBUF_HWM 0x00f0
  55. #define CRIME_CONTROL_WBUF_SHFT 8
  56. #define CRIME_INT_STAT (0x00000010)
  57. #define CRIME_INT_MASK (0x00000018)
  58. #define CRIME_SOFT_INT (0x00000020)
  59. #define CRIME_HARD_INT (0x00000028)
  60. /* Bits in CRIME_INT_XXX and CRIME_HARD_INT */
  61. #define MACE_VID_IN1_INT BIT (0)
  62. #define MACE_VID_IN2_INT BIT (1)
  63. #define MACE_VID_OUT_INT BIT (2)
  64. #define MACE_ETHERNET_INT BIT (3)
  65. #define MACE_SUPERIO_INT BIT (4)
  66. #define MACE_MISC_INT BIT (5)
  67. #define MACE_AUDIO_INT BIT (6)
  68. #define MACE_PCI_BRIDGE_INT BIT (7)
  69. #define MACEPCI_SCSI0_INT BIT (8)
  70. #define MACEPCI_SCSI1_INT BIT (9)
  71. #define MACEPCI_SLOT0_INT BIT (10)
  72. #define MACEPCI_SLOT1_INT BIT (11)
  73. #define MACEPCI_SLOT2_INT BIT (12)
  74. #define MACEPCI_SHARED0_INT BIT (13)
  75. #define MACEPCI_SHARED1_INT BIT (14)
  76. #define MACEPCI_SHARED2_INT BIT (15)
  77. #define CRIME_GBE0_INT BIT (16)
  78. #define CRIME_GBE1_INT BIT (17)
  79. #define CRIME_GBE2_INT BIT (18)
  80. #define CRIME_GBE3_INT BIT (19)
  81. #define CRIME_CPUERR_INT BIT (20)
  82. #define CRIME_MEMERR_INT BIT (21)
  83. #define CRIME_RE_EMPTY_E_INT BIT (22)
  84. #define CRIME_RE_FULL_E_INT BIT (23)
  85. #define CRIME_RE_IDLE_E_INT BIT (24)
  86. #define CRIME_RE_EMPTY_L_INT BIT (25)
  87. #define CRIME_RE_FULL_L_INT BIT (26)
  88. #define CRIME_RE_IDLE_L_INT     BIT (27)
  89. #define CRIME_SOFT0_INT BIT (28)
  90. #define CRIME_SOFT1_INT BIT (29)
  91. #define CRIME_SOFT2_INT BIT (30)
  92. #define CRIME_SYSCORERR_INT CRIME_SOFT2_INT
  93. #define CRIME_VICE_INT BIT (31)
  94. /* Masks for deciding who handles the interrupt */
  95. #define CRIME_MACE_INT_MASK 0x8f
  96. #define CRIME_MACEISA_INT_MASK 0x70
  97. #define CRIME_MACEPCI_INT_MASK 0xff00
  98. #define CRIME_CRIME_INT_MASK 0xffff0000
  99. /*
  100.  * XXX Todo
  101.  */
  102. #define CRIME_DOG (0x00000030)
  103. /* We are word-play compatible but not misspelling compatible */
  104. #define MC_GRUFF CRIME_DOG
  105. #define CRIME_DOG_MASK (0x001fffff)
  106. /* CRIME_DOG register bits */
  107. #define CRIME_DOG_POWER_ON_RESET (0x00010000)
  108. #define CRIME_DOG_WARM_RESET (0x00080000)
  109. #define CRIME_DOG_TIMEOUT (CRIME_DOG_POWER_ON_RESET|CRIME_DOG_WARM_RESET)
  110. #define CRIME_DOG_VALUE (0x00007fff) /* ??? */
  111. #define CRIME_TIME (0x00000038)
  112. #define CRIME_TIME_MASK (0x0000ffffffffffff)
  113. #ifdef MASTER_FREQ
  114. #undef MASTER_FREQ
  115. #endif
  116. #define CRIME_MASTER_FREQ 66666500 /* Crime upcounter frequency */
  117. #define CRIME_NS_PER_TICK 15 /* for delay_calibrate */
  118. #define CRIME_CPU_ERROR_ADDR (0x00000040)
  119. #define CRIME_CPU_ERROR_ADDR_MASK (0x3ffffffff)
  120. #define CRIME_CPU_ERROR_STAT (0x00000048)
  121. /* REV_PETTY only! */
  122. #define CRIME_CPU_ERROR_ENA (0x00000050)
  123. /*
  124.  * bit definitions for CRIME/VICE error status and enable registers
  125.  */
  126. #define CRIME_CPU_ERROR_MASK           0x7UL   /* cpu error stat is 3 bits */
  127. #define CRIME_CPU_ERROR_CPU_ILL_ADDR   0x4
  128. #define CRIME_CPU_ERROR_VICE_WRT_PRTY  0x2
  129. #define CRIME_CPU_ERROR_CPU_WRT_PRTY   0x1
  130. /*
  131.  * these are the definitions for the error status/enable  register in
  132.  * petty crime.  Note that the enable register does not exist in crime
  133.  * rev 1 and above.
  134.  */
  135. #define CRIME_CPU_ERROR_MASK_REV0 0x3ff /* cpu error stat is 9 bits */
  136. #define CRIME_CPU_ERROR_CPU_INV_ADDR_RD 0x200
  137. #define CRIME_CPU_ERROR_VICE_II 0x100
  138. #define CRIME_CPU_ERROR_VICE_SYSAD 0x80
  139. #define CRIME_CPU_ERROR_VICE_SYSCMD 0x40
  140. #define CRIME_CPU_ERROR_VICE_INV_ADDR 0x20
  141. #define CRIME_CPU_ERROR_CPU_II 0x10
  142. #define CRIME_CPU_ERROR_CPU_SYSAD 0x8
  143. #define CRIME_CPU_ERROR_CPU_SYSCMD 0x4
  144. #define CRIME_CPU_ERROR_CPU_INV_ADDR_WR 0x2
  145. #define CRIME_CPU_ERROR_CPU_INV_REG_ADDR 0x1
  146. #define CRIME_VICE_ERROR_ADDR (0x00000058)
  147. #define CRIME_VICE_ERROR_ADDR_MASK (0x3fffffff)
  148. #define CRIME_MEM_CONTROL (0x00000200)
  149. #define CRIME_MEM_CONTROL_MASK 0x3 /* 25 cent register */
  150. #define CRIME_MEM_CONTROL_ECC_ENA 0x1
  151. #define CRIME_MEM_CONTROL_USE_ECC_REPL 0x2
  152. /*
  153.  * macros for CRIME memory bank control registers.
  154.  */
  155. #define CRIME_MEM_BANK_CONTROL(__bank) (0x00000208 + ((__bank) << 3))
  156. #define CRIME_MEM_BANK_CONTROL_MSK 0x11f /* 9 bits 7:5 reserved */
  157. #define CRIME_MEM_BANK_CONTROL_ADDR 0x01f
  158. #define CRIME_MEM_BANK_CONTROL_SDRAM_SIZE 0x100
  159. #define CRIME_MEM_BANK_CONTROL_BANK_TO_ADDR(__bank) 
  160. (((__bank) & CRIME_MEM_BANK_CONTROL_ADDR) << 25)
  161. #define CRIME_MEM_REFRESH_COUNTER (0x00000248)
  162. #define CRIME_MEM_REFRESH_COUNTER_MASK 0x7ff /* 11-bit register */
  163. #define CRIME_MAXBANKS                 8
  164. /*
  165.  * CRIME Memory error status register bit definitions
  166.  */
  167. #define CRIME_MEM_ERROR_STAT (0x00000250)
  168. #define CRIME_MEM_ERROR_STAT_MASK       0x0ff7ffff    /* 28-bit register */
  169. #define CRIME_MEM_ERROR_MACE_ID 0x0000007f
  170. #define CRIME_MEM_ERROR_MACE_ACCESS 0x00000080
  171. #define CRIME_MEM_ERROR_RE_ID 0x00007f00
  172. #define CRIME_MEM_ERROR_RE_ACCESS 0x00008000
  173. #define CRIME_MEM_ERROR_GBE_ACCESS 0x00010000
  174. #define CRIME_MEM_ERROR_VICE_ACCESS 0x00020000
  175. #define CRIME_MEM_ERROR_CPU_ACCESS 0x00040000
  176. #define CRIME_MEM_ERROR_RESERVED 0x00080000
  177. #define CRIME_MEM_ERROR_SOFT_ERR 0x00100000
  178. #define CRIME_MEM_ERROR_HARD_ERR 0x00200000
  179. #define CRIME_MEM_ERROR_MULTIPLE 0x00400000
  180. #define CRIME_MEM_ERROR_MEM_ECC_RD 0x00800000
  181. #define CRIME_MEM_ERROR_MEM_ECC_RMW 0x01000000
  182. #define CRIME_MEM_ERROR_INV_MEM_ADDR_RD 0x02000000
  183. #define CRIME_MEM_ERROR_INV_MEM_ADDR_WR 0x04000000
  184. #define CRIME_MEM_ERROR_INV_MEM_ADDR_RMW 0x08000000
  185. #define CRIME_MEM_ERROR_ADDR (0x00000258)
  186. #define CRIME_MEM_ERROR_ADDR_MASK 0x3fffffff
  187. #define CRIME_MEM_ERROR_ECC_SYN (0x00000260)
  188. #define CRIME_MEM_ERROR_ECC_SYN_MASK 0xffffffff
  189. #define CRIME_MEM_ERROR_ECC_CHK (0x00000268)
  190. #define CRIME_MEM_ERROR_ECC_CHK_MASK    0xffffffff
  191. #define CRIME_MEM_ERROR_ECC_REPL (0x00000270)
  192. #define CRIME_MEM_ERROR_ECC_REPL_MASK 0xffffffff
  193. #endif /* __ASM_CRIME_H__ */