vic.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:7k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * vic.h: Various VIC controller defines.  The VIC is an interrupt controller
  4.  *        used in Baget/MIPS series.
  5.  *
  6.  * Copyright (C) 1998 Gleb Raiko & Vladimir Roganov
  7.  */
  8. #ifndef _MIPS_VIC_H
  9. #define _MIPS_VIC_H
  10. #define VIC_VME_II       0x3
  11. #define VIC_VME_INT1     0x7
  12. #define VIC_VME_INT2     0xB
  13. #define VIC_VME_INT3     0xF
  14. #define VIC_VME_INT4     0x13
  15. #define VIC_VME_INT5     0x17
  16. #define VIC_VME_INT6     0x1B
  17. #define VIC_VME_INT7     0x1F
  18. #define VIC_DMA_INT      0x23
  19. #define VIC_LINT1        0x27
  20. #define VIC_LINT2        0x2B
  21. #define VIC_LINT3        0x2F
  22. #define VIC_LINT4        0x33
  23. #define VIC_LINT5        0x37
  24. #define VIC_LINT6        0x3B
  25. #define VIC_LINT7        0x3F
  26. #define VIC_ICGS_INT     0x43
  27. #define VIC_ICMS_INT     0x47
  28. #define    VIC_INT_IPL(lev)  ((~(lev))&0x7)
  29. #define    VIC_INT_ACTIVE    (1<<3)
  30. #define    VIC_INT_AUTO      (0<<4)
  31. #define    VIC_INT_NOAUTO    (1<<4)
  32. #define    VIC_INT_LEVEL     (0<<5)
  33. #define    VIC_INT_EDGE      (1<<5)
  34. #define    VIC_INT_LOW       (0<<6)
  35. #define    VIC_INT_HIGH      (1<<6)
  36. #define    VIC_INT_ENABLE    (0<<7)
  37. #define    VIC_INT_DISABLE   (1<<7)
  38. #define    VIC_INT_SWITCH(x) (1<<(((x)&0x3)+4))
  39. #define VIC_ERR_INT      0x4B
  40. #define    VIC_ERR_INT_SYSFAIL_ACTIVE  (1<<3)
  41. #define    VIC_ERR_INT_SYSFAIL  (1<<4)
  42. #define    VIC_ERR_INT_TIMO     (1<<5)
  43. #define    VIC_ERR_INT_WRPOST   (1<<6)
  44. #define    VIC_ERR_INT_ACFAIL   (1<<7)
  45. #define VIC_ICGS_BASE    0x4F
  46. #define VIC_ICMS_BASE    0x53
  47. #define    VIC_ICxS_BASE_GSWITCH_MASK 0x3
  48. #define    VIC_ICxS_BASE_ID(x)  (((x)&0x3f)<<2)
  49. #define VIC_LOCAL_BASE   0x57
  50. #define    VIC_LOCAL_BASE_LINT_MASK 0x7
  51. #define    VIC_LOCAL_BASE_ID(x)  (((x)&0x1f)<<3)
  52. #define VIC_ERR_BASE     0x5B
  53. #define    VIC_ERR_BASE_ACFAIL   0
  54. #define    VIC_ERR_BASE_WRPOST   1
  55. #define    VIC_ERR_BASE_TIMO     2
  56. #define    VIC_ERR_BASE_SYSFAIL  3
  57. #define    VIC_ERR_BASE_VMEACK   4
  58. #define    VIC_ERR_BASE_DMA      5
  59. #define    VIC_ERR_BASE_ID(x)  (((x)&0x1f)<<3)
  60. #define VIC_ICS          0x5F
  61. #define VIC_IC0          0x63
  62. #define VIC_IC1          0x67
  63. #define VIC_IC2          0x6B
  64. #define VIC_IC3          0x6F
  65. #define VIC_IC4          0x73
  66. #define VIC_ID           0x77
  67. #define VIC_IC6          0x7B
  68. #define    VIC_IC6_IRESET_STATUS (1<<7)
  69. #define    VIC_IC6_HALT_STATUS   (1<<6)
  70. #define    VIC_IC6_SYSRESET   (3<<0)
  71. #define    VIC_IC6_RESET      (2<<0)
  72. #define    VIC_IC6_HALT       (1<<0)
  73. #define    VIC_IC6_RUN        (0<<0)
  74. #define VIC_IC7          0x7F
  75. #define    VIC_IC7_SYSFAIL     (1<<7)
  76. #define    VIC_IC7_RESET       (1<<6)
  77. #define    VIC_IC7_VME_MASTER  (1<<5)
  78. #define    VIC_IC7_SEMSET(x)   ((1<<(x))&0x1f)
  79. #define VIC_VME_REQ      0x83
  80. #define VIC_VME_BASE1    0x87
  81. #define VIC_VME_BASE2    0x8B
  82. #define VIC_VME_BASE3    0x8F
  83. #define VIC_VME_BASE4    0x93
  84. #define VIC_VME_BASE5    0x97
  85. #define VIC_VME_BASE6    0x9B
  86. #define VIC_VME_BASE7    0x9F
  87. #define VIC_XFER_TIMO    0xA3
  88. #define    VIC_XFER_TIMO_VME_PERIOD_INF (7<<5)
  89. #define    VIC_XFER_TIMO_VME_PERIOD_512 (6<<5)
  90. #define    VIC_XFER_TIMO_VME_PERIOD_256 (5<<5)
  91. #define    VIC_XFER_TIMO_VME_PERIOD_128 (4<<5)
  92. #define    VIC_XFER_TIMO_VME_PERIOD_64 (3<<5)
  93. #define    VIC_XFER_TIMO_VME_PERIOD_32 (2<<5)
  94. #define    VIC_XFER_TIMO_VME_PERIOD_16 (1<<5)
  95. #define    VIC_XFER_TIMO_VME_PERIOD_4  (0<<5)
  96. #define    VIC_XFER_TIMO_VME_PERIOD_VAL(x) (((x)>>5)&7)
  97. #define    VIC_XFER_TIMO_LOCAL_PERIOD_INF (7<<2)
  98. #define    VIC_XFER_TIMO_LOCAL_PERIOD_512 (6<<2)
  99. #define    VIC_XFER_TIMO_LOCAL_PERIOD_256 (5<<2)
  100. #define    VIC_XFER_TIMO_LOCAL_PERIOD_128 (4<<2)
  101. #define    VIC_XFER_TIMO_LOCAL_PERIOD_64 (3<<2)
  102. #define    VIC_XFER_TIMO_LOCAL_PERIOD_32 (2<<2)
  103. #define    VIC_XFER_TIMO_LOCAL_PERIOD_16 (1<<2)
  104. #define    VIC_XFER_TIMO_LOCAL_PERIOD_4  (0<<2)
  105. #define    VIC_XFER_TIMO_LOCAL_PERIOD_VAL(x) (((x)>>2)&7)
  106. #define    VIC_XFER_TIMO_ARB  (1<<1)
  107. #define    VIC_XFER_TIMO_VME  (1<<0)
  108. #define VIC_LOCAL_TIM    0xA7
  109. #define    VIC_LOCAL_TIM_PAS_ASSERT(x)   (((x)-2)&0xf)
  110. #define    VIC_LOCAL_TIM_PAS_ASSERT_VAL(x) (((x)&0xf)+2)
  111. #define    VIC_LOCAT_TIM_DS_DEASSERT(x)  ((((x)-1)&1)<<4)
  112. #define    VIC_LOCAT_TIM_DS_DEASSERT_VAL(x)  ((((x)>>4)&1)+1)
  113. #define    VIC_LOCAL_TIM_PAS_DEASSERT(x) ((((x)-1)&0x7)<<5)
  114. #define    VIC_LOCAL_TIM_PAS_DEASSERT_VAL(x) ((((x)>>5)&0x7)+1)
  115. #define VIC_BXFER_DEF    0xAB
  116. #define    VIC_BXFER_DEF_VME_CROSS    (1<<3)
  117. #define    VIC_BXFER_DEF_LOCAL_CROSS  (1<<2)
  118. #define    VIC_BXFER_DEF_AMSR   (1<<1)
  119. #define    VIC_BXFER_DEF_DUAL   (1<<0)
  120. #define VIC_IFACE_CFG    0xAF
  121. #define    VIC_IFACE_CFG_RMC3    (1<<7)
  122. #define    VIC_IFACE_CFG_RMC2    (1<<6)
  123. #define    VIC_IFACE_CFG_RMC1    (1<<5)
  124. #define    VIC_IFACE_CFG_HALT    (1<<4)
  125. #define    VIC_IFACE_CFG_NOHALT  (0<<4)
  126. #define    VIC_IFACE_CFG_NORMC   (1<<3)
  127. #define    VIC_IFACE_CFG_DEADLOCK_VAL(x) (((x)>>3)&3)
  128. #define    VIC_IFACE_CFG_MSTAB   (1<<2)
  129. #define    VIC_IFACE_CFG_TURBO   (1<<1)
  130. #define    VIC_IFACE_CFG_NOTURBO (0<<1)
  131. #define    VIC_IFACE_CFG_VME     (1<<0)
  132. #define VIC_REQ_CFG      0xB3
  133. #define    VIC_REQ_CFG_FAIRNESS_DISABLED  0
  134. #define    VIC_REQ_CFG_FAIRNESS_ENABLED   1
  135. #define    VIC_REQ_CFG_TIMO_DISABLED      0xf
  136. #define    VIC_REQ_CFG_DRAM_REFRESH       (1<<4)
  137. #define    VIC_REQ_CFG_LEVEL(x)           (((x)&3)<<5)
  138. #define    VIC_REQ_CFG_PRIO_ARBITRATION   (1<<7)
  139. #define    VIC_REQ_CFG_RR_ARBITRATION     (0<<7)
  140. #define VIC_AMS          0xB7
  141. #define    VIC_AMS_AM_2_0   (1<<7)
  142. #define    VIC_AMS_AM_5_3   (1<<6)
  143. #define    VIC_AMS_CODE(x)  ((x)&0x1f)
  144. #define VIC_BERR_STATUS  0xBB
  145. #define VIC_DMA_STATUS   0xBF
  146. #define VIC_SS0CR0       0xC3
  147. #define VIC_SS1CR0       0xCB
  148. #define    VIC_SSxCR0_LOCAL_XFER_ACCEL  (2)
  149. #define    VIC_SSxCR0_LOCAL_XFER_SINGLE (1)
  150. #define    VIC_SSxCR0_LOCAL_XFER_NONE   (0)
  151. #define    VIC_SSxCR0_A32       (0<<2)
  152. #define    VIC_SSxCR0_A24       (1<<2)
  153. #define    VIC_SSxCR0_A16       (2<<2)
  154. #define    VIC_SSxCR0_USER      (3<<2)
  155. #define    VIC_SSxCR0_D32       (1<<4)
  156. #define    VIC_SSxCR0_SUPER     (1<<5)
  157. #define    VIC_SS0CR0_TIMER_FREQ_MASK   (3<<6)
  158. #define    VIC_SS0CR0_TIMER_FREQ_NONE   (0<<6)
  159. #define    VIC_SS0CR0_TIMER_FREQ_50HZ   (1<<6)
  160. #define    VIC_SS0CR0_TIMER_FREQ_1000HZ (2<<6)
  161. #define    VIC_SS0CR0_TIMER_FREQ_100HZ  (3<<6)
  162. #define    VIC_SS1CR0_MASTER_WRPOST (1<<6)
  163. #define    VIC_SS1CR0_SLAVE_WRPOST  (1<<7)
  164. #define VIC_SS0CR1       0xC7
  165. #define VIC_SS1CR1       0xCF
  166. #define    VIC_SSxCR1_TF2(x)  (((x)&0xf)<<4)
  167. #define    VIC_SSxCR1_TF1(x)  ((x)&0xf)
  168. #define VIC_RELEASE      0xD3
  169. #define    VIC_RELEASE_BLKXFER_BLEN(x) ((x)&0x1f)
  170. #define    VIC_RELEASE_ROR             (0<<6) 
  171. #define    VIC_RELEASE_RWD             (1<<6) 
  172. #define    VIC_RELEASE_ROC             (2<<6) 
  173. #define    VIC_RELEASE_BCAP            (3<<6) 
  174. #define VIC_BXFER_CTRL   0xD7
  175. #define    VIC_BXFER_CTRL_MODULE     (1<<7)
  176. #define    VIC_BXFER_CTRL_LOCAL      (1<<6)
  177. #define    VIC_BXFER_CTRL_MOVEM      (1<<5)
  178. #define    VIC_BXFER_CTRL_READ       (1<<4)
  179. #define    VIC_BXFER_CTRL_WRITE      (0<<4)
  180. #define    VIC_BXFER_CTRL_INTERLEAVE(x)  ((x)&0xf)
  181. #define VIC_BXFER_LEN_LO    0xDB
  182. #define VIC_BXFER_LEN_HI    0xDF
  183. #define VIC_SYS_RESET    0xE3
  184. #ifndef __LANGUAGE_ASSEMBLY__
  185. #define vic_inb(p)    (*(volatile unsigned char *)(VIC_BASE + (p)))
  186. #define vic_outb(v,p) (*((volatile unsigned char *)(VIC_BASE + (p))) = v)
  187. #endif /* __LANGUAGE_ASSEMBLY__ */
  188. #endif /* !(_MIPS_VIC_H) */