vbic.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:10k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* vbic.h - SBE VBIC Chip Set header */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,22sep92,rrr  added support for c++
  7. 01d,26may92,rrr  the tree shuffle
  8. 01c,04oct91,rrr  passed through the ansification filter
  9.   -changed ASMLANGUAGE to _ASMLANGUAGE
  10.   -changed copyright notice
  11. 01b,05oct90,shl  added copyright notice.
  12.                  made #endif ANSI style.
  13. 01a,10sep89,rld  original SBE release.
  14. */
  15. /*
  16. This header file defines the register layout of the SBE VMEbus
  17. Interface Controller chip (VBIC) and supplies alpha-numeric
  18. equivalences for register bit definitions.
  19. */
  20. #ifndef __INCvbich
  21. #define __INCvbich
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #ifdef _ASMLANGUAGE
  26. #define VBIC_ADRS(reg) (VBIC + (reg*VBIC_REG_OFFSET))
  27. #else
  28. #define VBIC_ADRS(reg) ((char *) VBIC + (reg*VBIC_REG_OFFSET))
  29. #endif /* _ASMLANGUAGE */
  30. #define VBIC_VECTNMI VBIC_ADRS(0x00) /* NMI vector */
  31. #define VBIC_VECTLIR1 VBIC_ADRS(0x01) /* Local vectors */
  32. #define VBIC_VECTLIR2 VBIC_ADRS(0x02)
  33. #define VBIC_VECTLIR3 VBIC_ADRS(0x03)
  34. #define VBIC_VECTLIR4 VBIC_ADRS(0x04)
  35. #define VBIC_VECTLIR5 VBIC_ADRS(0x05)
  36. #define VBIC_VECTLIR6 VBIC_ADRS(0x06)
  37. #define VBIC_VECTLIR7 VBIC_ADRS(0x07)
  38. #define VBIC_VECTLIR8 VBIC_ADRS(0x08)
  39. #define VBIC_VECTLIR9 VBIC_ADRS(0x09)
  40. #define VBIC_VECTLI10 VBIC_ADRS(0x0a)
  41. #define VBIC_VECTVIG VBIC_ADRS(0x0b) /* VMEbus Interrupt Generator */
  42. #define VBIC_VECTMSM VBIC_ADRS(0x0c) /* Millisecond Marker */
  43. #define VBIC_VECTVME VBIC_ADRS(0x0d) /* VMEbus interrupter for VIR1-7 */
  44. #define VBIC_IRMASKA VBIC_ADRS(0x0e) /* Interrupt enable register A */
  45. #define M_LIR1 0x02   /* Enable level 1 interrupt */
  46. #define M_LIR2 0x04   /* Enable level 2 interrupt */
  47. #define M_LIR3 0x08   /* Enable level 3 interrupt */
  48. #define M_LIR4 0x10   /* Enable level 4 interrupt */
  49. #define M_LIR5 0x20   /* Enable level 5 interrupt */
  50. #define M_LIR6 0x40   /* Enable level 6 interrupt */
  51. #define M_LIR7 0x80   /* Enable level 7 interrupt */
  52. #define VBIC_IRMASKB VBIC_ADRS(0x0f) /* Interrupt enable register B */
  53. #define M_LIR8 0x01   /* Enable level 8 interrupt */
  54. #define M_LIR9 0x02   /* Enable level 9 interrupt */
  55. #define M_LIR10 0x04   /* Enable level 10 interrupt */
  56. #define M_MSM 0x40   /* Enable MSM interrupt */
  57. #define M_VIG 0x80   /* Enable VIG interrupt */
  58. #define VBIC_IRMASKC VBIC_ADRS(0x10) /* Interrupt enable register C */
  59. #define M_VIR1 0x02   /* Enable VME level 1 interrupt */
  60. #define M_VIR2 0x04   /* Enable VME level 2 interrupt */
  61. #define M_VIR3 0x08   /* Enable VME level 3 interrupt */
  62. #define M_VIR4 0x10   /* Enable VME level 4 interrupt */
  63. #define M_VIR5 0x20   /* Enable VME level 5 interrupt */
  64. #define M_VIR6 0x40   /* Enable VME level 6 interrupt */
  65. #define M_VIR7 0x80   /* Enable VME level 7 interrupt */
  66. #define VBIC_IRSCANA VBIC_ADRS(0x11) /* Interrupt Request status A */
  67. #define S_LIR1 0x02   /* Asserting level 1 intr */
  68. #define S_LIR2 0x04   /* Asserting level 2 intr */
  69. #define S_LIR3 0x08   /* Asserting level 3 intr */
  70. #define S_LIR4 0x10   /* Asserting level 4 intr */
  71. #define S_LIR5 0x20   /* Asserting level 5 intr */
  72. #define S_LIR6 0x40   /* Asserting level 6 intr */
  73. #define S_LIR7 0x80   /* Asserting level 7 intr */
  74. #define VBIC_IRSCANB VBIC_ADRS(0x12) /* Interrupt Request status B */
  75. #define S_LIR8 0x01   /* Asserting level 8 intr */
  76. #define S_LIR9 0x02   /* Asserting level 9 intr */
  77. #define S_LIR10 0x04   /* Asserting level 10 intr */
  78. #define S_MSM 0x40   /* Asserting MSM intr */
  79. #define S_VIG 0x80   /* Asserting VIG intr */
  80. #define VBIC_IRSCANC VBIC_ADRS(0x13) /* VIR1-7 Int Request status C */
  81. #define S_VIR1 0x02   /* Asserting VME level 1 intr */
  82. #define S_VIR2 0x04   /* Asserting VME level 2 intr */
  83. #define S_VIR3 0x08   /* Asserting VME level 3 intr */
  84. #define S_VIR4 0x10   /* Asserting VME level 4 intr */
  85. #define S_VIR5 0x20   /* Asserting VME level 5 intr */
  86. #define S_VIR6 0x40   /* Asserting VME level 6 intr */
  87. #define S_VIR7 0x80   /* Asserting VME level 7 intr */
  88. #define VBIC_VBICCTL VBIC_ADRS(0x14) /* VBIC Control */
  89. #define VBC_NONMIV 0   /* NMI uses VECTNMI as vector */
  90. #define VBC_NMIV 0x80   /* NMI is auto-vectored */
  91. #define VBIC_ICLIR1 VBIC_ADRS(0x15) /* Interruptor Config */
  92. #define VBIC_ICLIR2 VBIC_ADRS(0x16)
  93. #define VBIC_ICLIR3 VBIC_ADRS(0x17)
  94. #define VBIC_ICLIR4 VBIC_ADRS(0x18)
  95. #define VBIC_ICLIR5 VBIC_ADRS(0x19)
  96. #define VBIC_ICLIR6 VBIC_ADRS(0x1a)
  97. #define VBIC_ICLIR7 VBIC_ADRS(0x1b)
  98. #define VBIC_ICLIR8 VBIC_ADRS(0x1c)
  99. #define VBIC_ICLIR9 VBIC_ADRS(0x1d)
  100. #define VBIC_ICLIR10 VBIC_ADRS(0x1e)
  101. #define ICL_AUTOV 0x80   /* Auto-vectored interrupt */
  102. #define ICL_EXTV 0x40   /* External vectored interrupt */
  103. #define ICL_EDGE 0x20   /* Edge sensitive interrupter */
  104. #define ICL_LEVEL 0x00   /* Level sensitive interrupter */
  105. #define ICL_HIGH 0x10   /* Active high / rising edge */
  106. #define ICL_LOW 0x00   /* Active low / falling edge */
  107. #define VBIC_ICVIR1  VBIC_ADRS(0x1f) /* VME Interruptor Config */
  108. #define VBIC_ICVIR2  VBIC_ADRS(0x20)
  109. #define VBIC_ICVIR3  VBIC_ADRS(0x21)
  110. #define VBIC_ICVIR4  VBIC_ADRS(0x22)
  111. #define VBIC_ICVIR5  VBIC_ADRS(0x23)
  112. #define VBIC_ICVIR6  VBIC_ADRS(0x24)
  113. #define VBIC_ICVIR7  VBIC_ADRS(0x25)
  114. #define VBIC_ICVIG VBIC_ADRS(0x26) /* VIG Interrupter Config */
  115. #define VBIC_ICMSM VBIC_ADRS(0x27) /* MSM Interruptor Config */
  116. #define VBIC_MSMCTL VBIC_ADRS(0x28) /* Millisecond Marker Control */
  117. #define MSM_IRQEN 0x80   /* MSM interrupter is enabled */
  118. #define MSM_HALTED 0x40   /* MSM is halted */
  119. #define MSM_MSEC1 0x20   /* MSM is in 1ms mode */
  120. #define MSM_TEST 0x10   /* MSM is in test mode */
  121. #define MSM_NORMAL 2   /* cmd: set to normal (~test) */
  122. #define MSM_SEC1 3   /* cmd: 1ms interrupt mode */
  123. #define MSM_SEC10 4   /* cmd: 10ms interrupt mode */
  124. #define MSM_STOP 5   /* cmd: stops MSM counter */
  125. #define MSM_GO 6   /* cmd: starts MSM counter */
  126. #define MSM_INIT 7   /* cmd: sets MSM counter to 0 */
  127. #define VBIC_VIRSID1 VBIC_ADRS(0x29) /* StsID latched from VME level 1 */
  128. #define VBIC_VIRSID2 VBIC_ADRS(0x2a)
  129. #define VBIC_VIRSID3 VBIC_ADRS(0x2b)
  130. #define VBIC_VIRSID4 VBIC_ADRS(0x2c)
  131. #define VBIC_VIRSID5 VBIC_ADRS(0x2d)
  132. #define VBIC_VIRSID6 VBIC_ADRS(0x2e)
  133. #define VBIC_VIRSID7 VBIC_ADRS(0x2f)
  134. #define VBIC_RSTCTL VBIC_ADRS(0x30) /* Software Reset Control */
  135. #define VBIC_RESET 0x6a /* cmd: resets VBIC */
  136. #define VBIC_SLOTSTAT VBIC_ADRS(0x37) /* Slot-1 status */
  137. #define SLOT1 0x80 /* slot 1 jumper installed */
  138. #define VBIC_VOUTCTL VBIC_ADRS(0x40) /* VME Interrupt Output Control */
  139. #define VIG_GEN_1 0x01 /* Generate bus intr level 1 */
  140. #define VIG_GEN_2 0x02 /* Generate bus intr level 2 */
  141. #define VIG_GEN_3 0x03 /* Generate bus intr level 3 */
  142. #define VIG_GEN_4 0x04 /* Generate bus intr level 4 */
  143. #define VIG_GEN_5 0x05 /* Generate bus intr level 5 */
  144. #define VIG_GEN_6 0x06 /* Generate bus intr level 6 */
  145. #define VIG_GEN_7 0x07 /* Generate bus intr level 7 */
  146. #define VIG_PEND_1 0x02 /* Pending bus intr level 1 */
  147. #define VIG_PEND_2 0x04 /* Pending bus intr level 2 */
  148. #define VIG_PEND_3 0x08 /* Pending bus intr level 3 */
  149. #define VIG_PEND_4 0x10 /* Pending bus intr level 4 */
  150. #define VIG_PEND_5 0x20 /* Pending bus intr level 5 */
  151. #define VIG_PEND_6 0x40 /* Pending bus intr level 6 */
  152. #define VIG_PEND_7 0x80 /* Pending bus intr level 7 */
  153. #define VBIC_VOUTSID1 VBIC_ADRS(0x41) /* StsID to send for VME level 1 */
  154. #define VBIC_VOUTSID2 VBIC_ADRS(0x42) /* StsID to send for VME level 2 */
  155. #define VBIC_VOUTSID3 VBIC_ADRS(0x43) /* StsID to send for VME level 3 */
  156. #define VBIC_VOUTSID4 VBIC_ADRS(0x44) /* StsID to send for VME level 4 */
  157. #define VBIC_VOUTSID5 VBIC_ADRS(0x45) /* StsID to send for VME level 5 */
  158. #define VBIC_VOUTSID6 VBIC_ADRS(0x46) /* StsID to send for VME level 6 */
  159. #define VBIC_VOUTSID7 VBIC_ADRS(0x47) /* StsID to send for VME level 7 */
  160. #define VBIC_VIGCTL  VBIC_ADRS(0x48) /* VMEbus Intr Generator Control */
  161. #define VIG_ENABLE_1  0x02 /* Enable VME int ACK interrupt */
  162. #define VIG_ENABLE_2  0x04
  163. #define VIG_ENABLE_3  0x08
  164. #define VIG_ENABLE_4  0x10
  165. #define VIG_ENABLE_5  0x20
  166. #define VIG_ENABLE_6  0x40
  167. #define VIG_ENABLE_7  0x80
  168. #define VBIC_VIASR VBIC_ADRS(0x49) /* VMEbus Intr Ack Status */
  169. #define SR_IACK_1 0x02 /* Level 1 IACK completed */
  170. #define SR_IACK_2 0x04 /* Level 2 IACK completed */
  171. #define SR_IACK_3 0x08 /* Level 3 IACK completed */
  172. #define SR_IACK_4 0x10 /* Level 4 IACK completed */
  173. #define SR_IACK_5 0x20 /* Level 5 IACK completed */
  174. #define SR_IACK_6 0x40 /* Level 6 IACK completed */
  175. #define SR_IACK_7 0x80 /* Level 7 IACK completed */
  176. #define VBIC_SRCLR VBIC_ADRS(0x4a) /* VIASR Bit CLear */
  177. #define SRCLR_1 0x01 /* Clear bit 1 of VIASR */
  178. #define SRCLR_2 0x02 /* Clear bit 2 of VIASR */
  179. #define SRCLR_3 0x03 /* Clear bit 3 of VIASR */
  180. #define SRCLR_4 0x04 /* Clear bit 4 of VIASR */
  181. #define SRCLR_5 0x05 /* Clear bit 5 of VIASR */
  182. #define SRCLR_6 0x06 /* Clear bit 6 of VIASR */
  183. #define SRCLR_7 0x07 /* Clear bit 7 of VIASR */
  184. #define VBIC_SYSCTL VBIC_ADRS(0x4b) /* System Control Register */
  185. #define BUS_TIME_16 0x00 /* 16us timeout period */
  186. #define BUS_TIME_32 0x40 /* 32us timeout period */
  187. #define BUS_TIME_64 0x80 /* 64us timeout period */
  188. #define BUS_TIME_128 0xc0 /* 128us timeout period */
  189. #define BUS_ARB_RRS 0x00 /* Round robin */
  190. #define BUS_ARB_PRRS 0x20 /* Priority round robin */
  191. #define BUS_ARB_PRI 0x30 /* Absolute priority */
  192. #define BUS_LVL_0 0x00 /* Use bus request level 0 */
  193. #define BUS_LVL_1 0x04 /* Use bus request level 1 */
  194. #define BUS_LVL_2 0x08 /* Use bus request level 2 */
  195. #define BUS_LVL_3 0x0c /* Use bus request level 3 */
  196. #define BUS_REL_ROR 0x00 /* Release bus on request */
  197. #define BUS_REL_RWD 0x02 /* Release bus when done */
  198. #ifdef __cplusplus
  199. }
  200. #endif
  201. #endif /* __INCvbich */