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

VxWorks

开发平台:

C/C++

  1. #define S_MC_EMODE                  0
  2. #define M_MC_EMODE                  _SB_MAKEMASK(15,S_MC_EMODE)
  3. #define V_MC_EMODE(x)               _SB_MAKEVALUE(x,S_MC_EMODE)
  4. #define G_MC_EMODE(x)               _SB_GETVALUE(x,S_MC_EMODE,M_MC_EMODE)
  5. #define V_MC_EMODE_DEFAULT          V_MC_EMODE(0)
  6. #define S_MC_MODE                   16
  7. #define M_MC_MODE                   _SB_MAKEMASK(15,S_MC_MODE)
  8. #define V_MC_MODE(x)                _SB_MAKEVALUE(x,S_MC_MODE)
  9. #define G_MC_MODE(x)                _SB_GETVALUE(x,S_MC_MODE,M_MC_MODE)
  10. #define V_MC_MODE_DEFAULT           V_MC_MODE(0x22)
  11. #define S_MC_DRAM_TYPE              32
  12. #define M_MC_DRAM_TYPE              _SB_MAKEMASK(3,S_MC_DRAM_TYPE)
  13. #define V_MC_DRAM_TYPE(x)           _SB_MAKEVALUE(x,S_MC_DRAM_TYPE)
  14. #define G_MC_DRAM_TYPE(x)           _SB_GETVALUE(x,S_MC_DRAM_TYPE,M_MC_DRAM_TYPE)
  15. #define K_MC_DRAM_TYPE_JEDEC        0
  16. #define K_MC_DRAM_TYPE_FCRAM        1
  17. #define K_MC_DRAM_TYPE_SGRAM     2
  18. #define V_MC_DRAM_TYPE_JEDEC        V_MC_DRAM_TYPE(K_MC_DRAM_TYPE_JEDEC)
  19. #define V_MC_DRAM_TYPE_FCRAM        V_MC_DRAM_TYPE(K_MC_DRAM_TYPE_FCRAM)
  20. #define V_MC_DRAM_TYPE_SGRAM        V_MC_DRAM_TYPE(K_MC_DRAM_TYPE_SGRAM)
  21. #define M_MC_EXTERNALDECODE     _SB_MAKEMASK1(35)
  22. /*
  23.  * SDRAM Timing Register  (Table 6-15)
  24.  */
  25. #define M_MC_w2rIDLE_TWOCYCLES   _SB_MAKEMASK1(62)
  26. #define M_MC_r2wIDLE_TWOCYCLES   _SB_MAKEMASK1(61)
  27. #define M_MC_r2rIDLE_TWOCYCLES   _SB_MAKEMASK1(60)
  28. #define S_MC_tFIFO                56
  29. #define M_MC_tFIFO                _SB_MAKEMASK(4,S_MC_tFIFO)
  30. #define V_MC_tFIFO(x)             _SB_MAKEVALUE(x,S_MC_tFIFO)
  31. #define K_MC_tFIFO_DEFAULT        1
  32. #define V_MC_tFIFO_DEFAULT        V_MC_tFIFO(K_MC_tFIFO_DEFAULT)
  33. #define S_MC_tRFC                 52
  34. #define M_MC_tRFC                 _SB_MAKEMASK(4,S_MC_tRFC)
  35. #define V_MC_tRFC(x)              _SB_MAKEVALUE(x,S_MC_tRFC)
  36. #define K_MC_tRFC_DEFAULT         12
  37. #define V_MC_tRFC_DEFAULT         V_MC_tRFC(K_MC_tRFC_DEFAULT)
  38. #define S_MC_tCwCr                40
  39. #define M_MC_tCwCr                _SB_MAKEMASK(4,S_MC_tCwCr)
  40. #define V_MC_tCwCr(x)             _SB_MAKEVALUE(x,S_MC_tCwCr)
  41. #define K_MC_tCwCr_DEFAULT        4
  42. #define V_MC_tCwCr_DEFAULT        V_MC_tCwCr(K_MC_tCwCr_DEFAULT)
  43. #define S_MC_tRCr                 28
  44. #define M_MC_tRCr                 _SB_MAKEMASK(4,S_MC_tRCr)
  45. #define V_MC_tRCr(x)              _SB_MAKEVALUE(x,S_MC_tRCr)
  46. #define K_MC_tRCr_DEFAULT         9
  47. #define V_MC_tRCr_DEFAULT         V_MC_tRCr(K_MC_tRCr_DEFAULT)
  48. #define S_MC_tRCw                 24
  49. #define M_MC_tRCw                 _SB_MAKEMASK(4,S_MC_tRCw)
  50. #define V_MC_tRCw(x)              _SB_MAKEVALUE(x,S_MC_tRCw)
  51. #define K_MC_tRCw_DEFAULT         10
  52. #define V_MC_tRCw_DEFAULT         V_MC_tRCw(K_MC_tRCw_DEFAULT)
  53. #define S_MC_tRRD                 20
  54. #define M_MC_tRRD                 _SB_MAKEMASK(4,S_MC_tRRD)
  55. #define V_MC_tRRD(x)              _SB_MAKEVALUE(x,S_MC_tRRD)
  56. #define K_MC_tRRD_DEFAULT         2
  57. #define V_MC_tRRD_DEFAULT         V_MC_tRRD(K_MC_tRRD_DEFAULT)
  58. #define S_MC_tRP                  16
  59. #define M_MC_tRP                  _SB_MAKEMASK(4,S_MC_tRP)
  60. #define V_MC_tRP(x)               _SB_MAKEVALUE(x,S_MC_tRP)
  61. #define K_MC_tRP_DEFAULT          4
  62. #define V_MC_tRP_DEFAULT          V_MC_tRP(K_MC_tRP_DEFAULT)
  63. #define S_MC_tCwD                 8
  64. #define M_MC_tCwD                 _SB_MAKEMASK(4,S_MC_tCwD)
  65. #define V_MC_tCwD(x)              _SB_MAKEVALUE(x,S_MC_tCwD)
  66. #define K_MC_tCwD_DEFAULT         1
  67. #define V_MC_tCwD_DEFAULT         V_MC_tCwD(K_MC_tCwD_DEFAULT)
  68. #define M_tCrDh                   _SB_MAKEMASK1(7)
  69. #define S_MC_tCrD                 4
  70. #define M_MC_tCrD                 _SB_MAKEMASK(3,S_MC_tCrD)
  71. #define V_MC_tCrD(x)              _SB_MAKEVALUE(x,S_MC_tCrD)
  72. #define K_MC_tCrD_DEFAULT         2
  73. #define V_MC_tCrD_DEFAULT         V_MC_tCrD(K_MC_tCrD_DEFAULT)
  74. #define S_MC_tRCD                 0
  75. #define M_MC_tRCD                 _SB_MAKEMASK(4,S_MC_tRCD)
  76. #define V_MC_tRCD(x)              _SB_MAKEVALUE(x,S_MC_tRCD)
  77. #define K_MC_tRCD_DEFAULT         3
  78. #define V_MC_tRCD_DEFAULT         V_MC_tRCD(K_MC_tRCD_DEFAULT)
  79. #define V_MC_TIMING_DEFAULT     V_MC_tFIFO(K_MC_tFIFO_DEFAULT) | 
  80.                                 V_MC_tRFC(K_MC_tRFC_DEFAULT) | 
  81.                                 V_MC_tCwCr(K_MC_tCwCr_DEFAULT) | 
  82.                                 V_MC_tRCr(K_MC_tRCr_DEFAULT) | 
  83.                                 V_MC_tRCw(K_MC_tRCw_DEFAULT) | 
  84.                                 V_MC_tRRD(K_MC_tRRD_DEFAULT) | 
  85.                                 V_MC_tRP(K_MC_tRP_DEFAULT) | 
  86.                                 V_MC_tCwD(K_MC_tCwD_DEFAULT) | 
  87.                                 V_MC_tCrD(K_MC_tCrD_DEFAULT) | 
  88.                                 V_MC_tRCD(K_MC_tRCD_DEFAULT) | 
  89.                                 M_MC_r2rIDLE_TWOCYCLES
  90. /*
  91.  * Errata says these are not the default
  92.  *                               M_MC_w2rIDLE_TWOCYCLES | 
  93.  *                               M_MC_r2wIDLE_TWOCYCLES | 
  94.  */
  95. /*
  96.  * Chip Select Start Address Register (Table 6-17)
  97.  */
  98. #define S_MC_CS0_START              0
  99. #define M_MC_CS0_START              _SB_MAKEMASK(16,S_MC_CS0_START)
  100. #define V_MC_CS0_START(x)           _SB_MAKEVALUE(x,S_MC_CS0_START)
  101. #define G_MC_CS0_START(x)           _SB_GETVALUE(x,S_MC_CS0_START,M_MC_CS0_START)
  102. #define S_MC_CS1_START              16
  103. #define M_MC_CS1_START              _SB_MAKEMASK(16,S_MC_CS1_START)
  104. #define V_MC_CS1_START(x)           _SB_MAKEVALUE(x,S_MC_CS1_START)
  105. #define G_MC_CS1_START(x)           _SB_GETVALUE(x,S_MC_CS1_START,M_MC_CS1_START)
  106. #define S_MC_CS2_START              32
  107. #define M_MC_CS2_START              _SB_MAKEMASK(16,S_MC_CS2_START)
  108. #define V_MC_CS2_START(x)           _SB_MAKEVALUE(x,S_MC_CS2_START)
  109. #define G_MC_CS2_START(x)           _SB_GETVALUE(x,S_MC_CS2_START,M_MC_CS2_START)
  110. #define S_MC_CS3_START              48
  111. #define M_MC_CS3_START              _SB_MAKEMASK(16,S_MC_CS3_START)
  112. #define V_MC_CS3_START(x)           _SB_MAKEVALUE(x,S_MC_CS3_START)
  113. #define G_MC_CS3_START(x)           _SB_GETVALUE(x,S_MC_CS3_START,M_MC_CS3_START)
  114. /*
  115.  * Chip Select End Address Register (Table 6-18)
  116.  */
  117. #define S_MC_CS0_END                0
  118. #define M_MC_CS0_END                _SB_MAKEMASK(16,S_MC_CS0_END)
  119. #define V_MC_CS0_END(x)             _SB_MAKEVALUE(x,S_MC_CS0_END)
  120. #define G_MC_CS0_END(x)             _SB_GETVALUE(x,S_MC_CS0_END,M_MC_CS0_END)
  121. #define S_MC_CS1_END                16
  122. #define M_MC_CS1_END                _SB_MAKEMASK(16,S_MC_CS1_END)
  123. #define V_MC_CS1_END(x)             _SB_MAKEVALUE(x,S_MC_CS1_END)
  124. #define G_MC_CS1_END(x)             _SB_GETVALUE(x,S_MC_CS1_END,M_MC_CS1_END)
  125. #define S_MC_CS2_END                32
  126. #define M_MC_CS2_END                _SB_MAKEMASK(16,S_MC_CS2_END)
  127. #define V_MC_CS2_END(x)             _SB_MAKEVALUE(x,S_MC_CS2_END)
  128. #define G_MC_CS2_END(x)             _SB_GETVALUE(x,S_MC_CS2_END,M_MC_CS2_END)
  129. #define S_MC_CS3_END                48
  130. #define M_MC_CS3_END                _SB_MAKEMASK(16,S_MC_CS3_END)
  131. #define V_MC_CS3_END(x)             _SB_MAKEVALUE(x,S_MC_CS3_END)
  132. #define G_MC_CS3_END(x)             _SB_GETVALUE(x,S_MC_CS3_END,M_MC_CS3_END)
  133. /*
  134.  * Chip Select Interleave Register (Table 6-19)
  135.  */
  136. #define S_MC_INTLV_RESERVED         0
  137. #define M_MC_INTLV_RESERVED         _SB_MAKEMASK(5,S_MC_INTLV_RESERVED)
  138. #define S_MC_INTERLEAVE             7
  139. #define M_MC_INTERLEAVE             _SB_MAKEMASK(18,S_MC_INTERLEAVE)
  140. #define V_MC_INTERLEAVE(x)          _SB_MAKEVALUE(x,S_MC_INTERLEAVE)
  141. #define S_MC_INTLV_MBZ              25
  142. #define M_MC_INTLV_MBZ              _SB_MAKEMASK(39,S_MC_INTLV_MBZ)
  143. /*
  144.  * Row Address Bits Register (Table 6-20)
  145.  */
  146. #define S_MC_RAS_RESERVED           0
  147. #define M_MC_RAS_RESERVED           _SB_MAKEMASK(5,S_MC_RAS_RESERVED)
  148. #define S_MC_RAS_SELECT             12
  149. #define M_MC_RAS_SELECT             _SB_MAKEMASK(25,S_MC_RAS_SELECT)
  150. #define V_MC_RAS_SELECT(x)          _SB_MAKEVALUE(x,S_MC_RAS_SELECT)
  151. #define S_MC_RAS_MBZ                37
  152. #define M_MC_RAS_MBZ                _SB_MAKEMASK(27,S_MC_RAS_MBZ)
  153. /*
  154.  * Column Address Bits Register (Table 6-21)
  155.  */
  156. #define S_MC_CAS_RESERVED           0
  157. #define M_MC_CAS_RESERVED           _SB_MAKEMASK(5,S_MC_CAS_RESERVED)
  158. #define S_MC_CAS_SELECT             5
  159. #define M_MC_CAS_SELECT             _SB_MAKEMASK(18,S_MC_CAS_SELECT)
  160. #define V_MC_CAS_SELECT(x)          _SB_MAKEVALUE(x,S_MC_CAS_SELECT)
  161. #define S_MC_CAS_MBZ                23
  162. #define M_MC_CAS_MBZ                _SB_MAKEMASK(41,S_MC_CAS_MBZ)
  163. /*
  164.  * Bank Address Address Bits Register (Table 6-22)
  165.  */
  166. #define S_MC_BA_RESERVED            0
  167. #define M_MC_BA_RESERVED            _SB_MAKEMASK(5,S_MC_BA_RESERVED)
  168. #define S_MC_BA_SELECT              5
  169. #define M_MC_BA_SELECT              _SB_MAKEMASK(20,S_MC_BA_SELECT)
  170. #define V_MC_BA_SELECT(x)           _SB_MAKEVALUE(x,S_MC_BA_SELECT)
  171. #define S_MC_BA_MBZ                 25
  172. #define M_MC_BA_MBZ                 _SB_MAKEMASK(39,S_MC_BA_MBZ)
  173. /*
  174.  * Chip Select Attribute Register (Table 6-23)
  175.  */
  176. #define K_MC_CS_ATTR_CLOSED         0
  177. #define K_MC_CS_ATTR_CASCHECK       1
  178. #define K_MC_CS_ATTR_HINT           2
  179. #define K_MC_CS_ATTR_OPEN           3
  180. #define S_MC_CS0_PAGE               0
  181. #define M_MC_CS0_PAGE               _SB_MAKEMASK(2,S_MC_CS0_PAGE)
  182. #define V_MC_CS0_PAGE(x)            _SB_MAKEVALUE(x,S_MC_CS0_PAGE)
  183. #define G_MC_CS0_PAGE(x)            _SB_GETVALUE(x,S_MC_CS0_PAGE,M_MC_CS0_PAGE)
  184. #define S_MC_CS1_PAGE               16
  185. #define M_MC_CS1_PAGE               _SB_MAKEMASK(2,S_MC_CS1_PAGE)
  186. #define V_MC_CS1_PAGE(x)            _SB_MAKEVALUE(x,S_MC_CS1_PAGE)
  187. #define G_MC_CS1_PAGE(x)            _SB_GETVALUE(x,S_MC_CS1_PAGE,M_MC_CS1_PAGE)
  188. #define S_MC_CS2_PAGE               32
  189. #define M_MC_CS2_PAGE               _SB_MAKEMASK(2,S_MC_CS2_PAGE)
  190. #define V_MC_CS2_PAGE(x)            _SB_MAKEVALUE(x,S_MC_CS2_PAGE)
  191. #define G_MC_CS2_PAGE(x)            _SB_GETVALUE(x,S_MC_CS2_PAGE,M_MC_CS2_PAGE)
  192. #define S_MC_CS3_PAGE               48
  193. #define M_MC_CS3_PAGE               _SB_MAKEMASK(2,S_MC_CS3_PAGE)
  194. #define V_MC_CS3_PAGE(x)            _SB_MAKEVALUE(x,S_MC_CS3_PAGE)
  195. #define G_MC_CS3_PAGE(x)            _SB_GETVALUE(x,S_MC_CS3_PAGE,M_MC_CS3_PAGE)
  196. /*
  197.  * ECC Test ECC Register (Table 6-25)
  198.  */
  199. #define S_MC_ECC_INVERT             0
  200. #define M_MC_ECC_INVERT             _SB_MAKEMASK(8,S_MC_ECC_INVERT)
  201. /*  *********************************************************************
  202.     *  DMA constants
  203.     ********************************************************************* */
  204. /* 
  205.  * Ethernet and Serial DMA Configuration Register 0  (Table 7-4)
  206.  * Registers: DMA_CONFIG0_MAC_x_RX_CH_0 
  207.  * Registers: DMA_CONFIG0_MAC_x_TX_CH_0
  208.  * Registers: DMA_CONFIG0_SER_x_RX
  209.  * Registers: DMA_CONFIG0_SER_x_TX
  210.  */
  211. #define M_DMA_DROP                  _SB_MAKEMASK1(0)
  212. #define M_DMA_CHAIN_SEL             _SB_MAKEMASK1(1)
  213. #define M_DMA_RESERVED1             _SB_MAKEMASK1(2)
  214. #define M_DMA_EOP_INT_EN            _SB_MAKEMASK1(3)
  215. #define M_DMA_HWM_INT_EN            _SB_MAKEMASK1(4)
  216. #define M_DMA_LWM_INT_EN            _SB_MAKEMASK1(5)
  217. #define M_DMA_TBX_EN                _SB_MAKEMASK1(6)
  218. #define M_DMA_TDX_EN                _SB_MAKEMASK1(7)
  219. #define S_DMA_INT_PKTCNT            _SB_MAKE64(8)
  220. #define M_DMA_INT_PKTCNT            _SB_MAKEMASK(8,S_DMA_INT_PKTCNT)
  221. #define V_DMA_INT_PKTCNT(x)         _SB_MAKEVALUE(x,S_DMA_INT_PKTCNT)
  222. #define G_DMA_INT_PKTCNT(x)         _SB_GETVALUE(x,S_DMA_INT_PKTCNT,M_DMA_INT_PKTCNT)
  223. #define S_DMA_RINGSZ                _SB_MAKE64(16)
  224. #define M_DMA_RINGSZ                _SB_MAKEMASK(16,S_DMA_RINGSZ)
  225. #define V_DMA_RINGSZ(x)             _SB_MAKEVALUE(x,S_DMA_RINGSZ)
  226. #define G_DMA_RINGSZ(x)             _SB_GETVALUE(x,S_DMA_RINGSZ,M_DMA_RINGSZ)
  227. #define S_DMA_HIGH_WATERMARK        _SB_MAKE64(32)
  228. #define M_DMA_HIGH_WATERMARK        _SB_MAKEMASK(16,S_DMA_HIGH_WATERMARK)
  229. #define V_DMA_HIGH_WATERMARK(x)     _SB_MAKEVALUE(x,S_DMA_HIGH_WATERMARK)
  230. #define G_DMA_HIGH_WATERMARK(x)     _SB_GETVALUE(x,S_DMA_HIGH_WATERMARK,M_DMA_HIGH_WATERMARK)
  231. #define S_DMA_LOW_WATERMARK         _SB_MAKE64(48)
  232. #define M_DMA_LOW_WATERMARK         _SB_MAKEMASK(16,S_DMA_LOW_WATERMARK)
  233. #define V_DMA_LOW_WATERMARK(x)      _SB_MAKEVALUE(x,S_DMA_LOW_WATERMARK)
  234. #define G_DMA_LOW_WATERMARK(x)      _SB_GETVALUE(x,S_DMA_LOW_WATERMARK,M_DMA_LOW_WATERMARK)
  235. /*
  236.  * Ethernet and Serial DMA Configuration Register 2 (Table 7-5)
  237.  * Registers: DMA_CONFIG1_MAC_x_RX_CH_0 
  238.  * Registers: DMA_CONFIG1_DMA_x_TX_CH_0
  239.  * Registers: DMA_CONFIG1_SER_x_RX
  240.  * Registers: DMA_CONFIG1_SER_x_TX
  241.  */
  242. #define M_DMA_HDR_CF_EN             _SB_MAKEMASK1(0)
  243. #define M_DMA_ASIC_XFR_EN           _SB_MAKEMASK1(1)
  244. #define M_DMA_PRE_ADDR_EN           _SB_MAKEMASK1(2)
  245. #define M_DMA_FLOW_CTL_EN           _SB_MAKEMASK1(3)
  246. #define M_DMA_NO_DSCR_UPDT          _SB_MAKEMASK1(4)
  247. #define M_DMA_L2CA     _SB_MAKEMASK1(5)
  248. #define M_DMA_MBZ1                  _SB_MAKEMASK(6,15)
  249. #define S_DMA_HDR_SIZE              _SB_MAKE64(21)
  250. #define M_DMA_HDR_SIZE              _SB_MAKEMASK(9,S_DMA_HDR_SIZE)
  251. #define V_DMA_HDR_SIZE(x)           _SB_MAKEVALUE(x,S_DMA_HDR_SIZE)
  252. #define G_DMA_HDR_SIZE(x)           _SB_GETVALUE(x,S_DMA_HDR_SIZE,M_DMA_HDR_SIZE)
  253. #define M_DMA_MBZ2                  _SB_MAKEMASK(5,32)
  254. #define S_DMA_ASICXFR_SIZE          _SB_MAKE64(37)
  255. #define M_DMA_ASICXFR_SIZE          _SB_MAKEMASK(9,S_DMA_ASICXFR_SIZE)
  256. #define V_DMA_ASICXFR_SIZE(x)       _SB_MAKEVALUE(x,S_DMA_ASICXFR_SIZE)
  257. #define G_DMA_ASICXFR_SIZE(x)       _SB_GETVALUE(x,S_DMA_ASICXFR_SIZE,M_DMA_ASICXFR_SIZE)
  258. #define S_DMA_INT_TIMEOUT           _SB_MAKE64(48)
  259. #define M_DMA_INT_TIMEOUT           _SB_MAKEMASK(16,S_DMA_INT_TIMEOUT)
  260. #define V_DMA_INT_TIMEOUT(x)        _SB_MAKEVALUE(x,S_DMA_INT_TIMEOUT)
  261. #define G_DMA_INT_TIMEOUT(x)        _SB_GETVALUE(x,S_DMA_INT_TIMEOUT,M_DMA_INT_TIMEOUT)
  262. /*
  263.  * Ethernet and Serial DMA Descriptor base address (Table 7-6)
  264.  */
  265. #define M_DMA_DSCRBASE_MBZ          _SB_MAKEMASK(4,0)
  266. /*
  267.  * ASIC Mode Base Address (Table 7-7)
  268.  */
  269. #define M_DMA_ASIC_BASE_MBZ         _SB_MAKEMASK(20,0)
  270. /*
  271.  * DMA Descriptor Count Registers (Table 7-8)
  272.  */
  273.  
  274. /* No bitfields */
  275. /* 
  276.  * Current Descriptor Address Register (Table 7-11)
  277.  */
  278. #define S_DMA_CURDSCR_ADDR          _SB_MAKE64(0)
  279. #define M_DMA_CURDSCR_ADDR          _SB_MAKEMASK(40,S_DMA_CURDSCR_ADDR)
  280. #define S_DMA_CURDSCR_COUNT         _SB_MAKE64(48)
  281. #define M_DMA_CURDSCR_COUNT         _SB_MAKEMASK(16,S_DMA_CURDSCR_COUNT)
  282. /*  *********************************************************************
  283.     *  DMA Descriptors
  284.     ********************************************************************* */
  285. /*
  286.  * Descriptor doubleword "A"  (Table 7-12)
  287.  */
  288. #define S_DMA_DSCRA_OFFSET          _SB_MAKE64(0)
  289. #define M_DMA_DSCRA_OFFSET          _SB_MAKEMASK(5,S_DMA_DSCRA_OFFSET)
  290. /* Note: Don't shift the address over, just mask it with the mask below */
  291. #define S_DMA_DSCRA_A_ADDR          _SB_MAKE64(5)
  292. #define M_DMA_DSCRA_A_ADDR          _SB_MAKEMASK(35,S_DMA_DSCRA_A_ADDR)
  293. #define M_DMA_DSCRA_A_ADDR_OFFSET   (M_DMA_DSCRA_OFFSET | M_DMA_DSCRA_A_ADDR)
  294. #define S_DMA_DSCRA_A_SIZE          _SB_MAKE64(40)
  295. #define M_DMA_DSCRA_A_SIZE          _SB_MAKEMASK(9,S_DMA_DSCRA_A_SIZE)
  296. #define V_DMA_DSCRA_A_SIZE(x)       _SB_MAKEVALUE(x,S_DMA_DSCRA_A_SIZE)
  297. #define G_DMA_DSCRA_A_SIZE(x)       _SB_GETVALUE(x,S_DMA_DSCRA_A_SIZE,M_DMA_DSCRA_A_SIZE)
  298. #define M_DMA_DSCRA_INTERRUPT       _SB_MAKEMASK1(49)
  299. #define M_DMA_DSCRA_OFFSETB     _SB_MAKEMASK1(50)
  300. #define S_DMA_DSCRA_STATUS          _SB_MAKE64(51)
  301. #define M_DMA_DSCRA_STATUS          _SB_MAKEMASK(13,S_DMA_DSCRA_STATUS)
  302. #define V_DMA_DSCRA_STATUS(x)       _SB_MAKEVALUE(x,S_DMA_DSCRA_STATUS)
  303. #define G_DMA_DSCRA_STATUS(x)       _SB_GETVALUE(x,S_DMA_DSCRA_STATUS,M_DMA_DSCRA_STATUS)
  304. /*
  305.  * Descriptor doubleword "B"  (Table 7-13)
  306.  */
  307. #define S_DMA_DSCRB_OPTIONS         _SB_MAKE64(0)
  308. #define M_DMA_DSCRB_OPTIONS         _SB_MAKEMASK(4,S_DMA_DSCRB_OPTIONS)
  309. #define V_DMA_DSCRB_OPTIONS(x)      _SB_MAKEVALUE(x,S_DMA_DSCRB_OPTIONS)
  310. #define G_DMA_DSCRB_OPTIONS(x)      _SB_GETVALUE(x,S_DMA_DSCRB_OPTIONS,M_DMA_DSCRB_OPTIONS)
  311. #define R_DMA_DSCRB_ADDR            _SB_MAKE64(0x10)
  312. /* Note: Don't shift the address over, just mask it with the mask below */
  313. #define S_DMA_DSCRB_B_ADDR          _SB_MAKE64(5)
  314. #define M_DMA_DSCRB_B_ADDR          _SB_MAKEMASK(35,S_DMA_DSCRB_B_ADDR)
  315. #define S_DMA_DSCRB_B_SIZE          _SB_MAKE64(40)
  316. #define M_DMA_DSCRB_B_SIZE          _SB_MAKEMASK(9,S_DMA_DSCRB_B_SIZE)
  317. #define V_DMA_DSCRB_B_SIZE(x)       _SB_MAKEVALUE(x,S_DMA_DSCRB_B_SIZE)
  318. #define G_DMA_DSCRB_B_SIZE(x)       _SB_GETVALUE(x,S_DMA_DSCRB_B_SIZE,M_DMA_DSCRB_B_SIZE)
  319. #define M_DMA_DSCRB_B_VALID         _SB_MAKEMASK1(49)
  320. #define S_DMA_DSCRB_PKT_SIZE        _SB_MAKE64(50)
  321. #define M_DMA_DSCRB_PKT_SIZE        _SB_MAKEMASK(14,S_DMA_DSCRB_PKT_SIZE)
  322. #define V_DMA_DSCRB_PKT_SIZE(x)     _SB_MAKEVALUE(x,S_DMA_DSCRB_PKT_SIZE)
  323. #define G_DMA_DSCRB_PKT_SIZE(x)     _SB_GETVALUE(x,S_DMA_DSCRB_PKT_SIZE,M_DMA_DSCRB_PKT_SIZE)
  324. /* 
  325.  * Ethernet Descriptor Status Bits (Table 7-15)
  326.  */
  327. #define M_DMA_ETHRX_BADIP4CS        _SB_MAKEMASK1(51)
  328. #define M_DMA_ETHRX_DSCRERR     _SB_MAKEMASK1(52)
  329. #define S_DMA_ETHRX_RXCH            53
  330. #define M_DMA_ETHRX_RXCH            _SB_MAKEMASK(2,S_DMA_ETHRX_RXCH)
  331. #define V_DMA_ETHRX_RXCH(x)         _SB_MAKEVALUE(x,S_DMA_ETHRX_RXCH)
  332. #define G_DMA_ETHRX_RXCH(x)         _SB_GETVALUE(x,S_DMA_ETHRX_RXCH,M_DMA_ETHRX_RXCH)
  333. #define S_DMA_ETHRX_PKTTYPE         55
  334. #define M_DMA_ETHRX_PKTTYPE         _SB_MAKEMASK(3,S_DMA_ETHRX_PKTTYPE)
  335. #define V_DMA_ETHRX_PKTTYPE(x)      _SB_MAKEVALUE(x,S_DMA_ETHRX_PKTTYPE)
  336. #define G_DMA_ETHRX_PKTTYPE(x)      _SB_GETVALUE(x,S_DMA_ETHRX_PKTTYPE,M_DMA_ETHRX_PKTTYPE)
  337. #define K_DMA_ETHRX_PKTTYPE_IPV4    0
  338. #define K_DMA_ETHRX_PKTTYPE_ARPV4   1
  339. #define K_DMA_ETHRX_PKTTYPE_802     2
  340. #define K_DMA_ETHRX_PKTTYPE_OTHER   3
  341. #define K_DMA_ETHRX_PKTTYPE_USER0   4
  342. #define K_DMA_ETHRX_PKTTYPE_USER1   5
  343. #define K_DMA_ETHRX_PKTTYPE_USER2   6
  344. #define K_DMA_ETHRX_PKTTYPE_USER3   7
  345. #define M_DMA_ETHRX_MATCH_EXACT     _SB_MAKEMASK1(58)
  346. #define M_DMA_ETHRX_MATCH_HASH      _SB_MAKEMASK1(59)
  347. #define M_DMA_ETHRX_BCAST           _SB_MAKEMASK1(60)
  348. #define M_DMA_ETHRX_MCAST           _SB_MAKEMASK1(61)
  349. #define M_DMA_ETHRX_BAD             _SB_MAKEMASK1(62)
  350. #define M_DMA_ETHRX_SOP             _SB_MAKEMASK1(63)
  351. /*
  352.  * Ethernet Transmit Status Bits (Table 7-16)
  353.  */
  354. #define M_DMA_ETHTX_SOP          _SB_MAKEMASK1(63)
  355. /* 
  356.  * Ethernet Transmit Options (Table 7-17)
  357.  */
  358. #define K_DMA_ETHTX_NOTSOP          _SB_MAKE64(0x00)
  359. #define K_DMA_ETHTX_APPENDCRC       _SB_MAKE64(0x01)
  360. #define K_DMA_ETHTX_REPLACECRC      _SB_MAKE64(0x02)
  361. #define K_DMA_ETHTX_APPENDCRC_APPENDPAD _SB_MAKE64(0x03)
  362. #define K_DMA_ETHTX_APPENDVLAN_REPLACECRC _SB_MAKE64(0x04)
  363. #define K_DMA_ETHTX_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x05)
  364. #define K_DMA_ETHTX_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x6)
  365. #define K_DMA_ETHTX_NOMODS          _SB_MAKE64(0x07)
  366. #define K_DMA_ETHTX_RESERVED1       _SB_MAKE64(0x08)
  367. #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC _SB_MAKE64(0x09)
  368. #define K_DMA_ETHTX_REPLACESADDR_REPLACECRC _SB_MAKE64(0x0A)
  369. #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC_APPENDPAD _SB_MAKE64(0x0B)
  370. #define K_DMA_ETHTX_REPLACESADDR_APPENDVLAN_REPLACECRC _SB_MAKE64(0x0C)
  371. #define K_DMA_ETHTX_REPLACESADDR_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x0D)
  372. #define K_DMA_ETHTX_REPLACESADDR_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x0E)
  373. #define K_DMA_ETHTX_RESERVED2       _SB_MAKE64(0x0F)
  374. /*
  375.  * Serial Receive Options (Table 7-18)
  376.  */
  377. #define M_DMA_SERRX_CRC_ERROR       _SB_MAKEMASK1(56)
  378. #define M_DMA_SERRX_ABORT           _SB_MAKEMASK1(57)
  379. #define M_DMA_SERRX_OCTET_ERROR     _SB_MAKEMASK1(58)
  380. #define M_DMA_SERRX_LONGFRAME_ERROR _SB_MAKEMASK1(59)
  381. #define M_DMA_SERRX_SHORTFRAME_ERROR _SB_MAKEMASK1(60)
  382. #define M_DMA_SERRX_OVERRUN_ERROR   _SB_MAKEMASK1(61)
  383. #define M_DMA_SERRX_GOOD            _SB_MAKEMASK1(62)
  384. #define M_DMA_SERRX_SOP             _SB_MAKEMASK1(63)
  385. /*
  386.  * Serial Transmit Status Bits (Table 7-20)
  387.  */
  388. #define M_DMA_SERTX_FLAG     _SB_MAKEMASK1(63)
  389. /*
  390.  * Serial Transmit Options (Table 7-21)
  391.  */
  392. #define K_DMA_SERTX_RESERVED        _SB_MAKEMASK1(0)
  393. #define K_DMA_SERTX_APPENDCRC       _SB_MAKEMASK1(1)
  394. #define K_DMA_SERTX_APPENDPAD       _SB_MAKEMASK1(2)
  395. #define K_DMA_SERTX_ABORT           _SB_MAKEMASK1(3)
  396. /*  *********************************************************************
  397.     *  Data Mover Registers
  398.     ********************************************************************* */
  399. /* 
  400.  * Data Mover Descriptor Base Address Register (Table 7-22)
  401.  * Register: DM_DSCR_BASE_0
  402.  * Register: DM_DSCR_BASE_1
  403.  * Register: DM_DSCR_BASE_2
  404.  * Register: DM_DSCR_BASE_3
  405.  */
  406. #define M_DM_DSCR_BASE_MBZ          _SB_MAKEMASK(3,0)
  407. /*  Note: Just mask the base address and then OR it in. */
  408. #define S_DM_DSCR_BASE_ADDR         _SB_MAKE64(3)
  409. #define M_DM_DSCR_BASE_ADDR         _SB_MAKEMASK(36,S_DM_DSCR_BASE_ADDR)
  410. #define S_DM_DSCR_BASE_RINGSZ       _SB_MAKE64(40)
  411. #define M_DM_DSCR_BASE_RINGSZ       _SB_MAKEMASK(16,S_DM_DSCR_BASE_RINGSZ)
  412. #define V_DM_DSCR_BASE_RINGSZ(x)    _SB_MAKEVALUE(x,S_DM_DSCR_BASE_RINGSZ)
  413. #define G_DM_DSCR_BASE_RINGSZ(x)    _SB_GETVALUE(x,S_DM_DSCR_BASE_RINGSZ,M_DM_DSCR_BASE_RINGSZ)
  414. #define S_DM_DSCR_BASE_PRIORITY     _SB_MAKE64(56)
  415. #define M_DM_DSCR_BASE_PRIORITY     _SB_MAKEMASK(3,S_DM_DSCR_BASE_PRIORITY)
  416. #define V_DM_DSCR_BASE_PRIORITY(x)  _SB_MAKEVALUE(x,S_DM_DSCR_BASE_PRIORITY)
  417. #define G_DM_DSCR_BASE_PRIORITY(x)  _SB_GETVALUE(x,S_DM_DSCR_BASE_PRIORITY,M_DM_DSCR_BASE_PRIORITY)
  418. #define K_DM_DSCR_BASE_PRIORITY_1   0
  419. #define K_DM_DSCR_BASE_PRIORITY_2   1
  420. #define K_DM_DSCR_BASE_PRIORITY_4   2
  421. #define K_DM_DSCR_BASE_PRIORITY_8   3
  422. #define K_DM_DSCR_BASE_PRIORITY_16  4
  423. #define M_DM_DSCR_BASE_ACTIVE       _SB_MAKEMASK1(59)
  424. #define M_DM_DSCR_BASE_INTERRUPT    _SB_MAKEMASK1(60)
  425. #define M_DM_DSCR_BASE_RESET        _SB_MAKEMASK1(61) /* write register */
  426. #define M_DM_DSCR_BASE_ERROR        _SB_MAKEMASK1(61) /* read register */
  427. #define M_DM_DSCR_BASE_ABORT        _SB_MAKEMASK1(62)
  428. #define M_DM_DSCR_BASE_ENABL        _SB_MAKEMASK1(63)
  429. /* 
  430.  * Data Mover Descriptor Count Register (Table 7-25)
  431.  */
  432. /* no bitfields */
  433. /*
  434.  * Data Mover Current Descriptor Address (Table 7-24)
  435.  * Register: DM_CUR_DSCR_ADDR_0
  436.  * Register: DM_CUR_DSCR_ADDR_1
  437.  * Register: DM_CUR_DSCR_ADDR_2
  438.  * Register: DM_CUR_DSCR_ADDR_3
  439.  */
  440. #define S_DM_CUR_DSCR_DSCR_ADDR     _SB_MAKE64(0)
  441. #define M_DM_CUR_DSCR_DSCR_ADDR     _SB_MAKEMASK(40,S_DM_CUR_DSCR_DSCR_ADDR)
  442. #define S_DM_CUR_DSCR_DSCR_COUNT    _SB_MAKE64(48)
  443. #define M_DM_CUR_DSCR_DSCR_COUNT    _SB_MAKEMASK(16,S_DM_CUR_DSCR_DSCR_COUNT)
  444. #define V_DM_CUR_DSCR_DSCR_COUNT(r) _SB_MAKEVALUE(r,S_DM_CUR_DSCR_DSCR_COUNT)
  445. #define G_DM_CUR_DSCR_DSCR_COUNT(r) _SB_GETVALUE(r,S_DM_CUR_DSCR_DSCR_COUNT,
  446.                                      M_DM_CUR_DSCR_DSCR_COUNT)
  447. /*
  448.  * Data Mover Descriptor Doubleword "A"  (Table 7-26)
  449.  */
  450. #define S_DM_DSCRA_DST_ADDR         _SB_MAKE64(0)
  451. #define M_DM_DSCRA_DST_ADDR         _SB_MAKEMASK(40,S_DM_DSCRA_DST_ADDR)
  452. #define M_DM_DSCRA_UN_DEST          _SB_MAKEMASK1(40)
  453. #define M_DM_DSCRA_UN_SRC           _SB_MAKEMASK1(41)
  454. #define M_DM_DSCRA_INTERRUPT        _SB_MAKEMASK1(42)
  455. #define M_DM_DSCRA_THROTTLE         _SB_MAKEMASK1(43)
  456. #define S_DM_DSCRA_DIR_DEST         _SB_MAKE64(44)
  457. #define M_DM_DSCRA_DIR_DEST         _SB_MAKEMASK(2,S_DM_DSCRA_DIR_DEST)
  458. #define V_DM_DSCRA_DIR_DEST(x)      _SB_MAKEVALUE(x,S_DM_DSCRA_DIR_DEST)
  459. #define G_DM_DSCRA_DIR_DEST(x)      _SB_GETVALUE(x,S_DM_DSCRA_DIR_DEST,M_DM_DSCRA_DIR_DEST)
  460. #define K_DM_DSCRA_DIR_DEST_INCR    0
  461. #define K_DM_DSCRA_DIR_DEST_DECR    1
  462. #define K_DM_DSCRA_DIR_DEST_CONST   2
  463. #define V_DM_DSCRA_DIR_DEST_INCR    _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_INCR,S_DM_DSCRA_DIR_DEST)
  464. #define V_DM_DSCRA_DIR_DEST_DECR    _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_DECR,S_DM_DSCRA_DIR_DEST)
  465. #define V_DM_DSCRA_DIR_DEST_CONST   _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_CONST,S_DM_DSCRA_DIR_DEST)
  466. #define S_DM_DSCRA_DIR_SRC          _SB_MAKE64(46)
  467. #define M_DM_DSCRA_DIR_SRC          _SB_MAKEMASK(2,S_DM_DSCRA_DIR_SRC)
  468. #define V_DM_DSCRA_DIR_SRC(x)       _SB_MAKEVALUE(x,S_DM_DSCRA_DIR_SRC)
  469. #define G_DM_DSCRA_DIR_SRC(x)       _SB_GETVALUE(x,S_DM_DSCRA_DIR_SRC,M_DM_DSCRA_DIR_SRC)
  470. #define K_DM_DSCRA_DIR_SRC_INCR     0
  471. #define K_DM_DSCRA_DIR_SRC_DECR     1
  472. #define K_DM_DSCRA_DIR_SRC_CONST    2
  473. #define V_DM_DSCRA_DIR_SRC_INCR     _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_INCR,S_DM_DSCRA_DIR_SRC)
  474. #define V_DM_DSCRA_DIR_SRC_DECR     _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_DECR,S_DM_DSCRA_DIR_SRC)
  475. #define V_DM_DSCRA_DIR_SRC_CONST    _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_CONST,S_DM_DSCRA_DIR_SRC)
  476. #define M_DM_DSCRA_ZERO_MEM         _SB_MAKEMASK1(48)
  477. #define M_DM_DSCRA_PREFETCH         _SB_MAKEMASK1(49)
  478. #define M_DM_DSCRA_L2C_DEST         _SB_MAKEMASK1(50)
  479. #define M_DM_DSCRA_L2C_SRC          _SB_MAKEMASK1(51)
  480. #define M_DM_DSCRA_RESERVED2        _SB_MAKEMASK(12,52)
  481. /*
  482.  * Data Mover Descriptor Doubleword "B"  (Table 7-25)
  483.  */
  484. #define S_DM_DSCRB_SRC_ADDR         _SB_MAKE64(0)
  485. #define M_DM_DSCRB_SRC_ADDR         _SB_MAKEMASK(40,S_DM_DSCRB_SRC_ADDR)
  486. #define S_DM_DSCRB_SRC_LENGTH       _SB_MAKE64(40)
  487. #define M_DM_DSCRB_SRC_LENGTH       _SB_MAKEMASK(20,S_DM_DSCRB_SRC_LENGTH)
  488. #define V_DM_DSCRB_SRC_LENGTH(x)    _SB_MAKEVALUE(x,S_DM_DSCRB_SRC_LENGTH)
  489. #define G_DM_DSCRB_SRC_LENGTH(x)    _SB_GETVALUE(x,S_DM_DSCRB_SRC_LENGTH,M_DM_DSCRB_SRC_LENGTH)
  490. /*  *********************************************************************
  491.     *  Ethernet MAC Registers
  492.     ********************************************************************* */
  493. /*
  494.  * MAC Configuration Register (Table 9-13)
  495.  * Register: MAC_CFG_0
  496.  * Register: MAC_CFG_1
  497.  * Register: MAC_CFG_2
  498.  */
  499. /* Updated to spec 0.2 */
  500. #define M_MAC_RESERVED0             _SB_MAKEMASK1(0)
  501. #define M_MAC_TX_HOLD_SOP_EN        _SB_MAKEMASK1(1)
  502. #define M_MAC_RETRY_EN              _SB_MAKEMASK1(2)
  503. #define M_MAC_RET_DRPREQ_EN         _SB_MAKEMASK1(3)
  504. #define M_MAC_RET_UFL_EN            _SB_MAKEMASK1(4)
  505. #define M_MAC_BURST_EN              _SB_MAKEMASK1(5)
  506. #define S_MAC_TX_PAUSE              _SB_MAKE64(6)
  507. #define M_MAC_TX_PAUSE_CNT          _SB_MAKEMASK(3,S_MAC_TX_PAUSE)
  508. #define V_MAC_TX_PAUSE_CNT(x)       _SB_MAKEVALUE(x,S_MAC_TX_PAUSE)
  509. #define K_MAC_TX_PAUSE_CNT_512      0
  510. #define K_MAC_TX_PAUSE_CNT_1K       1
  511. #define K_MAC_TX_PAUSE_CNT_2K       2
  512. #define K_MAC_TX_PAUSE_CNT_4K       3
  513. #define K_MAC_TX_PAUSE_CNT_8K       4
  514. #define K_MAC_TX_PAUSE_CNT_16K      5
  515. #define K_MAC_TX_PAUSE_CNT_32K      6
  516. #define K_MAC_TX_PAUSE_CNT_64K      7
  517. #define V_MAC_TX_PAUSE_CNT_512      V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_512)
  518. #define V_MAC_TX_PAUSE_CNT_1K       V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_1K)
  519. #define V_MAC_TX_PAUSE_CNT_2K       V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_2K)
  520. #define V_MAC_TX_PAUSE_CNT_4K       V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_4K)
  521. #define V_MAC_TX_PAUSE_CNT_8K       V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_8K)
  522. #define V_MAC_TX_PAUSE_CNT_16K      V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_16K)
  523. #define V_MAC_TX_PAUSE_CNT_32K      V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_32K)
  524. #define V_MAC_TX_PAUSE_CNT_64K      V_MAC_TX_PAUSE_CNT(K_MAC_TX_PAUSE_CNT_64K)
  525. #define M_MAC_RESERVED1             _SB_MAKEMASK(8,9)
  526. #define M_MAC_AP_STAT_EN            _SB_MAKEMASK1(17)
  527. #define M_MAC_RESERVED2     _SB_MAKEMASK1(18)
  528. #define M_MAC_DRP_ERRPKT_EN         _SB_MAKEMASK1(19)
  529. #define M_MAC_DRP_FCSERRPKT_EN      _SB_MAKEMASK1(20)
  530. #define M_MAC_DRP_CODEERRPKT_EN     _SB_MAKEMASK1(21)
  531. #define M_MAC_DRP_DRBLERRPKT_EN     _SB_MAKEMASK1(22)
  532. #define M_MAC_DRP_RNTPKT_EN         _SB_MAKEMASK1(23)
  533. #define M_MAC_DRP_OSZPKT_EN         _SB_MAKEMASK1(24)
  534. #define M_MAC_DRP_LENERRPKT_EN      _SB_MAKEMASK1(25)
  535. #define M_MAC_RESERVED3             _SB_MAKEMASK(6,26)
  536. #define M_MAC_BYPASS_SEL            _SB_MAKEMASK1(32)
  537. #define M_MAC_HDX_EN                _SB_MAKEMASK1(33)
  538. #define S_MAC_SPEED_SEL             _SB_MAKE64(34)
  539. #define M_MAC_SPEED_SEL             _SB_MAKEMASK(2,S_MAC_SPEED_SEL)
  540. #define V_MAC_SPEED_SEL(x)     _SB_MAKEVALUE(x,S_MAC_SPEED_SEL)
  541. #define G_MAC_SPEED_SEL(x)     _SB_GETVALUE(x,S_MAC_SPEED_SEL,M_MAC_SPEED_SEL)
  542. #define K_MAC_SPEED_SEL_10MBPS      0
  543. #define K_MAC_SPEED_SEL_100MBPS     1
  544. #define K_MAC_SPEED_SEL_1000MBPS    2
  545. #define K_MAC_SPEED_SEL_RESERVED    3
  546. #define V_MAC_SPEED_SEL_10MBPS      V_MAC_SPEED_SEL(K_MAC_SPEED_SEL_10MBPS)
  547. #define V_MAC_SPEED_SEL_100MBPS     V_MAC_SPEED_SEL(K_MAC_SPEED_SEL_100MBPS)
  548. #define V_MAC_SPEED_SEL_1000MBPS    V_MAC_SPEED_SEL(K_MAC_SPEED_SEL_1000MBPS)
  549. #define V_MAC_SPEED_SEL_RESERVED    V_MAC_SPEED_SEL(K_MAC_SPEED_SEL_RESERVED)
  550. #define M_MAC_TX_CLK_EDGE_SEL       _SB_MAKEMASK1(36)
  551. #define M_MAC_LOOPBACK_SEL          _SB_MAKEMASK1(37)
  552. #define M_MAC_FAST_SYNC             _SB_MAKEMASK1(38)
  553. #define M_MAC_SS_EN                 _SB_MAKEMASK1(39)
  554. #define S_MAC_BYPASS_CFG     _SB_MAKE64(40)
  555. #define M_MAC_BYPASS_CFG            _SB_MAKEMASK(2,S_MAC_BYPASS_CFG)
  556. #define V_MAC_BYPASS_CFG(x)         _SB_MAKEVALUE(x,S_MAC_BYPASS_CFG)
  557. #define G_MAC_BYPASS_CFG(x)         _SB_GETVALUE(x,S_MAC_BYPASS_CFG,M_MAC_BYPASS_CFG)
  558. #define K_MAC_BYPASS_GMII     0
  559. #define K_MAC_BYPASS_ENCODED        1
  560. #define K_MAC_BYPASS_SOP            2
  561. #define K_MAC_BYPASS_EOP            3
  562. #define M_MAC_BYPASS_16             _SB_MAKEMASK1(42)
  563. #define M_MAC_BYPASS_FCS_CHK     _SB_MAKEMASK1(43)
  564. #define M_MAC_RESERVED4          _SB_MAKEMASK(2,44)
  565. #define S_MAC_BYPASS_IFG            _SB_MAKE64(46)
  566. #define M_MAC_BYPASS_IFG            _SB_MAKEMASK(8,S_MAC_BYPASS_IFG)
  567. #define V_MAC_BYPASS_IFG(x)     _SB_MAKEVALUE(x,S_MAC_BYPASS_IFG)
  568. #define G_MAC_BYPASS_IFG(x)     _SB_GETVALUE(x,S_MAC_BYPASS_IFG,M_MAC_BYPASS_IFG)
  569. #define K_MAC_FC_CMD_DISABLED       0
  570. #define K_MAC_FC_CMD_ENABLED        1
  571. #define K_MAC_FC_CMD_ENAB_FALSECARR 2
  572. #define V_MAC_FC_CMD_DISABLED       V_MAC_FC_CMD(K_MAC_FC_CMD_DISABLED)
  573. #define V_MAC_FC_CMD_ENABLED        V_MAC_FC_CMD(K_MAC_FC_CMD_ENABLED)
  574. #define V_MAC_FC_CMD_ENAB_FALSECARR V_MAC_FC_CMD(K_MAC_FC_CMD_ENAB_FALSECARR)
  575. #define M_MAC_FC_SEL                _SB_MAKEMASK1(54)
  576. #define S_MAC_FC_CMD                _SB_MAKE64(55)
  577. #define M_MAC_FC_CMD                _SB_MAKEMASK(2,S_MAC_FC_CMD)
  578. #define V_MAC_FC_CMD(x)             _SB_MAKEVALUE(x,S_MAC_FC_CMD)
  579. #define G_MAC_FC_CMD(x)             _SB_GETVALUE(x,S_MAC_FC_CMD,M_MAC_FC_CMD)
  580. #define S_MAC_RX_CH_SEL             _SB_MAKE64(57)
  581. #define M_MAC_RX_CH_SEL             _SB_MAKEMASK(7,S_MAC_RX_CH_SEL)
  582. #define V_MAC_RX_CH_SEL(x)          _SB_MAKEVALUE(x,S_MAC_RX_CH_SEL)
  583. #define G_MAC_RX_CH_SEL(x)          _SB_GETVALUE(x,S_MAC_RX_CH_SEL,M_MAC_RX_CH_SEL)
  584. /*
  585.  * MAC Enable Registers
  586.  * Register: MAC_ENABLE_0
  587.  * Register: MAC_ENABLE_1
  588.  * Register: MAC_ENABLE_2
  589.  */
  590. #define M_MAC_RXDMA_EN0             _SB_MAKEMASK1(0)
  591. #define M_MAC_RXDMA_EN1             _SB_MAKEMASK1(1)
  592. #define M_MAC_TXDMA_EN0             _SB_MAKEMASK1(4)
  593. #define M_MAC_TXDMA_EN1             _SB_MAKEMASK1(5)
  594. #define M_MAC_PORT_RESET            _SB_MAKEMASK1(8)
  595. #define M_MAC_RX_ENABLE             _SB_MAKEMASK1(10)
  596. #define M_MAC_TX_ENABLE             _SB_MAKEMASK1(11)
  597. #define M_MAC_BYP_RX_ENABLE         _SB_MAKEMASK1(12)
  598. #define M_MAC_BYP_TX_ENABLE         _SB_MAKEMASK1(13)
  599. /*
  600.  * MAC DMA Control Register
  601.  * Register: MAC_TXD_CTL_0
  602.  * Register: MAC_TXD_CTL_1
  603.  * Register: MAC_TXD_CTL_2
  604.  */
  605. #define S_MAC_TXD_WEIGHT0     _SB_MAKE64(0)
  606. #define M_MAC_TXD_WEIGHT0     _SB_MAKEMASK(4,S_MAC_TXD_WEIGHT0)
  607. #define V_MAC_TXD_WEIGHT0(x)        _SB_MAKEVALUE(x,S_MAC_TXD_WEIGHT0)
  608. #define G_MAC_TXD_WEIGHT0(x)        _SB_GETVALUE(x,S_MAC_TXD_WEIGHT0,M_MAC_TXD_WEIGHT0)
  609. #define S_MAC_TXD_WEIGHT1     _SB_MAKE64(4)
  610. #define M_MAC_TXD_WEIGHT1     _SB_MAKEMASK(4,S_MAC_TXD_WEIGHT1)
  611. #define V_MAC_TXD_WEIGHT1(x)        _SB_MAKEVALUE(x,S_MAC_TXD_WEIGHT1)
  612. #define G_MAC_TXD_WEIGHT1(x)        _SB_GETVALUE(x,S_MAC_TXD_WEIGHT1,M_MAC_TXD_WEIGHT1)
  613. /*
  614.  * MAC Fifo Threshhold registers (Table 9-14)
  615.  * Register: MAC_THRSH_CFG_0
  616.  * Register: MAC_THRSH_CFG_1
  617.  * Register: MAC_THRSH_CFG_2
  618.  */
  619. #define S_MAC_TX_WR_THRSH           _SB_MAKE64(0)
  620. #define M_MAC_TX_WR_THRSH           _SB_MAKEMASK(6,S_MAC_TX_WR_THRSH)
  621. #define V_MAC_TX_WR_THRSH(x)        _SB_MAKEVALUE(x,S_MAC_TX_WR_THRSH)
  622. #define G_MAC_TX_WR_THRSH(x)        _SB_GETVALUE(x,S_MAC_TX_WR_THRSH,M_MAC_TX_WR_THRSH)
  623. #define S_MAC_TX_RD_THRSH           _SB_MAKE64(8)
  624. #define M_MAC_TX_RD_THRSH           _SB_MAKEMASK(6,S_MAC_TX_RD_THRSH)
  625. #define V_MAC_TX_RD_THRSH(x)        _SB_MAKEVALUE(x,S_MAC_TX_RD_THRSH)
  626. #define G_MAC_TX_RD_THRSH(x)        _SB_GETVALUE(x,S_MAC_TX_RD_THRSH,M_MAC_TX_RD_THRSH)
  627. #define S_MAC_TX_RL_THRSH           _SB_MAKE64(16)
  628. #define M_MAC_TX_RL_THRSH           _SB_MAKEMASK(4,S_MAC_TX_RL_THRSH)
  629. #define V_MAC_TX_RL_THRSH(x)        _SB_MAKEVALUE(x,S_MAC_TX_RL_THRSH)
  630. #define G_MAC_TX_RL_THRSH(x)        _SB_GETVALUE(x,S_MAC_TX_RL_THRSH,M_MAC_TX_RL_THRSH)
  631. #define S_MAC_RX_PL_THRSH           _SB_MAKE64(24)
  632. #define M_MAC_RX_PL_THRSH           _SB_MAKEMASK(6,S_MAC_RX_WR_THRSH)
  633. #define V_MAC_RX_PL_THRSH(x)        _SB_MAKEVALUE(x,S_MAC_RX_PL_THRSH)
  634. #define G_MAC_RX_PL_THRSH(x)        _SB_GETVALUE(x,S_MAC_RX_PL_THRSH,M_MAC_RX_PL_THRSH)
  635. #define S_MAC_RX_RD_THRSH           _SB_MAKE64(32)
  636. #define M_MAC_RX_RD_THRSH           _SB_MAKEMASK(6,S_MAC_RX_RD_THRSH)
  637. #define V_MAC_RX_RD_THRSH(x)        _SB_MAKEVALUE(x,S_MAC_RX_RD_THRSH)
  638. #define G_MAC_RX_RD_THRSH(x)        _SB_GETVALUE(x,S_MAC_RX_RD_THRSH,M_MAC_RX_RD_THRSH)
  639. #define S_MAC_RX_RL_THRSH           _SB_MAKE64(40)
  640. #define M_MAC_RX_RL_THRSH           _SB_MAKEMASK(6,S_MAC_RX_RL_THRSH)
  641. #define V_MAC_RX_RL_THRSH(x)        _SB_MAKEVALUE(x,S_MAC_RX_RL_THRSH)
  642. #define G_MAC_RX_RL_THRSH(x)        _SB_GETVALUE(x,S_MAC_RX_RL_THRSH,M_MAC_RX_RL_THRSH)
  643. /*
  644.  * MAC Frame Configuration Registers (Table 9-15)
  645.  * Register: MAC_FRAME_CFG_0
  646.  * Register: MAC_FRAME_CFG_1
  647.  * Register: MAC_FRAME_CFG_2
  648.  */
  649. #define S_MAC_IFG_RX                _SB_MAKE64(0)
  650. #define M_MAC_IFG_RX                _SB_MAKEMASK(6,S_MAC_IFG_RX)
  651. #define V_MAC_IFG_RX(x)             _SB_MAKEVALUE(x,S_MAC_IFG_RX)
  652. #define G_MAC_IFG_RX(x)             _SB_GETVALUE(x,S_MAC_IFG_RX,M_MAC_IFG_RX)
  653. #define S_MAC_IFG_TX                _SB_MAKE64(6)
  654. #define M_MAC_IFG_TX                _SB_MAKEMASK(6,S_MAC_IFG_TX)
  655. #define V_MAC_IFG_TX(x)             _SB_MAKEVALUE(x,S_MAC_IFG_TX)
  656. #define G_MAC_IFG_TX(x)             _SB_GETVALUE(x,S_MAC_IFG_TX,M_MAC_IFG_TX)
  657. #define S_MAC_IFG_THRSH             _SB_MAKE64(12)
  658. #define M_MAC_IFG_THRSH             _SB_MAKEMASK(6,S_MAC_IFG_THRSH)
  659. #define V_MAC_IFG_THRSH(x)          _SB_MAKEVALUE(x,S_MAC_IFG_THRSH)
  660. #define G_MAC_IFG_THRSH(x)          _SB_GETVALUE(x,S_MAC_IFG_THRSH,M_MAC_IFG_THRSH)
  661. #define S_MAC_BACKOFF_SEL           _SB_MAKE64(18)
  662. #define M_MAC_BACKOFF_SEL           _SB_MAKEMASK(4,S_MAC_BACKOFF_SEL)
  663. #define V_MAC_BACKOFF_SEL(x)        _SB_MAKEVALUE(x,S_MAC_BACKOFF_SEL)
  664. #define G_MAC_BACKOFF_SEL(x)        _SB_GETVALUE(x,S_MAC_BACKOFF_SEL,M_MAC_BACKOFF_SEL)
  665. #define S_MAC_LFSR_SEED             _SB_MAKE64(22)
  666. #define M_MAC_LFSR_SEED             _SB_MAKEMASK(8,S_MAC_LFSR_SEED)
  667. #define V_MAC_LFSR_SEED(x)          _SB_MAKEVALUE(x,S_MAC_LFSR_SEED)
  668. #define G_MAC_LFSR_SEED(x)          _SB_GETVALUE(x,S_MAC_LFSR_SEED,M_MAC_LFSR_SEED)
  669. #define S_MAC_SLOT_SIZE             _SB_MAKE64(30)
  670. #define M_MAC_SLOT_SIZE             _SB_MAKEMASK(10,S_MAC_SLOT_SIZE)
  671. #define V_MAC_SLOT_SIZE(x)          _SB_MAKEVALUE(x,S_MAC_SLOT_SIZE)
  672. #define G_MAC_SLOT_SIZE(x)          _SB_GETVALUE(x,S_MAC_SLOT_SIZE,M_MAC_SLOT_SIZE)
  673. #define S_MAC_MIN_FRAMESZ           _SB_MAKE64(40)
  674. #define M_MAC_MIN_FRAMESZ           _SB_MAKEMASK(8,S_MAC_MIN_FRAMESZ)
  675. #define V_MAC_MIN_FRAMESZ(x)        _SB_MAKEVALUE(x,S_MAC_MIN_FRAMESZ)
  676. #define G_MAC_MIN_FRAMESZ(x)        _SB_GETVALUE(x,S_MAC_MIN_FRAMESZ,M_MAC_MIN_FRAMESZ)
  677. #define S_MAC_MAX_FRAMESZ           _SB_MAKE64(48)
  678. #define M_MAC_MAX_FRAMESZ           _SB_MAKEMASK(16,S_MAC_MAX_FRAMESZ)
  679. #define V_MAC_MAX_FRAMESZ(x)        _SB_MAKEVALUE(x,S_MAC_MAX_FRAMESZ)
  680. #define G_MAC_MAX_FRAMESZ(x)        _SB_GETVALUE(x,S_MAC_MAX_FRAMESZ,M_MAC_MAX_FRAMESZ)
  681. /*
  682.  * These constants are used to configure the fields within the Frame
  683.  * Configuration Register.  
  684.  */
  685. #define K_MAC_IFG_RX_10             _SB_MAKE64(18)
  686. #define K_MAC_IFG_RX_100            _SB_MAKE64(18)
  687. #define K_MAC_IFG_RX_1000           _SB_MAKE64(6)
  688. #define K_MAC_IFG_TX_10             _SB_MAKE64(20)
  689. #define K_MAC_IFG_TX_100            _SB_MAKE64(20)
  690. #define K_MAC_IFG_TX_1000           _SB_MAKE64(8)
  691. #define K_MAC_IFG_THRSH_10          _SB_MAKE64(12)
  692. #define K_MAC_IFG_THRSH_100         _SB_MAKE64(12)
  693. #define K_MAC_IFG_THRSH_1000        _SB_MAKE64(4)
  694. #define K_MAC_SLOT_SIZE_10          _SB_MAKE64(0)
  695. #define K_MAC_SLOT_SIZE_100         _SB_MAKE64(0)
  696. #define K_MAC_SLOT_SIZE_1000        _SB_MAKE64(0)
  697. #define V_MAC_IFG_RX_10        V_MAC_IFG_RX(K_MAC_IFG_RX_10)
  698. #define V_MAC_IFG_RX_100       V_MAC_IFG_RX(K_MAC_IFG_RX_100)
  699. #define V_MAC_IFG_RX_1000      V_MAC_IFG_RX(K_MAC_IFG_RX_1000)
  700. #define V_MAC_IFG_TX_10        V_MAC_IFG_TX(K_MAC_IFG_TX_10)
  701. #define V_MAC_IFG_TX_100       V_MAC_IFG_TX(K_MAC_IFG_TX_100)
  702. #define V_MAC_IFG_TX_1000      V_MAC_IFG_TX(K_MAC_IFG_TX_1000)
  703. #define V_MAC_IFG_THRSH_10     V_MAC_IFG_THRSH(K_MAC_IFG_THRSH_10)
  704. #define V_MAC_IFG_THRSH_100    V_MAC_IFG_THRSH(K_MAC_IFG_THRSH_100)
  705. #define V_MAC_IFG_THRSH_1000   V_MAC_IFG_THRSH(K_MAC_IFG_THRSH_1000)
  706. #define V_MAC_SLOT_SIZE_10     V_MAC_SLOT_SIZE(K_MAC_SLOT_SIZE_10)
  707. #define V_MAC_SLOT_SIZE_100    V_MAC_SLOT_SIZE(K_MAC_SLOT_SIZE_100)
  708. #define V_MAC_SLOT_SIZE_1000   V_MAC_SLOT_SIZE(K_MAC_SLOT_SIZE_1000)
  709. #define K_MAC_MIN_FRAMESZ_DEFAULT   _SB_MAKE64(64)
  710. #define K_MAC_MAX_FRAMESZ_DEFAULT   _SB_MAKE64(1518)
  711. #define V_MAC_MIN_FRAMESZ_DEFAULT   V_MAC_MIN_FRAMESZ(K_MAC_MIN_FRAMESZ_DEFAULT)
  712. #define V_MAC_MAX_FRAMESZ_DEFAULT   V_MAC_MAX_FRAMESZ(K_MAC_MAX_FRAMESZ_DEFAULT)
  713. /*
  714.  * MAC VLAN Tag Registers (Table 9-16)
  715.  * Register: MAC_VLANTAG_0
  716.  * Register: MAC_VLANTAG_1
  717.  * Register: MAC_VLANTAG_2
  718.  */
  719. /* No bit fields: lower 32 bits of register are the tags */
  720. /*
  721.  * MAC Status Registers (Table 9-17)
  722.  * Also used for the MAC Interrupt Mask Register (Table 9-18)
  723.  * Register: MAC_STATUS_0
  724.  * Register: MAC_STATUS_1
  725.  * Register: MAC_STATUS_2
  726.  * Register: MAC_INT_MASK_0
  727.  * Register: MAC_INT_MASK_1
  728.  * Register: MAC_INT_MASK_2
  729.  */
  730. /* 
  731.  * Use these constants to shift the appropriate channel
  732.  * into the CH0 position so the same tests can be used
  733.  * on each channel.
  734.  */
  735. #define S_MAC_RX_CH0                _SB_MAKE64(0)
  736. #define S_MAC_RX_CH1                _SB_MAKE64(8)
  737. #define S_MAC_TX_CH0                _SB_MAKE64(16)
  738. #define S_MAC_TX_CH1                _SB_MAKE64(24)
  739. #define S_MAC_TXCHANNELS     _SB_MAKE64(16) /* this is 1st TX chan */
  740. #define S_MAC_CHANWIDTH             _SB_MAKE64(8) /* bits between channels */
  741. /*
  742.  *  These are the same as RX channel 0.  The idea here
  743.  *  is that you'll use one of the "S_" things above
  744.  *  and pass just the six bits to a DMA-channel-specific ISR
  745.  */
  746. #define M_MAC_INT_CHANNEL           _SB_MAKEMASK(8,0)
  747. #define M_MAC_INT_EOP_COUNT         _SB_MAKEMASK1(0)
  748. #define M_MAC_INT_EOP_TIMER         _SB_MAKEMASK1(1)
  749. #define M_MAC_INT_EOP_SEEN          _SB_MAKEMASK1(2)
  750. #define M_MAC_INT_HWM               _SB_MAKEMASK1(3)
  751. #define M_MAC_INT_LWM               _SB_MAKEMASK1(4)
  752. #define M_MAC_INT_DSCR              _SB_MAKEMASK1(5)
  753. #define M_MAC_INT_ERR               _SB_MAKEMASK1(6)
  754. #define M_MAC_INT_DZERO             _SB_MAKEMASK1(7) /* only for TX channels */
  755. #define M_MAC_RX_UNDRFL             _SB_MAKEMASK1(40)
  756. #define M_MAC_RX_OVRFL              _SB_MAKEMASK1(41)
  757. #define M_MAC_TX_UNDRFL             _SB_MAKEMASK1(42)
  758. #define M_MAC_TX_OVRFL              _SB_MAKEMASK1(43)
  759. #define M_MAC_LTCOL_ERR             _SB_MAKEMASK1(44)
  760. #define M_MAC_EXCOL_ERR             _SB_MAKEMASK1(45)
  761. #define M_MAC_CNTR_OVRFL_ERR        _SB_MAKEMASK1(46)
  762. #define S_MAC_COUNTER_ADDR          _SB_MAKE64(47)
  763. #define M_MAC_COUNTER_ADDR          _SB_MAKEMASK(5,S_MAC_COUNTER_ADDR)
  764. #define V_MAC_COUNTER_ADDR(x)       _SB_MAKEVALUE(x,S_MAC_COUNTER_ADDR)
  765. #define G_MAC_COUNTER_ADDR(x)       _SB_GETVALUE(x,S_MAC_COUNTER_ADDR,M_MAC_COUNTER_ADDR)
  766. /*
  767.  * MAC Fifo Pointer Registers (Table 9-19)    [Debug register]
  768.  * Register: MAC_FIFO_PTRS_0
  769.  * Register: MAC_FIFO_PTRS_1
  770.  * Register: MAC_FIFO_PTRS_2
  771.  */
  772. #define S_MAC_TX_WRPTR              _SB_MAKE64(0)
  773. #define M_MAC_TX_WRPTR              _SB_MAKEMASK(6,S_MAC_TX_WRPTR)
  774. #define V_MAC_TX_WRPTR(x)           _SB_MAKEVALUE(x,S_MAC_TX_WRPTR)
  775. #define G_MAC_TX_WRPTR(x)           _SB_GETVALUE(x,S_MAC_TX_WRPTR,M_MAC_TX_WRPTR)
  776. #define S_MAC_TX_RDPTR              _SB_MAKE64(8)
  777. #define M_MAC_TX_RDPTR              _SB_MAKEMASK(6,S_MAC_TX_RDPTR)
  778. #define V_MAC_TX_RDPTR(x)           _SB_MAKEVALUE(x,S_MAC_TX_RDPTR)
  779. #define G_MAC_TX_RDPTR(x)           _SB_GETVALUE(x,S_MAC_TX_RDPTR,M_MAC_TX_RDPTR)
  780. #define S_MAC_RX_WRPTR              _SB_MAKE64(16)
  781. #define M_MAC_RX_WRPTR              _SB_MAKEMASK(6,S_MAC_RX_WRPTR)
  782. #define V_MAC_RX_WRPTR(x)           _SB_MAKEVALUE(x,S_MAC_RX_WRPTR)
  783. #define G_MAC_RX_WRPTR(x)           _SB_GETVALUE(x,S_MAC_RX_WRPTR,M_MAC_TX_WRPTR)
  784. #define S_MAC_RX_RDPTR              _SB_MAKE64(24)
  785. #define M_MAC_RX_RDPTR              _SB_MAKEMASK(6,S_MAC_RX_RDPTR)
  786. #define V_MAC_RX_RDPTR(x)           _SB_MAKEVALUE(x,S_MAC_RX_RDPTR)
  787. #define G_MAC_RX_RDPTR(x)           _SB_GETVALUE(x,S_MAC_RX_RDPTR,M_MAC_TX_RDPTR)
  788. /*
  789.  * MAC Fifo End Of Packet Count Registers (Table 9-20)  [Debug register]
  790.  * Register: MAC_EOPCNT_0
  791.  * Register: MAC_EOPCNT_1
  792.  * Register: MAC_EOPCNT_2
  793.  */
  794. #define S_MAC_TX_EOP_COUNTER        _SB_MAKE64(0)
  795. #define M_MAC_TX_EOP_COUNTER        _SB_MAKEMASK(6,S_MAC_TX_EOP_COUNTER)
  796. #define V_MAC_TX_EOP_COUNTER(x)     _SB_MAKEVALUE(x,S_MAC_TX_EOP_COUNTER)
  797. #define G_MAC_TX_EOP_COUNTER(x)     _SB_GETVALUE(x,S_MAC_TX_EOP_COUNTER,M_MAC_TX_EOP_COUNTER)
  798. #define S_MAC_RX_EOP_COUNTER        _SB_MAKE64(8)
  799. #define M_MAC_RX_EOP_COUNTER        _SB_MAKEMASK(6,S_MAC_RX_EOP_COUNTER)
  800. #define V_MAC_RX_EOP_COUNTER(x)     _SB_MAKEVALUE(x,S_MAC_RX_EOP_COUNTER)
  801. #define G_MAC_RX_EOP_COUNTER(x)     _SB_GETVALUE(x,S_MAC_RX_EOP_COUNTER,M_MAC_RX_EOP_COUNTER)
  802. /*
  803.  * MAC Recieve Address Filter Exact Match Registers (Table 9-21)
  804.  * Registers: MAC_ADDR0_0 through MAC_ADDR7_0
  805.  * Registers: MAC_ADDR0_1 through MAC_ADDR7_1
  806.  * Registers: MAC_ADDR0_2 through MAC_ADDR7_2
  807.  */
  808. /* No bitfields */
  809. /*
  810.  * MAC Recieve Address Filter Hash Match Registers (Table 9-22)
  811.  * Registers: MAC_HASH0_0 through MAC_HASH7_0
  812.  * Registers: MAC_HASH0_1 through MAC_HASH7_1
  813.  * Registers: MAC_HASH0_2 through MAC_HASH7_2
  814.  */
  815. /* No bitfields */
  816. /*
  817.  * MAC Transmit Source Address Registers (Table 9-23)
  818.  * Register: MAC_ETHERNET_ADDR_0
  819.  * Register: MAC_ETHERNET_ADDR_1
  820.  * Register: MAC_ETHERNET_ADDR_2
  821.  */
  822. /* No bitfields */
  823. /*
  824.  * MAC Packet Type Configuration Register
  825.  * Register: MAC_TYPE_CFG_0
  826.  * Register: MAC_TYPE_CFG_1
  827.  * Register: MAC_TYPE_CFG_2
  828.  */
  829. #define S_TYPECFG_TYPESIZE      _SB_MAKE64(16)
  830. #define S_TYPECFG_TYPE0 _SB_MAKE64(0)
  831. #define M_TYPECFG_TYPE0         _SB_MAKEMASK(16,S_TYPECFG_TYPE0)
  832. #define V_TYPECFG_TYPE0(x)      _SB_MAKEVALUE(x,S_TYPECFG_TYPE0)
  833. #define G_TYPECFG_TYPE0(x)      _SB_GETVALUE(x,S_TYPECFG_TYPE0,M_TYPECFG_TYPE0)
  834. #define S_TYPECFG_TYPE1 _SB_MAKE64(0)
  835. #define M_TYPECFG_TYPE1         _SB_MAKEMASK(16,S_TYPECFG_TYPE1)
  836. #define V_TYPECFG_TYPE1(x)      _SB_MAKEVALUE(x,S_TYPECFG_TYPE1)
  837. #define G_TYPECFG_TYPE1(x)      _SB_GETVALUE(x,S_TYPECFG_TYPE1,M_TYPECFG_TYPE1)
  838. #define S_TYPECFG_TYPE2 _SB_MAKE64(0)
  839. #define M_TYPECFG_TYPE2         _SB_MAKEMASK(16,S_TYPECFG_TYPE2)
  840. #define V_TYPECFG_TYPE2(x)      _SB_MAKEVALUE(x,S_TYPECFG_TYPE2)
  841. #define G_TYPECFG_TYPE2(x)      _SB_GETVALUE(x,S_TYPECFG_TYPE2,M_TYPECFG_TYPE2)
  842. #define S_TYPECFG_TYPE3 _SB_MAKE64(0)
  843. #define M_TYPECFG_TYPE3         _SB_MAKEMASK(16,S_TYPECFG_TYPE3)
  844. #define V_TYPECFG_TYPE3(x)      _SB_MAKEVALUE(x,S_TYPECFG_TYPE3)
  845. #define G_TYPECFG_TYPE3(x)      _SB_GETVALUE(x,S_TYPECFG_TYPE3,M_TYPECFG_TYPE3)
  846. /*
  847.  * MAC Receive Address Filter Control Registers (Table 9-24)
  848.  * Register: MAC_ADFILTER_CFG_0
  849.  * Register: MAC_ADFILTER_CFG_1
  850.  * Register: MAC_ADFILTER_CFG_2
  851.  */
  852. #define M_MAC_ALLPKT_EN         _SB_MAKEMASK1(0)
  853. #define M_MAC_UCAST_EN          _SB_MAKEMASK1(1)
  854. #define M_MAC_UCAST_INV         _SB_MAKEMASK1(2)
  855. #define M_MAC_MCAST_EN          _SB_MAKEMASK1(3)
  856. #define M_MAC_MCAST_INV         _SB_MAKEMASK1(4)
  857. #define M_MAC_BCAST_EN          _SB_MAKEMASK1(5)
  858. #define M_MAC_DIRECT_INV        _SB_MAKEMASK1(6)
  859. #define S_MAC_IPHDR_OFFSET      _SB_MAKE64(8)
  860. #define M_MAC_IPHDR_OFFSET      _SB_MAKEMASK(8,S_MAC_IPHDR_OFFSET)
  861. #define V_MAC_IPHDR_OFFSET(x) _SB_MAKEVALUE(x,S_MAC_IPHDR_OFFSET)
  862. #define G_MAC_IPHDR_OFFSET(x) _SB_GETVALUE(x,S_MAC_IPHDR_OFFSET,M_MAC_IPHDR_OFFSET)
  863. /*
  864.  * MAC Receive Channel Select Registers (Table 9-25)
  865.  */
  866. /* no bitfields */
  867. /*
  868.  * MAC MII Management Interface Registers (Table 9-26)
  869.  * Register: MAC_MDIO_0
  870.  * Register: MAC_MDIO_1
  871.  * Register: MAC_MDIO_2
  872.  */
  873. #define S_MAC_MDC 0
  874. #define S_MAC_MDIO_DIR 1
  875. #define S_MAC_MDIO_OUT 2
  876. #define S_MAC_GENC 3
  877. #define S_MAC_MDIO_IN 4
  878. #define M_MAC_MDC _SB_MAKEMASK1(S_MAC_MDC)
  879. #define M_MAC_MDIO_DIR _SB_MAKEMASK1(S_MAC_MDIO_DIR)
  880. #define M_MAC_MDIO_DIR_INPUT _SB_MAKEMASK1(S_MAC_MDIO_DIR)
  881. #define M_MAC_MDIO_OUT _SB_MAKEMASK1(S_MAC_MDIO_OUT)
  882. #define M_MAC_GENC _SB_MAKEMASK1(S_MAC_GENC)
  883. #define M_MAC_MDIO_IN _SB_MAKEMASK1(S_MAC_MDIO_IN)
  884. /* ********************************************************************** 
  885.    * DUART Registers
  886.    ********************************************************************** */
  887. /*
  888.  * DUART Mode Register #1 (Table 10-3)
  889.  * Register: DUART_MODE_REG_1_A
  890.  * Register: DUART_MODE_REG_1_B
  891.  */
  892. #define S_DUART_BITS_PER_CHAR       0
  893. #define M_DUART_BITS_PER_CHAR       _SB_MAKEMASK(2,S_DUART_BITS_PER_CHAR)
  894. #define V_DUART_BITS_PER_CHAR(x)    _SB_MAKEVALUE(x,S_DUART_BITS_PER_CHAR)
  895. #define K_DUART_BITS_PER_CHAR_RSV0  0
  896. #define K_DUART_BITS_PER_CHAR_RSV1  1
  897. #define K_DUART_BITS_PER_CHAR_7     2
  898. #define K_DUART_BITS_PER_CHAR_8     3
  899. #define V_DUART_BITS_PER_CHAR_RSV0  V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_RSV0)
  900. #define V_DUART_BITS_PER_CHAR_RSV1  V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_RSV1)
  901. #define V_DUART_BITS_PER_CHAR_7     V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_7)
  902. #define V_DUART_BITS_PER_CHAR_8     V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_8)
  903. #define M_DUART_PARITY_TYPE_EVEN    0x00
  904. #define M_DUART_PARITY_TYPE_ODD     _SB_MAKEMASK1(3)
  905. #define S_DUART_PARITY_MODE          3
  906. #define M_DUART_PARITY_MODE         _SB_MAKEMASK(2,S_DUART_PARITY_MODE)
  907. #define V_DUART_PARITY_MODE(x)      _SB_MAKEVALUE(x,S_DUART_PARITY_MODE)
  908. #define K_DUART_PARITY_MODE_ADD       0
  909. #define K_DUART_PARITY_MODE_ADD_FIXED 1
  910. #define K_DUART_PARITY_MODE_NONE      2
  911. #define V_DUART_PARITY_MODE_ADD       V_DUART_PARITY_MODE(K_DUART_PARITY_MODE_ADD)
  912. #define V_DUART_PARITY_MODE_ADD_FIXED V_DUART_PARITY_MODE(K_DUART_PARITY_MODE_ADD_FIXED)
  913. #define V_DUART_PARITY_MODE_NONE      V_DUART_PARITY_MODE(K_DUART_PARITY_MODE_NONE)
  914. #define M_DUART_ERR_MODE            _SB_MAKEMASK1(5)    /* must be zero */
  915. #define M_DUART_RX_IRQ_SEL_RXRDY    0
  916. #define M_DUART_RX_IRQ_SEL_RXFULL   _SB_MAKEMASK1(6)
  917. #define M_DUART_RX_RTS_ENA          _SB_MAKEMASK1(7)
  918. /*
  919.  * DUART Mode Register #2 (Table 10-4)
  920.  * Register: DUART_MODE_REG_2_A
  921.  * Register: DUART_MODE_REG_2_B
  922.  */
  923. #define M_DUART_MODE_RESERVED1      _SB_MAKEMASK(3,0)   /* ignored */
  924. #define M_DUART_STOP_BIT_LEN_2      _SB_MAKEMASK1(3)
  925. #define M_DUART_STOP_BIT_LEN_1      0
  926. #define M_DUART_TX_CTS_ENA          _SB_MAKEMASK1(4)
  927. #define M_DUART_MODE_RESERVED2      _SB_MAKEMASK1(5)    /* must be zero */
  928. #define S_DUART_CHAN_MODE     6
  929. #define M_DUART_CHAN_MODE           _SB_MAKEMASK(2,S_DUART_CHAN_MODE)
  930. #define V_DUART_CHAN_MODE(x)     _SB_MAKEVALUE(x,S_DUART_CHAN_MODE)
  931. #define K_DUART_CHAN_MODE_NORMAL    0
  932. #define K_DUART_CHAN_MODE_LCL_LOOP  2
  933. #define K_DUART_CHAN_MODE_REM_LOOP  3
  934. #define V_DUART_CHAN_MODE_NORMAL    V_DUART_CHAN_MODE(K_DUART_CHAN_MODE_NORMAL)
  935. #define V_DUART_CHAN_MODE_LCL_LOOP  V_DUART_CHAN_MODE(K_DUART_CHAN_MODE_LCL_LOOP)
  936. #define V_DUART_CHAN_MODE_REM_LOOP  V_DUART_CHAN_MODE(K_DUART_CHAN_MODE_REM_LOOP)
  937. /*
  938.  * DUART Command Register (Table 10-5)
  939.  * Register: DUART_CMD_A
  940.  * Register: DUART_CMD_B
  941.  */
  942. #define M_DUART_RX_EN               _SB_MAKEMASK1(0)
  943. #define M_DUART_RX_DIS              _SB_MAKEMASK1(1)
  944. #define M_DUART_TX_EN               _SB_MAKEMASK1(2)
  945. #define M_DUART_TX_DIS              _SB_MAKEMASK1(3)
  946. #define S_DUART_MISC_CMD     4
  947. #define M_DUART_MISC_CMD            _SB_MAKEMASK(3,S_DUART_MISC_CMD)
  948. #define V_DUART_MISC_CMD(x)         _SB_MAKEVALUE(x,S_DUART_MISC_CMD)
  949. #define K_DUART_MISC_CMD_NOACTION0       0
  950. #define K_DUART_MISC_CMD_NOACTION1       1
  951. #define K_DUART_MISC_CMD_RESET_RX        2
  952. #define K_DUART_MISC_CMD_RESET_TX        3
  953. #define K_DUART_MISC_CMD_NOACTION4       4
  954. #define K_DUART_MISC_CMD_RESET_BREAK_INT 5
  955. #define K_DUART_MISC_CMD_START_BREAK     6
  956. #define K_DUART_MISC_CMD_STOP_BREAK      7
  957. #define V_DUART_MISC_CMD_NOACTION0       V_DUART_MISC_CMD(K_DUART_MISC_CMD_NOACTION0)
  958. #define V_DUART_MISC_CMD_NOACTION1       V_DUART_MISC_CMD(K_DUART_MISC_CMD_NOACTION1)
  959. #define V_DUART_MISC_CMD_RESET_RX        V_DUART_MISC_CMD(K_DUART_MISC_CMD_RESET_RX)
  960. #define V_DUART_MISC_CMD_RESET_TX        V_DUART_MISC_CMD(K_DUART_MISC_CMD_RESET_TX)
  961. #define V_DUART_MISC_CMD_NOACTION4       V_DUART_MISC_CMD(K_DUART_MISC_CMD_NOACTION4)
  962. #define V_DUART_MISC_CMD_RESET_BREAK_INT V_DUART_MISC_CMD(K_DUART_MISC_CMD_RESET_BREAK_INT)
  963. #define V_DUART_MISC_CMD_START_BREAK     V_DUART_MISC_CMD(K_DUART_MISC_CMD_START_BREAK)
  964. #define V_DUART_MISC_CMD_STOP_BREAK      V_DUART_MISC_CMD(K_DUART_MISC_CMD_STOP_BREAK)
  965. #define M_DUART_CMD_RESERVED             _SB_MAKEMASK1(7) 
  966. /*
  967.  * DUART Status Register (Table 10-6)
  968.  * Register: DUART_STATUS_A
  969.  * Register: DUART_STATUS_B
  970.  * READ-ONLY
  971.  */
  972. #define M_DUART_RX_RDY              _SB_MAKEMASK1(0)
  973. #define M_DUART_RX_FFUL             _SB_MAKEMASK1(1)
  974. #define M_DUART_TX_RDY              _SB_MAKEMASK1(2)
  975. #define M_DUART_TX_EMT              _SB_MAKEMASK1(3)
  976. #define M_DUART_OVRUN_ERR           _SB_MAKEMASK1(4)
  977. #define M_DUART_PARITY_ERR          _SB_MAKEMASK1(5)
  978. #define M_DUART_FRM_ERR             _SB_MAKEMASK1(6)
  979. #define M_DUART_RCVD_BRK            _SB_MAKEMASK1(7)
  980. /*
  981.  * DUART Baud Rate Register (Table 10-7)
  982.  * Register: DUART_CLK_SEL_A 
  983.  * Register: DUART_CLK_SEL_B
  984.  */
  985. #define M_DUART_CLK_COUNTER         _SB_MAKEMASK(12,0)
  986. #define V_DUART_BAUD_RATE(x)        (100000000/((x)*20)-1)
  987. /*
  988.  * DUART Data Registers (Table 10-8 and 10-9)
  989.  * Register: DUART_RX_HOLD_A
  990.  * Register: DUART_RX_HOLD_B
  991.  * Register: DUART_TX_HOLD_A
  992.  * Register: DUART_TX_HOLD_B
  993.  */
  994. #define M_DUART_RX_DATA             _SB_MAKEMASK(8,0)
  995. #define M_DUART_TX_DATA             _SB_MAKEMASK(8,0)
  996. /*
  997.  * DUART Input Port Register (Table 10-10)
  998.  * Register: DUART_IN_PORT
  999.  */
  1000. #define M_DUART_IN_PIN0_VAL         _SB_MAKEMASK1(0)
  1001. #define M_DUART_IN_PIN1_VAL         _SB_MAKEMASK1(1)
  1002. #define M_DUART_IN_PIN2_VAL         _SB_MAKEMASK1(2)
  1003. #define M_DUART_IN_PIN3_VAL         _SB_MAKEMASK1(3)
  1004. #define M_DUART_IN_PIN4_VAL         _SB_MAKEMASK1(4)
  1005. #define M_DUART_IN_PIN5_VAL         _SB_MAKEMASK1(5)
  1006. #define M_DUART_RIN0_PIN            _SB_MAKEMASK1(6)
  1007. #define M_DUART_RIN1_PIN            _SB_MAKEMASK1(7)
  1008. /*
  1009.  * DUART Input Port Change Status Register (Tables 10-11, 10-12, and 10-13)
  1010.  * Register: DUART_INPORT_CHNG
  1011.  */
  1012. #define S_DUART_IN_PIN_VAL          0
  1013. #define M_DUART_IN_PIN_VAL          _SB_MAKEMASK(4,S_DUART_IN_PIN_VAL)
  1014. #define S_DUART_IN_PIN_CHNG         4
  1015. #define M_DUART_IN_PIN_CHNG         _SB_MAKEMASK(4,S_DUART_IN_PIN_CHNG)
  1016. /*
  1017.  * DUART Output port control register (Table 10-14)
  1018.  * Register: DUART_OPCR
  1019.  */
  1020. #define M_DUART_OPCR_RESERVED0      _SB_MAKEMASK1(0)   /* must be zero */
  1021. #define M_DUART_OPC2_SEL            _SB_MAKEMASK1(1)
  1022. #define M_DUART_OPCR_RESERVED1      _SB_MAKEMASK1(2)   /* must be zero */
  1023. #define M_DUART_OPC3_SEL            _SB_MAKEMASK1(3)
  1024. #define M_DUART_OPCR_RESERVED2      _SB_MAKEMASK(4,4)  /* must be zero */
  1025. /*
  1026.  * DUART Aux Control Register (Table 10-15)
  1027.  * Register: DUART_AUX_CTRL
  1028.  */
  1029. #define M_DUART_IP0_CHNG_ENA        _SB_MAKEMASK1(0)
  1030. #define M_DUART_IP1_CHNG_ENA        _SB_MAKEMASK1(1)
  1031. #define M_DUART_IP2_CHNG_ENA        _SB_MAKEMASK1(2)
  1032. #define M_DUART_IP3_CHNG_ENA        _SB_MAKEMASK1(3)
  1033. #define M_DUART_ACR_RESERVED        _SB_MAKEMASK(4,4)
  1034. /*
  1035.  * DUART Interrupt Status Register (Table 10-16)
  1036.  * Register: DUART_ISR
  1037.  */
  1038. #define M_DUART_ISR_TX_A            _SB_MAKEMASK1(0)
  1039. #define M_DUART_ISR_RX_A            _SB_MAKEMASK1(1)
  1040. #define M_DUART_ISR_BRK_A           _SB_MAKEMASK1(2)
  1041. #define M_DUART_ISR_IN_A            _SB_MAKEMASK1(3)
  1042. #define M_DUART_ISR_TX_B            _SB_MAKEMASK1(4)
  1043. #define M_DUART_ISR_RX_B            _SB_MAKEMASK1(5)
  1044. #define M_DUART_ISR_BRK_B           _SB_MAKEMASK1(6)
  1045. #define M_DUART_ISR_IN_B            _SB_MAKEMASK1(7)
  1046. /*
  1047.  * DUART Channel A Interrupt Status Register (Table 10-17)
  1048.  * DUART Channel B Interrupt Status Register (Table 10-18)
  1049.  * Register: DUART_ISR_A
  1050.  * Register: DUART_ISR_B
  1051.  */
  1052. #define M_DUART_ISR_TX              _SB_MAKEMASK1(0)
  1053. #define M_DUART_ISR_RX              _SB_MAKEMASK1(1)
  1054. #define M_DUART_ISR_BRK             _SB_MAKEMASK1(2)
  1055. #define M_DUART_ISR_IN              _SB_MAKEMASK1(3)
  1056. #define M_DUART_ISR_RESERVED        _SB_MAKEMASK(4,4)
  1057. /*
  1058.  * DUART Interrupt Mask Register (Table 10-19)
  1059.  * Register: DUART_IMR
  1060.  */
  1061. #define M_DUART_IMR_TX_A            _SB_MAKEMASK1(0)
  1062. #define M_DUART_IMR_RX_A            _SB_MAKEMASK1(1)
  1063. #define M_DUART_IMR_BRK_A           _SB_MAKEMASK1(2)
  1064. #define M_DUART_IMR_IN_A            _SB_MAKEMASK1(3)
  1065. #define M_DUART_IMR_ALL_A     _SB_MAKEMASK(4,4)
  1066. #define M_DUART_IMR_TX_B            _SB_MAKEMASK1(4)
  1067. #define M_DUART_IMR_RX_B            _SB_MAKEMASK1(5)
  1068. #define M_DUART_IMR_BRK_B           _SB_MAKEMASK1(5)
  1069. #define M_DUART_IMR_IN_B            _SB_MAKEMASK1(7)
  1070. #define M_DUART_IMR_ALL_B           _SB_MAKEMASK(4,4)
  1071. /*
  1072.  * DUART Channel A Interrupt Mask Register (Table 10-20)
  1073.  * DUART Channel B Interrupt Mask Register (Table 10-21)
  1074.  * Register: DUART_IMR_A
  1075.  * Register: DUART_IMR_B
  1076.  */
  1077. #define M_DUART_IMR_TX              _SB_MAKEMASK1(0)
  1078. #define M_DUART_IMR_RX              _SB_MAKEMASK1(1)
  1079. #define M_DUART_IMR_BRK             _SB_MAKEMASK1(2)
  1080. #define M_DUART_IMR_IN              _SB_MAKEMASK1(3)
  1081. #define M_DUART_IMR_ALL     _SB_MAKEMASK(4,0)
  1082. #define M_DUART_IMR_RESERVED        _SB_MAKEMASK(4,4)
  1083. /*
  1084.  * DUART Output Port Set Register (Table 10-22)
  1085.  * Register: DUART_SET_OPR
  1086.  */
  1087. #define M_DUART_SET_OPR0            _SB_MAKEMASK1(0)
  1088. #define M_DUART_SET_OPR1            _SB_MAKEMASK1(1)
  1089. #define M_DUART_SET_OPR2            _SB_MAKEMASK1(2)
  1090. #define M_DUART_SET_OPR3            _SB_MAKEMASK1(3)
  1091. #define M_DUART_OPSR_RESERVED       _SB_MAKEMASK(4,4)
  1092. /*
  1093.  * DUART Output Port Clear Register (Table 10-23)
  1094.  * Register: DUART_CLEAR_OPR
  1095.  */
  1096. #define M_DUART_CLR_OPR0            _SB_MAKEMASK1(0)
  1097. #define M_DUART_CLR_OPR1            _SB_MAKEMASK1(1)
  1098. #define M_DUART_CLR_OPR2            _SB_MAKEMASK1(2)
  1099. #define M_DUART_CLR_OPR3            _SB_MAKEMASK1(3)
  1100. #define M_DUART_OPCR_RESERVED       _SB_MAKEMASK(4,4)
  1101. /*
  1102.  * DUART Output Port RTS Register (Table 10-24)
  1103.  * Register: DUART_OUT_PORT
  1104.  */
  1105. #define M_DUART_OUT_PIN_SET0        _SB_MAKEMASK1(0)
  1106. #define M_DUART_OUT_PIN_SET1        _SB_MAKEMASK1(1)
  1107. #define M_DUART_OUT_PIN_CLR0        _SB_MAKEMASK1(2)
  1108. #define M_DUART_OUT_PIN_CLR1        _SB_MAKEMASK1(3)
  1109. #define M_DUART_OPRR_RESERVED       _SB_MAKEMASK(4,4)
  1110. #define M_DUART_OUT_PIN_SET(chan) 
  1111.     (chan == 0 ? M_DUART_OUT_PIN_SET0 : M_DUART_OUT_PIN_SET1)
  1112. #define M_DUART_OUT_PIN_CLR(chan) 
  1113.     (chan == 0 ? M_DUART_OUT_PIN_CLR0 : M_DUART_OUT_PIN_CLR1)
  1114. /*
  1115.  * To be added: Synchronous Serial definitions
  1116.  */
  1117. /* ********************************************************************** 
  1118.    * Generic Bus constants
  1119.    ********************************************************************** */
  1120. /*
  1121.  * Generic Bus Region Configuration Registers (Table 11-4)
  1122.  */
  1123. #define M_IO_RDY_ACTIVE _SB_MAKEMASK1(0)
  1124. #define M_IO_ENA_RDY _SB_MAKEMASK1(1)
  1125. #define S_IO_WIDTH_SEL 2
  1126. #define M_IO_WIDTH_SEL _SB_MAKEMASK(2,S_IO_WIDTH_SEL)
  1127. #define K_IO_WIDTH_SEL_1 0
  1128. #define K_IO_WIDTH_SEL_2 1
  1129. #define K_IO_WIDTH_SEL_4 3
  1130. #define V_IO_WIDTH_SEL(x) _SB_MAKEVALUE(x,S_IO_WIDTH_SEL)
  1131. #define G_IO_WIDTH_SEL(x) _SB_GETVALUE(x,S_IO_WIDTH_SEL,M_IO_WIDTH_SEL)
  1132. #define M_IO_PARITY_ENA _SB_MAKEMASK1(4)
  1133. #define M_IO_PARITY_ODD _SB_MAKEMASK1(6)
  1134. #define M_IO_NONMUX _SB_MAKEMASK1(7)
  1135. #define S_IO_TIMEOUT 8
  1136. #define M_IO_TIMEOUT _SB_MAKEMASK(8,S_IO_TIMEOUT)
  1137. #define V_IO_TIMEOUT(x) _SB_MAKEVALUE(x,S_IO_TIMEOUT)
  1138. #define G_IO_TIMEOUT(x) _SB_GETVALUE(x,S_IO_TIMEOUT,M_IO_TIMEOUT)
  1139. /*
  1140.  * Generic Bus Region Size register (Table 11-5)
  1141.  */
  1142. #define S_IO_MULT_SIZE 0
  1143. #define M_IO_MULT_SIZE _SB_MAKEMASK(12,S_IO_MULT_SIZE)
  1144. #define V_IO_MULT_SIZE(x) _SB_MAKEVALUE(x,S_IO_MULT_SIZE)
  1145. #define G_IO_MULT_SIZE(x) _SB_GETVALUE(x,S_IO_MULT_SIZE,M_IO_MULT_SIZE)
  1146. #define S_IO_REGSIZE 16  /* # bits to shift size for this reg */
  1147. /*
  1148.  * Generic Bus Region Address (Table 11-6)
  1149.  */
  1150. #define S_IO_START_ADDR 0
  1151. #define M_IO_START_ADDR _SB_MAKEMASK(14,S_IO_START_ADDR)
  1152. #define V_IO_START_ADDR(x) _SB_MAKEVALUE(x,S_IO_START_ADDR)
  1153. #define G_IO_START_ADDR(x) _SB_GETVALUE(x,S_IO_START_ADDR,M_IO_START_ADDR)
  1154. #define S_IO_ADDRBASE 16  /* # bits to shift addr for this reg */
  1155. /*
  1156.  * Generic Bus Region 0 Timing Registers (Table 11-7)
  1157.  */
  1158. #define S_IO_ALE_WIDTH 0
  1159. #define M_IO_ALE_WIDTH _SB_MAKEMASK(3,S_IO_ALE_WIDTH)
  1160. #define V_IO_ALE_WIDTH(x) _SB_MAKEVALUE(x,S_IO_ALE_WIDTH)
  1161. #define G_IO_ALE_WIDTH(x) _SB_GETVALUE(x,S_IO_ALE_WIDTH,M_IO_ALE_WIDTH)
  1162. #define S_IO_ALE_TO_CS 4
  1163. #define M_IO_ALE_TO_CS _SB_MAKEMASK(2,S_IO_ALE_TO_CS)
  1164. #define V_IO_ALE_TO_CS(x) _SB_MAKEVALUE(x,S_IO_ALE_TO_CS)
  1165. #define G_IO_ALE_TO_CS(x) _SB_GETVALUE(x,S_IO_ALE_TO_CS,M_IO_ALE_TO_CS)
  1166. #define S_IO_CS_WIDTH 8
  1167. #define M_IO_CS_WIDTH _SB_MAKEMASK(5,S_IO_CS_WIDTH)
  1168. #define V_IO_CS_WIDTH(x) _SB_MAKEVALUE(x,S_IO_CS_WIDTH)
  1169. #define G_IO_CS_WIDTH(x) _SB_GETVALUE(x,S_IO_CS_WIDTH,M_IO_CS_WIDTH)
  1170. #define S_IO_RDY_SMPLE 13
  1171. #define M_IO_RDY_SMPLE _SB_MAKEMASK(3,S_IO_RDY_SMPLE)
  1172. #define V_IO_RDY_SMPLE(x) _SB_MAKEVALUE(x,S_IO_RDY_SMPLE)
  1173. #define G_IO_RDY_SMPLE(x) _SB_GETVALUE(x,S_IO_RDY_SMPLE,M_IO_RDY_SMPLE)
  1174. /*
  1175.  * Generic Bus Timing 1 Registers (Table 11-8)
  1176.  */
  1177. #define S_IO_ALE_TO_WRITE 0
  1178. #define M_IO_ALE_TO_WRITE _SB_MAKEMASK(3,S_IO_ALE_TO_WRITE)
  1179. #define V_IO_ALE_TO_WRITE(x) _SB_MAKEVALUE(x,S_IO_ALE_TO_WRITE)
  1180. #define G_IO_ALE_TO_WRITE(x) _SB_GETVALUE(x,S_IO_ALE_TO_WRITE,M_IO_ALE_TO_WRITE)
  1181. #define S_IO_WRITE_WIDTH 4
  1182. #define M_IO_WRITE_WIDTH _SB_MAKEMASK(4,S_IO_WRITE_WIDTH)
  1183. #define V_IO_WRITE_WIDTH(x) _SB_MAKEVALUE(x,S_IO_WRITE_WIDTH)
  1184. #define G_IO_WRITE_WIDTH(x) _SB_GETVALUE(x,S_IO_WRITE_WIDTH,M_IO_WRITE_WIDTH)
  1185. #define S_IO_IDLE_CYCLE 8
  1186. #define M_IO_IDLE_CYCLE _SB_MAKEMASK(4,S_IO_IDLE_CYCLE)
  1187. #define V_IO_IDLE_CYCLE(x) _SB_MAKEVALUE(x,S_IO_IDLE_CYCLE)
  1188. #define G_IO_IDLE_CYCLE(x) _SB_GETVALUE(x,S_IO_IDLE_CYCLE,M_IO_IDLE_CYCLE)
  1189. #define S_IO_CS_TO_OE 12
  1190. #define M_IO_CS_TO_OE _SB_MAKEMASK(2,S_IO_CS_TO_OE)
  1191. #define V_IO_CS_TO_OE(x) _SB_MAKEVALUE(x,S_IO_CS_TO_OE)
  1192. #define G_IO_CS_TO_OE(x) _SB_GETVALUE(x,S_IO_CS_TO_OE,M_IO_CS_TO_OE)
  1193. #define S_IO_OE_TO_CS 14
  1194. #define M_IO_OE_TO_CS _SB_MAKEMASK(2,S_IO_OE_TO_CS)
  1195. #define V_IO_OE_TO_CS(x) _SB_MAKEVALUE(x,S_IO_OE_TO_CS)
  1196. #define G_IO_OE_TO_CS(x) _SB_GETVALUE(x,S_IO_OE_TO_CS,M_IO_OE_TO_CS)
  1197. /*
  1198.  * Generic Bus Interrupt Status Register (Table 11-9)
  1199.  */
  1200. #define M_IO_CS_ERR_INT _SB_MAKEMASK(0,8)
  1201. #define M_IO_CS0_ERR_INT _SB_MAKEMASK1(0)
  1202. #define M_IO_CS1_ERR_INT _SB_MAKEMASK1(1)
  1203. #define M_IO_CS2_ERR_INT _SB_MAKEMASK1(2)
  1204. #define M_IO_CS3_ERR_INT _SB_MAKEMASK1(3)
  1205. #define M_IO_CS4_ERR_INT _SB_MAKEMASK1(4)
  1206. #define M_IO_CS5_ERR_INT _SB_MAKEMASK1(5)
  1207. #define M_IO_CS6_ERR_INT _SB_MAKEMASK1(6)
  1208. #define M_IO_CS7_ERR_INT _SB_MAKEMASK1(7)
  1209. #define M_IO_RD_PAR_INT _SB_MAKEMASK1(9)
  1210. #define M_IO_TIMEOUT_INT _SB_MAKEMASK1(10)
  1211. #define M_IO_ILL_ADDR_INT _SB_MAKEMASK1(11)
  1212. #define M_IO_MULT_CS_INT _SB_MAKEMASK1(12)
  1213. /*
  1214.  * PCMCIA configuration register (Table 12-6)
  1215.  */
  1216. #define M_PCMCIA_CFG_ATTRMEM _SB_MAKEMASK1(0)
  1217. #define M_PCMCIA_CFG_3VEN _SB_MAKEMASK1(1)
  1218. #define M_PCMCIA_CFG_5VEN _SB_MAKEMASK1(2)
  1219. #define M_PCMCIA_CFG_VPPEN _SB_MAKEMASK1(3)
  1220. #define M_PCMCIA_CFG_RESET _SB_MAKEMASK1(4)
  1221. #define M_PCMCIA_CFG_APWRONEN _SB_MAKEMASK1(5)
  1222. #define M_PCMCIA_CFG_CDMASK _SB_MAKEMASK1(6)
  1223. #define M_PCMCIA_CFG_WPMASK _SB_MAKEMASK1(7)
  1224. #define M_PCMCIA_CFG_RDYMASK _SB_MAKEMASK1(8)
  1225. #define M_PCMCIA_CFG_PWRCTL _SB_MAKEMASK1(9)
  1226. /*
  1227.  * PCMCIA status register (Table 12-7)
  1228.  */
  1229. #define M_PCMCIA_STATUS_CD1 _SB_MAKEMASK1(0)
  1230. #define M_PCMCIA_STATUS_CD2 _SB_MAKEMASK1(1)
  1231. #define M_PCMCIA_STATUS_VS1 _SB_MAKEMASK1(2)
  1232. #define M_PCMCIA_STATUS_VS2 _SB_MAKEMASK1(3)
  1233. #define M_PCMCIA_STATUS_WP _SB_MAKEMASK1(4)
  1234. #define M_PCMCIA_STATUS_RDY _SB_MAKEMASK1(5)
  1235. #define M_PCMCIA_STATUS_3VEN _SB_MAKEMASK1(6)
  1236. #define M_PCMCIA_STATUS_5VEN _SB_MAKEMASK1(7)
  1237. #define M_PCMCIA_STATUS_CDCHG _SB_MAKEMASK1(8)
  1238. #define M_PCMCIA_STATUS_WPCHG _SB_MAKEMASK1(9)
  1239. #define M_PCMCIA_STATUS_RDYCHG _SB_MAKEMASK1(10)
  1240. /*
  1241.  * GPIO Interrupt Type Register (table 13-3)
  1242.  */
  1243. #define K_GPIO_INTR_DISABLE 0
  1244. #define K_GPIO_INTR_EDGE 1
  1245. #define K_GPIO_INTR_LEVEL 2
  1246. #define K_GPIO_INTR_SPLIT 3
  1247. #define S_GPIO_INTR_TYPEX(n) (((n)/2)*2)
  1248. #define M_GPIO_INTR_TYPEX(n) _SB_MAKEMASK(2,S_GPIO_INTR_TYPEX(n))
  1249. #define V_GPIO_INTR_TYPEX(n,x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPEX(n))
  1250. #define G_GPIO_INTR_TYPEX(n,x) _SB_GETVALUE(x,S_GPIO_INTR_TYPEX(n),M_GPIO_INTR_TYPEX(n))
  1251. #define S_GPIO_INTR_TYPE0 0
  1252. #define M_GPIO_INTR_TYPE0 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE0)
  1253. #define V_GPIO_INTR_TYPE0(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE0)
  1254. #define G_GPIO_INTR_TYPE0(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE0,M_GPIO_INTR_TYPE0)
  1255. #define S_GPIO_INTR_TYPE2 2
  1256. #define M_GPIO_INTR_TYPE2 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE2)
  1257. #define V_GPIO_INTR_TYPE2(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE2)
  1258. #define G_GPIO_INTR_TYPE2(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE2,M_GPIO_INTR_TYPE2)
  1259. #define S_GPIO_INTR_TYPE4 4
  1260. #define M_GPIO_INTR_TYPE4 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE4)
  1261. #define V_GPIO_INTR_TYPE4(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE4)
  1262. #define G_GPIO_INTR_TYPE4(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE4,M_GPIO_INTR_TYPE4)
  1263. #define S_GPIO_INTR_TYPE6 6
  1264. #define M_GPIO_INTR_TYPE6 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE6)
  1265. #define V_GPIO_INTR_TYPE6(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE6)
  1266. #define G_GPIO_INTR_TYPE6(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE6,M_GPIO_INTR_TYPE6)
  1267. #define S_GPIO_INTR_TYPE8 8
  1268. #define M_GPIO_INTR_TYPE8 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE8)
  1269. #define V_GPIO_INTR_TYPE8(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE8)
  1270. #define G_GPIO_INTR_TYPE8(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE8,M_GPIO_INTR_TYPE8)
  1271. #define S_GPIO_INTR_TYPE10 10
  1272. #define M_GPIO_INTR_TYPE10 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE10)
  1273. #define V_GPIO_INTR_TYPE10(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE10)
  1274. #define G_GPIO_INTR_TYPE10(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE10,M_GPIO_INTR_TYPE10)
  1275. #define S_GPIO_INTR_TYPE12 12
  1276. #define M_GPIO_INTR_TYPE12 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE12)
  1277. #define V_GPIO_INTR_TYPE12(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE12)
  1278. #define G_GPIO_INTR_TYPE12(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE12,M_GPIO_INTR_TYPE12)
  1279. #define S_GPIO_INTR_TYPE14 14
  1280. #define M_GPIO_INTR_TYPE14 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE14)
  1281. #define V_GPIO_INTR_TYPE14(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE14)
  1282. #define G_GPIO_INTR_TYPE14(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE14,M_GPIO_INTR_TYPE14)
  1283. /* ********************************************************************** 
  1284.    * System Management Bus constants
  1285.    ********************************************************************** */
  1286. /*
  1287.  * SMBus Clock Frequency Register (Table 14-2)
  1288.  */
  1289. #define S_SMB_FREQ_DIV              0
  1290. #define M_SMB_FREQ_DIV              _SB_MAKEMASK(13,S_SMB_FREQ_DIV)
  1291. #define V_SMB_FREQ_DIV(x)           _SB_MAKEVALUE(x,S_SMB_FREQ_DIV)
  1292. #define K_SMB_FREQ_400KHZ     0x1F
  1293. #define K_SMB_FREQ_100KHZ     0x7D
  1294. #define S_SMB_CMD                   0
  1295. #define M_SMB_CMD                   _SB_MAKEMASK(8,S_SMB_CMD)
  1296. #define V_SMB_CMD(x)                _SB_MAKEVALUE(x,S_SMB_CMD)
  1297. /*
  1298.  * SMBus control register (Table 14-4)
  1299.  */
  1300. #define M_SMB_ERR_INTR              _SB_MAKEMASK1(0)
  1301. #define M_SMB_FINISH_INTR           _SB_MAKEMASK1(1)
  1302. #define M_SMB_DATA_OUT              _SB_MAKEMASK1(4)
  1303. #define M_SMB_DATA_DIR              _SB_MAKEMASK1(5)
  1304. #define M_SMB_DATA_DIR_OUTPUT       M_SMB_DATA_DIR
  1305. #define M_SMB_CLK_OUT               _SB_MAKEMASK1(6)
  1306. #define M_SMB_DIRECT_ENABLE         _SB_MAKEMASK1(7)
  1307. /*
  1308.  * SMBus status registers (Table 14-5)
  1309.  */
  1310. #define M_SMB_BUSY                  _SB_MAKEMASK1(0)
  1311. #define M_SMB_ERROR                 _SB_MAKEMASK1(1)
  1312. #define M_SMB_ERROR_TYPE            _SB_MAKEMASK1(2)
  1313. #define M_SMB_REF                   _SB_MAKEMASK1(6)
  1314. #define M_SMB_DATA_IN               _SB_MAKEMASK1(7)
  1315. /*
  1316.  * SMBus Start/Command registers (Table 14-9)
  1317.  */
  1318. #define S_SMB_ADDR                  0
  1319. #define M_SMB_ADDR                  _SB_MAKEMASK(7,S_SMB_ADDR)
  1320. #define V_SMB_ADDR(x)               _SB_MAKEVALUE(x,S_SMB_ADDR)
  1321. #define G_SMB_ADDR(x)               _SB_GETVALUE(x,S_SMB_ADDR,M_SMB_ADDR)
  1322. #define M_SMB_QDATA                 _SB_MAKEMASK1(7)
  1323. #define S_SMB_TT                    8
  1324. #define M_SMB_TT                    _SB_MAKEMASK(3,S_SMB_TT)
  1325. #define V_SMB_TT(x)                 _SB_MAKEVALUE(x,S_SMB_TT)
  1326. #define G_SMB_TT(x)                 _SB_GETVALUE(x,S_SMB_TT,M_SMB_TT)
  1327. #define K_SMB_TT_WR1BYTE            0
  1328. #define K_SMB_TT_WR2BYTE            1
  1329. #define K_SMB_TT_WR3BYTE            2
  1330. #define K_SMB_TT_CMD_RD1BYTE        3
  1331. #define K_SMB_TT_CMD_RD2BYTE        4
  1332. #define K_SMB_TT_RD1BYTE            5
  1333. #define K_SMB_TT_QUICKCMD           6
  1334. #define K_SMB_TT_EEPROMREAD         7
  1335. #define V_SMB_TT_WR1BYTE     V_SMB_TT(K_SMB_TT_WR1BYTE)
  1336. #define V_SMB_TT_WR2BYTE     V_SMB_TT(K_SMB_TT_WR2BYTE)
  1337. #define V_SMB_TT_WR3BYTE     V_SMB_TT(K_SMB_TT_WR3BYTE)
  1338. #define V_SMB_TT_CMD_RD1BYTE     V_SMB_TT(K_SMB_TT_CMD_RD1BYTE)
  1339. #define V_SMB_TT_CMD_RD2BYTE     V_SMB_TT(K_SMB_TT_CMD_RD2BYTE)
  1340. #define V_SMB_TT_RD1BYTE     V_SMB_TT(K_SMB_TT_RD1BYTE)
  1341. #define V_SMB_TT_QUICKCMD     V_SMB_TT(K_SMB_TT_QUICKCMD)
  1342. #define V_SMB_TT_EEPROMREAD     V_SMB_TT(K_SMB_TT_EEPROMREAD)
  1343. #define M_SMB_PEC                   _SB_MAKEMASK1(15)
  1344. /*
  1345.  * SMBus Data Register (Table 14-6) and SMBus Extra Register (Table 14-7)
  1346.  */
  1347. #define S_SMB_LB                    0
  1348. #define M_SMB_LB                    _SB_MAKEMASK(8,S_SMB_LB)
  1349. #define V_SMB_LB(x)                 _SB_MAKEVALUE(x,S_SMB_LB)
  1350. #define S_SMB_MB                    8
  1351. #define M_SMB_MB                    _SB_MAKEMASK(8,S_SMB_MB)
  1352. #define V_SMB_MB(x)                 _SB_MAKEVALUE(x,S_SMB_MB)
  1353. /*
  1354.  * SMBus Packet Error Check register (Table 14-8)
  1355.  */
  1356. #define S_SPEC_PEC                  0
  1357. #define M_SPEC_PEC                  _SB_MAKEMASK(8,S_SPEC_PEC)
  1358. #define V_SPEC_MB(x)                _SB_MAKEVALUE(x,S_SPEC_PEC)
  1359. #ifndef _ASMLANGUAGE
  1360. #if (CPU==MIPS64)
  1361. #define MIPS3_SD(addr, value) 
  1362.     (* (volatile unsigned long long *) (addr) = (value))
  1363. #define MIPS3_LD(addr)      (*(volatile unsigned long long *) (addr))
  1364. #else /* (CPU==MIPS64) */
  1365. void mips3_sd( volatile unsigned long long *, unsigned long long );
  1366. unsigned long long mips3_ld( volatile unsigned long long * );
  1367. #define MIPS3_SD(addr, value) 
  1368.     mips3_sd((volatile unsigned long long *) (addr), (value))
  1369. #define MIPS3_LD(addr)      mips3_ld((volatile unsigned long long *) (addr))
  1370. #endif /* (CPU==MIPS64) */
  1371. #endif /* _ASMLANGUAGE */
  1372. #ifdef __cplusplus
  1373. }
  1374. #endif
  1375. #endif /* __INCbcm1250Libh */