sb1250_dma.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. /* *********************************************************************
  2. * SB1250 Board Support Package
  3. *
  4. * DMA definitions File: sb1250_dma.h
  5. *
  6. * This module contains constants and macros useful for
  7. * programming the SB1250's DMA controllers, both the data mover
  8. * and the Ethernet DMA.
  9. *
  10. * SB1250 specification level: User's manual 10/21/02
  11. * BCM1280 specification level: User's manual 11/24/03
  12. *
  13. *********************************************************************
  14. *
  15. * Copyright 2000,2001,2002,2003
  16. * Broadcom Corporation. All rights reserved.
  17. *
  18. * This program is free software; you can redistribute it and/or
  19. * modify it under the terms of the GNU General Public License as
  20. * published by the Free Software Foundation; either version 2 of
  21. * the License, or (at your option) any later version.
  22. *
  23. * This program is distributed in the hope that it will be useful,
  24. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  25. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  26. * GNU General Public License for more details.
  27. *
  28. * You should have received a copy of the GNU General Public License
  29. * along with this program; if not, write to the Free Software
  30. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  31. * MA 02111-1307 USA
  32. ********************************************************************* */
  33. #ifndef _SB1250_DMA_H
  34. #define _SB1250_DMA_H
  35. #include <asm/sibyte/sb1250_defs.h>
  36. /* *********************************************************************
  37. * DMA Registers
  38. ********************************************************************* */
  39. /*
  40. * Ethernet and Serial DMA Configuration Register 0 (Table 7-4)
  41. * Registers: DMA_CONFIG0_MAC_x_RX_CH_0
  42. * Registers: DMA_CONFIG0_MAC_x_TX_CH_0
  43. * Registers: DMA_CONFIG0_SER_x_RX
  44. * Registers: DMA_CONFIG0_SER_x_TX
  45. */
  46. #define M_DMA_DROP _SB_MAKEMASK1(0)
  47. #define M_DMA_CHAIN_SEL _SB_MAKEMASK1(1)
  48. #define M_DMA_RESERVED1 _SB_MAKEMASK1(2)
  49. #define S_DMA_DESC_TYPE _SB_MAKE64(1)
  50. #define M_DMA_DESC_TYPE _SB_MAKEMASK(2, S_DMA_DESC_TYPE)
  51. #define V_DMA_DESC_TYPE(x) _SB_MAKEVALUE(x, S_DMA_DESC_TYPE)
  52. #define G_DMA_DESC_TYPE(x) _SB_GETVALUE(x, S_DMA_DESC_TYPE, M_DMA_DESC_TYPE)
  53. #define K_DMA_DESC_TYPE_RING_AL 0
  54. #define K_DMA_DESC_TYPE_CHAIN_AL 1
  55. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  56. #define K_DMA_DESC_TYPE_RING_UAL_WI 2
  57. #define K_DMA_DESC_TYPE_RING_UAL_RMW 3
  58. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  59. #define M_DMA_EOP_INT_EN _SB_MAKEMASK1(3)
  60. #define M_DMA_HWM_INT_EN _SB_MAKEMASK1(4)
  61. #define M_DMA_LWM_INT_EN _SB_MAKEMASK1(5)
  62. #define M_DMA_TBX_EN _SB_MAKEMASK1(6)
  63. #define M_DMA_TDX_EN _SB_MAKEMASK1(7)
  64. #define S_DMA_INT_PKTCNT _SB_MAKE64(8)
  65. #define M_DMA_INT_PKTCNT _SB_MAKEMASK(8, S_DMA_INT_PKTCNT)
  66. #define V_DMA_INT_PKTCNT(x) _SB_MAKEVALUE(x, S_DMA_INT_PKTCNT)
  67. #define G_DMA_INT_PKTCNT(x) _SB_GETVALUE(x, S_DMA_INT_PKTCNT, M_DMA_INT_PKTCNT)
  68. #define S_DMA_RINGSZ _SB_MAKE64(16)
  69. #define M_DMA_RINGSZ _SB_MAKEMASK(16, S_DMA_RINGSZ)
  70. #define V_DMA_RINGSZ(x) _SB_MAKEVALUE(x, S_DMA_RINGSZ)
  71. #define G_DMA_RINGSZ(x) _SB_GETVALUE(x, S_DMA_RINGSZ, M_DMA_RINGSZ)
  72. #define S_DMA_HIGH_WATERMARK _SB_MAKE64(32)
  73. #define M_DMA_HIGH_WATERMARK _SB_MAKEMASK(16, S_DMA_HIGH_WATERMARK)
  74. #define V_DMA_HIGH_WATERMARK(x) _SB_MAKEVALUE(x, S_DMA_HIGH_WATERMARK)
  75. #define G_DMA_HIGH_WATERMARK(x) _SB_GETVALUE(x, S_DMA_HIGH_WATERMARK, M_DMA_HIGH_WATERMARK)
  76. #define S_DMA_LOW_WATERMARK _SB_MAKE64(48)
  77. #define M_DMA_LOW_WATERMARK _SB_MAKEMASK(16, S_DMA_LOW_WATERMARK)
  78. #define V_DMA_LOW_WATERMARK(x) _SB_MAKEVALUE(x, S_DMA_LOW_WATERMARK)
  79. #define G_DMA_LOW_WATERMARK(x) _SB_GETVALUE(x, S_DMA_LOW_WATERMARK, M_DMA_LOW_WATERMARK)
  80. /*
  81. * Ethernet and Serial DMA Configuration Register 1 (Table 7-5)
  82. * Registers: DMA_CONFIG1_MAC_x_RX_CH_0
  83. * Registers: DMA_CONFIG1_DMA_x_TX_CH_0
  84. * Registers: DMA_CONFIG1_SER_x_RX
  85. * Registers: DMA_CONFIG1_SER_x_TX
  86. */
  87. #define M_DMA_HDR_CF_EN _SB_MAKEMASK1(0)
  88. #define M_DMA_ASIC_XFR_EN _SB_MAKEMASK1(1)
  89. #define M_DMA_PRE_ADDR_EN _SB_MAKEMASK1(2)
  90. #define M_DMA_FLOW_CTL_EN _SB_MAKEMASK1(3)
  91. #define M_DMA_NO_DSCR_UPDT _SB_MAKEMASK1(4)
  92. #define M_DMA_L2CA _SB_MAKEMASK1(5)
  93. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  94. #define M_DMA_RX_XTRA_STATUS _SB_MAKEMASK1(6)
  95. #define M_DMA_TX_CPU_PAUSE _SB_MAKEMASK1(6)
  96. #define M_DMA_TX_FC_PAUSE_EN _SB_MAKEMASK1(7)
  97. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  98. #define M_DMA_MBZ1 _SB_MAKEMASK(6, 15)
  99. #define S_DMA_HDR_SIZE _SB_MAKE64(21)
  100. #define M_DMA_HDR_SIZE _SB_MAKEMASK(9, S_DMA_HDR_SIZE)
  101. #define V_DMA_HDR_SIZE(x) _SB_MAKEVALUE(x, S_DMA_HDR_SIZE)
  102. #define G_DMA_HDR_SIZE(x) _SB_GETVALUE(x, S_DMA_HDR_SIZE, M_DMA_HDR_SIZE)
  103. #define M_DMA_MBZ2 _SB_MAKEMASK(5, 32)
  104. #define S_DMA_ASICXFR_SIZE _SB_MAKE64(37)
  105. #define M_DMA_ASICXFR_SIZE _SB_MAKEMASK(9, S_DMA_ASICXFR_SIZE)
  106. #define V_DMA_ASICXFR_SIZE(x) _SB_MAKEVALUE(x, S_DMA_ASICXFR_SIZE)
  107. #define G_DMA_ASICXFR_SIZE(x) _SB_GETVALUE(x, S_DMA_ASICXFR_SIZE, M_DMA_ASICXFR_SIZE)
  108. #define S_DMA_INT_TIMEOUT _SB_MAKE64(48)
  109. #define M_DMA_INT_TIMEOUT _SB_MAKEMASK(16, S_DMA_INT_TIMEOUT)
  110. #define V_DMA_INT_TIMEOUT(x) _SB_MAKEVALUE(x, S_DMA_INT_TIMEOUT)
  111. #define G_DMA_INT_TIMEOUT(x) _SB_GETVALUE(x, S_DMA_INT_TIMEOUT, M_DMA_INT_TIMEOUT)
  112. /*
  113. * Ethernet and Serial DMA Descriptor base address (Table 7-6)
  114. */
  115. #define M_DMA_DSCRBASE_MBZ _SB_MAKEMASK(4, 0)
  116. /*
  117. * ASIC Mode Base Address (Table 7-7)
  118. */
  119. #define M_DMA_ASIC_BASE_MBZ _SB_MAKEMASK(20, 0)
  120. /*
  121. * DMA Descriptor Count Registers (Table 7-8)
  122. */
  123. /* No bitfields */
  124. /*
  125. * Current Descriptor Address Register (Table 7-11)
  126. */
  127. #define S_DMA_CURDSCR_ADDR _SB_MAKE64(0)
  128. #define M_DMA_CURDSCR_ADDR _SB_MAKEMASK(40, S_DMA_CURDSCR_ADDR)
  129. #define S_DMA_CURDSCR_COUNT _SB_MAKE64(40)
  130. #define M_DMA_CURDSCR_COUNT _SB_MAKEMASK(16, S_DMA_CURDSCR_COUNT)
  131. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  132. #define M_DMA_TX_CH_PAUSE_ON _SB_MAKEMASK1(56)
  133. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  134. /*
  135. * Receive Packet Drop Registers
  136. */
  137. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  138. #define S_DMA_OODLOST_RX _SB_MAKE64(0)
  139. #define M_DMA_OODLOST_RX _SB_MAKEMASK(16, S_DMA_OODLOST_RX)
  140. #define G_DMA_OODLOST_RX(x) _SB_GETVALUE(x, S_DMA_OODLOST_RX, M_DMA_OODLOST_RX)
  141. #define S_DMA_EOP_COUNT_RX _SB_MAKE64(16)
  142. #define M_DMA_EOP_COUNT_RX _SB_MAKEMASK(8, S_DMA_EOP_COUNT_RX)
  143. #define G_DMA_EOP_COUNT_RX(x) _SB_GETVALUE(x, S_DMA_EOP_COUNT_RX, M_DMA_EOP_COUNT_RX)
  144. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  145. /* *********************************************************************
  146. * DMA Descriptors
  147. ********************************************************************* */
  148. /*
  149. * Descriptor doubleword "A" (Table 7-12)
  150. */
  151. #define S_DMA_DSCRA_OFFSET _SB_MAKE64(0)
  152. #define M_DMA_DSCRA_OFFSET _SB_MAKEMASK(5, S_DMA_DSCRA_OFFSET)
  153. #define V_DMA_DSCRA_OFFSET(x) _SB_MAKEVALUE(x, S_DMA_DSCRA_OFFSET)
  154. #define G_DMA_DSCRA_OFFSET(x) _SB_GETVALUE(x, S_DMA_DSCRA_OFFSET, M_DMA_DSCRA_OFFSET)
  155. /* Note: Don't shift the address over, just mask it with the mask below */
  156. #define S_DMA_DSCRA_A_ADDR _SB_MAKE64(5)
  157. #define M_DMA_DSCRA_A_ADDR _SB_MAKEMASK(35, S_DMA_DSCRA_A_ADDR)
  158. #define M_DMA_DSCRA_A_ADDR_OFFSET (M_DMA_DSCRA_OFFSET | M_DMA_DSCRA_A_ADDR)
  159. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  160. #define S_DMA_DSCRA_A_ADDR_UA _SB_MAKE64(0)
  161. #define M_DMA_DSCRA_A_ADDR_UA _SB_MAKEMASK(40, S_DMA_DSCRA_A_ADDR_UA)
  162. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  163. #define S_DMA_DSCRA_A_SIZE _SB_MAKE64(40)
  164. #define M_DMA_DSCRA_A_SIZE _SB_MAKEMASK(9, S_DMA_DSCRA_A_SIZE)
  165. #define V_DMA_DSCRA_A_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRA_A_SIZE)
  166. #define G_DMA_DSCRA_A_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRA_A_SIZE, M_DMA_DSCRA_A_SIZE)
  167. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  168. #define S_DMA_DSCRA_DSCR_CNT _SB_MAKE64(40)
  169. #define M_DMA_DSCRA_DSCR_CNT _SB_MAKEMASK(8, S_DMA_DSCRA_DSCR_CNT)
  170. #define G_DMA_DSCRA_DSCR_CNT(x) _SB_GETVALUE(x, S_DMA_DSCRA_DSCR_CNT, M_DMA_DSCRA_DSCR_CNT)
  171. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  172. #define M_DMA_DSCRA_INTERRUPT _SB_MAKEMASK1(49)
  173. #define M_DMA_DSCRA_OFFSETB _SB_MAKEMASK1(50)
  174. #define S_DMA_DSCRA_STATUS _SB_MAKE64(51)
  175. #define M_DMA_DSCRA_STATUS _SB_MAKEMASK(13, S_DMA_DSCRA_STATUS)
  176. #define V_DMA_DSCRA_STATUS(x) _SB_MAKEVALUE(x, S_DMA_DSCRA_STATUS)
  177. #define G_DMA_DSCRA_STATUS(x) _SB_GETVALUE(x, S_DMA_DSCRA_STATUS, M_DMA_DSCRA_STATUS)
  178. /*
  179. * Descriptor doubleword "B" (Table 7-13)
  180. */
  181. #define S_DMA_DSCRB_OPTIONS _SB_MAKE64(0)
  182. #define M_DMA_DSCRB_OPTIONS _SB_MAKEMASK(4, S_DMA_DSCRB_OPTIONS)
  183. #define V_DMA_DSCRB_OPTIONS(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_OPTIONS)
  184. #define G_DMA_DSCRB_OPTIONS(x) _SB_GETVALUE(x, S_DMA_DSCRB_OPTIONS, M_DMA_DSCRB_OPTIONS)
  185. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  186. #define S_DMA_DSCRB_A_SIZE _SB_MAKE64(8)
  187. #define M_DMA_DSCRB_A_SIZE _SB_MAKEMASK(14, S_DMA_DSCRB_A_SIZE)
  188. #define V_DMA_DSCRB_A_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_A_SIZE)
  189. #define G_DMA_DSCRB_A_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRB_A_SIZE, M_DMA_DSCRB_A_SIZE)
  190. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  191. #define R_DMA_DSCRB_ADDR _SB_MAKE64(0x10)
  192. /* Note: Don't shift the address over, just mask it with the mask below */
  193. #define S_DMA_DSCRB_B_ADDR _SB_MAKE64(5)
  194. #define M_DMA_DSCRB_B_ADDR _SB_MAKEMASK(35, S_DMA_DSCRB_B_ADDR)
  195. #define S_DMA_DSCRB_B_SIZE _SB_MAKE64(40)
  196. #define M_DMA_DSCRB_B_SIZE _SB_MAKEMASK(9, S_DMA_DSCRB_B_SIZE)
  197. #define V_DMA_DSCRB_B_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_B_SIZE)
  198. #define G_DMA_DSCRB_B_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRB_B_SIZE, M_DMA_DSCRB_B_SIZE)
  199. #define M_DMA_DSCRB_B_VALID _SB_MAKEMASK1(49)
  200. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  201. #define S_DMA_DSCRB_PKT_SIZE_MSB _SB_MAKE64(48)
  202. #define M_DMA_DSCRB_PKT_SIZE_MSB _SB_MAKEMASK(2, S_DMA_DSCRB_PKT_SIZE_MSB)
  203. #define V_DMA_DSCRB_PKT_SIZE_MSB(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_PKT_SIZE_MSB)
  204. #define G_DMA_DSCRB_PKT_SIZE_MSB(x) _SB_GETVALUE(x, S_DMA_DSCRB_PKT_SIZE_MSB, M_DMA_DSCRB_PKT_SIZE_MSB)
  205. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  206. #define S_DMA_DSCRB_PKT_SIZE _SB_MAKE64(50)
  207. #define M_DMA_DSCRB_PKT_SIZE _SB_MAKEMASK(14, S_DMA_DSCRB_PKT_SIZE)
  208. #define V_DMA_DSCRB_PKT_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_PKT_SIZE)
  209. #define G_DMA_DSCRB_PKT_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRB_PKT_SIZE, M_DMA_DSCRB_PKT_SIZE)
  210. /*
  211. * from pass2 some bits in dscr_b are also used for rx status
  212. */
  213. #define S_DMA_DSCRB_STATUS _SB_MAKE64(0)
  214. #define M_DMA_DSCRB_STATUS _SB_MAKEMASK(1, S_DMA_DSCRB_STATUS)
  215. #define V_DMA_DSCRB_STATUS(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_STATUS)
  216. #define G_DMA_DSCRB_STATUS(x) _SB_GETVALUE(x, S_DMA_DSCRB_STATUS, M_DMA_DSCRB_STATUS)
  217. /*
  218. * Ethernet Descriptor Status Bits (Table 7-15)
  219. */
  220. #define M_DMA_ETHRX_BADIP4CS _SB_MAKEMASK1(51)
  221. #define M_DMA_ETHRX_DSCRERR _SB_MAKEMASK1(52)
  222. #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  223. /* Note: This bit is in the DSCR_B options field */
  224. #define M_DMA_ETHRX_BADTCPCS _SB_MAKEMASK1(0)
  225. #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
  226. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  227. /* Note: These bits are in the DSCR_B options field */
  228. #define M_DMA_ETH_VLAN_FLAG _SB_MAKEMASK1(1)
  229. #define M_DMA_ETH_CRC_FLAG _SB_MAKEMASK1(2)
  230. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  231. #define S_DMA_ETHRX_RXCH 53
  232. #define M_DMA_ETHRX_RXCH _SB_MAKEMASK(2, S_DMA_ETHRX_RXCH)
  233. #define V_DMA_ETHRX_RXCH(x) _SB_MAKEVALUE(x, S_DMA_ETHRX_RXCH)
  234. #define G_DMA_ETHRX_RXCH(x) _SB_GETVALUE(x, S_DMA_ETHRX_RXCH, M_DMA_ETHRX_RXCH)
  235. #define S_DMA_ETHRX_PKTTYPE 55
  236. #define M_DMA_ETHRX_PKTTYPE _SB_MAKEMASK(3, S_DMA_ETHRX_PKTTYPE)
  237. #define V_DMA_ETHRX_PKTTYPE(x) _SB_MAKEVALUE(x, S_DMA_ETHRX_PKTTYPE)
  238. #define G_DMA_ETHRX_PKTTYPE(x) _SB_GETVALUE(x, S_DMA_ETHRX_PKTTYPE, M_DMA_ETHRX_PKTTYPE)
  239. #define K_DMA_ETHRX_PKTTYPE_IPV4 0
  240. #define K_DMA_ETHRX_PKTTYPE_ARPV4 1
  241. #define K_DMA_ETHRX_PKTTYPE_802 2
  242. #define K_DMA_ETHRX_PKTTYPE_OTHER 3
  243. #define K_DMA_ETHRX_PKTTYPE_USER0 4
  244. #define K_DMA_ETHRX_PKTTYPE_USER1 5
  245. #define K_DMA_ETHRX_PKTTYPE_USER2 6
  246. #define K_DMA_ETHRX_PKTTYPE_USER3 7
  247. #define M_DMA_ETHRX_MATCH_HASH _SB_MAKEMASK1(58)
  248. #define M_DMA_ETHRX_MATCH_EXACT _SB_MAKEMASK1(59)
  249. #define M_DMA_ETHRX_BCAST _SB_MAKEMASK1(60)
  250. #define M_DMA_ETHRX_MCAST _SB_MAKEMASK1(61)
  251. #define M_DMA_ETHRX_BAD _SB_MAKEMASK1(62)
  252. #define M_DMA_ETHRX_SOP _SB_MAKEMASK1(63)
  253. /*
  254. * Ethernet Transmit Status Bits (Table 7-16)
  255. */
  256. #define M_DMA_ETHTX_SOP _SB_MAKEMASK1(63)
  257. /*
  258. * Ethernet Transmit Options (Table 7-17)
  259. */
  260. #define K_DMA_ETHTX_NOTSOP _SB_MAKE64(0x00)
  261. #define K_DMA_ETHTX_APPENDCRC _SB_MAKE64(0x01)
  262. #define K_DMA_ETHTX_REPLACECRC _SB_MAKE64(0x02)
  263. #define K_DMA_ETHTX_APPENDCRC_APPENDPAD _SB_MAKE64(0x03)
  264. #define K_DMA_ETHTX_APPENDVLAN_REPLACECRC _SB_MAKE64(0x04)
  265. #define K_DMA_ETHTX_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x05)
  266. #define K_DMA_ETHTX_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x6)
  267. #define K_DMA_ETHTX_NOMODS _SB_MAKE64(0x07)
  268. #define K_DMA_ETHTX_RESERVED1 _SB_MAKE64(0x08)
  269. #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC _SB_MAKE64(0x09)
  270. #define K_DMA_ETHTX_REPLACESADDR_REPLACECRC _SB_MAKE64(0x0A)
  271. #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC_APPENDPAD _SB_MAKE64(0x0B)
  272. #define K_DMA_ETHTX_REPLACESADDR_APPENDVLAN_REPLACECRC _SB_MAKE64(0x0C)
  273. #define K_DMA_ETHTX_REPLACESADDR_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x0D)
  274. #define K_DMA_ETHTX_REPLACESADDR_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x0E)
  275. #define K_DMA_ETHTX_RESERVED2 _SB_MAKE64(0x0F)
  276. /*
  277. * Serial Receive Options (Table 7-18)
  278. */
  279. #define M_DMA_SERRX_CRC_ERROR _SB_MAKEMASK1(56)
  280. #define M_DMA_SERRX_ABORT _SB_MAKEMASK1(57)
  281. #define M_DMA_SERRX_OCTET_ERROR _SB_MAKEMASK1(58)
  282. #define M_DMA_SERRX_LONGFRAME_ERROR _SB_MAKEMASK1(59)
  283. #define M_DMA_SERRX_SHORTFRAME_ERROR _SB_MAKEMASK1(60)
  284. #define M_DMA_SERRX_OVERRUN_ERROR _SB_MAKEMASK1(61)
  285. #define M_DMA_SERRX_GOOD _SB_MAKEMASK1(62)
  286. #define M_DMA_SERRX_SOP _SB_MAKEMASK1(63)
  287. /*
  288. * Serial Transmit Status Bits (Table 7-20)
  289. */
  290. #define M_DMA_SERTX_FLAG _SB_MAKEMASK1(63)
  291. /*
  292. * Serial Transmit Options (Table 7-21)
  293. */
  294. #define K_DMA_SERTX_RESERVED _SB_MAKEMASK1(0)
  295. #define K_DMA_SERTX_APPENDCRC _SB_MAKEMASK1(1)
  296. #define K_DMA_SERTX_APPENDPAD _SB_MAKEMASK1(2)
  297. #define K_DMA_SERTX_ABORT _SB_MAKEMASK1(3)
  298. /* *********************************************************************
  299. * Data Mover Registers
  300. ********************************************************************* */
  301. /*
  302. * Data Mover Descriptor Base Address Register (Table 7-22)
  303. * Register: DM_DSCR_BASE_0
  304. * Register: DM_DSCR_BASE_1
  305. * Register: DM_DSCR_BASE_2
  306. * Register: DM_DSCR_BASE_3
  307. */
  308. #define M_DM_DSCR_BASE_MBZ _SB_MAKEMASK(4, 0)
  309. /* Note: Just mask the base address and then OR it in. */
  310. #define S_DM_DSCR_BASE_ADDR _SB_MAKE64(4)
  311. #define M_DM_DSCR_BASE_ADDR _SB_MAKEMASK(36, S_DM_DSCR_BASE_ADDR)
  312. #define S_DM_DSCR_BASE_RINGSZ _SB_MAKE64(40)
  313. #define M_DM_DSCR_BASE_RINGSZ _SB_MAKEMASK(16, S_DM_DSCR_BASE_RINGSZ)
  314. #define V_DM_DSCR_BASE_RINGSZ(x) _SB_MAKEVALUE(x, S_DM_DSCR_BASE_RINGSZ)
  315. #define G_DM_DSCR_BASE_RINGSZ(x) _SB_GETVALUE(x, S_DM_DSCR_BASE_RINGSZ, M_DM_DSCR_BASE_RINGSZ)
  316. #define S_DM_DSCR_BASE_PRIORITY _SB_MAKE64(56)
  317. #define M_DM_DSCR_BASE_PRIORITY _SB_MAKEMASK(3, S_DM_DSCR_BASE_PRIORITY)
  318. #define V_DM_DSCR_BASE_PRIORITY(x) _SB_MAKEVALUE(x, S_DM_DSCR_BASE_PRIORITY)
  319. #define G_DM_DSCR_BASE_PRIORITY(x) _SB_GETVALUE(x, S_DM_DSCR_BASE_PRIORITY, M_DM_DSCR_BASE_PRIORITY)
  320. #define K_DM_DSCR_BASE_PRIORITY_1 0
  321. #define K_DM_DSCR_BASE_PRIORITY_2 1
  322. #define K_DM_DSCR_BASE_PRIORITY_4 2
  323. #define K_DM_DSCR_BASE_PRIORITY_8 3
  324. #define K_DM_DSCR_BASE_PRIORITY_16 4
  325. #define M_DM_DSCR_BASE_ACTIVE _SB_MAKEMASK1(59)
  326. #define M_DM_DSCR_BASE_INTERRUPT _SB_MAKEMASK1(60)
  327. #define M_DM_DSCR_BASE_RESET _SB_MAKEMASK1(61) /* write register */
  328. #define M_DM_DSCR_BASE_ERROR _SB_MAKEMASK1(61) /* read register */
  329. #define M_DM_DSCR_BASE_ABORT _SB_MAKEMASK1(62)
  330. #define M_DM_DSCR_BASE_ENABL _SB_MAKEMASK1(63)
  331. /*
  332. * Data Mover Descriptor Count Register (Table 7-25)
  333. */
  334. /* no bitfields */
  335. /*
  336. * Data Mover Current Descriptor Address (Table 7-24)
  337. * Register: DM_CUR_DSCR_ADDR_0
  338. * Register: DM_CUR_DSCR_ADDR_1
  339. * Register: DM_CUR_DSCR_ADDR_2
  340. * Register: DM_CUR_DSCR_ADDR_3
  341. */
  342. #define S_DM_CUR_DSCR_DSCR_ADDR _SB_MAKE64(0)
  343. #define M_DM_CUR_DSCR_DSCR_ADDR _SB_MAKEMASK(40, S_DM_CUR_DSCR_DSCR_ADDR)
  344. #define S_DM_CUR_DSCR_DSCR_COUNT _SB_MAKE64(48)
  345. #define M_DM_CUR_DSCR_DSCR_COUNT _SB_MAKEMASK(16, S_DM_CUR_DSCR_DSCR_COUNT)
  346. #define V_DM_CUR_DSCR_DSCR_COUNT(r) _SB_MAKEVALUE(r, S_DM_CUR_DSCR_DSCR_COUNT)
  347. #define G_DM_CUR_DSCR_DSCR_COUNT(r) _SB_GETVALUE(r, S_DM_CUR_DSCR_DSCR_COUNT,\
  348. M_DM_CUR_DSCR_DSCR_COUNT)
  349. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  350. /*
  351. * Data Mover Channel Partial Result Registers
  352. * Register: DM_PARTIAL_0
  353. * Register: DM_PARTIAL_1
  354. * Register: DM_PARTIAL_2
  355. * Register: DM_PARTIAL_3
  356. */
  357. #define S_DM_PARTIAL_CRC_PARTIAL _SB_MAKE64(0)
  358. #define M_DM_PARTIAL_CRC_PARTIAL _SB_MAKEMASK(32, S_DM_PARTIAL_CRC_PARTIAL)
  359. #define V_DM_PARTIAL_CRC_PARTIAL(r) _SB_MAKEVALUE(r, S_DM_PARTIAL_CRC_PARTIAL)
  360. #define G_DM_PARTIAL_CRC_PARTIAL(r) _SB_GETVALUE(r, S_DM_PARTIAL_CRC_PARTIAL,\
  361. M_DM_PARTIAL_CRC_PARTIAL)
  362. #define S_DM_PARTIAL_TCPCS_PARTIAL _SB_MAKE64(32)
  363. #define M_DM_PARTIAL_TCPCS_PARTIAL _SB_MAKEMASK(16, S_DM_PARTIAL_TCPCS_PARTIAL)
  364. #define V_DM_PARTIAL_TCPCS_PARTIAL(r) _SB_MAKEVALUE(r, S_DM_PARTIAL_TCPCS_PARTIAL)
  365. #define G_DM_PARTIAL_TCPCS_PARTIAL(r) _SB_GETVALUE(r, S_DM_PARTIAL_TCPCS_PARTIAL,\
  366. M_DM_PARTIAL_TCPCS_PARTIAL)
  367. #define M_DM_PARTIAL_ODD_BYTE _SB_MAKEMASK1(48)
  368. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  369. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  370. /*
  371. * Data Mover CRC Definition Registers
  372. * Register: CRC_DEF_0
  373. * Register: CRC_DEF_1
  374. */
  375. #define S_CRC_DEF_CRC_INIT _SB_MAKE64(0)
  376. #define M_CRC_DEF_CRC_INIT _SB_MAKEMASK(32, S_CRC_DEF_CRC_INIT)
  377. #define V_CRC_DEF_CRC_INIT(r) _SB_MAKEVALUE(r, S_CRC_DEF_CRC_INIT)
  378. #define G_CRC_DEF_CRC_INIT(r) _SB_GETVALUE(r, S_CRC_DEF_CRC_INIT,\
  379. M_CRC_DEF_CRC_INIT)
  380. #define S_CRC_DEF_CRC_POLY _SB_MAKE64(32)
  381. #define M_CRC_DEF_CRC_POLY _SB_MAKEMASK(32, S_CRC_DEF_CRC_POLY)
  382. #define V_CRC_DEF_CRC_POLY(r) _SB_MAKEVALUE(r, S_CRC_DEF_CRC_POLY)
  383. #define G_CRC_DEF_CRC_POLY(r) _SB_GETVALUE(r, S_CRC_DEF_CRC_POLY,\
  384. M_CRC_DEF_CRC_POLY)
  385. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  386. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  387. /*
  388. * Data Mover CRC/Checksum Definition Registers
  389. * Register: CTCP_DEF_0
  390. * Register: CTCP_DEF_1
  391. */
  392. #define S_CTCP_DEF_CRC_TXOR _SB_MAKE64(0)
  393. #define M_CTCP_DEF_CRC_TXOR _SB_MAKEMASK(32, S_CTCP_DEF_CRC_TXOR)
  394. #define V_CTCP_DEF_CRC_TXOR(r) _SB_MAKEVALUE(r, S_CTCP_DEF_CRC_TXOR)
  395. #define G_CTCP_DEF_CRC_TXOR(r) _SB_GETVALUE(r, S_CTCP_DEF_CRC_TXOR,\
  396. M_CTCP_DEF_CRC_TXOR)
  397. #define S_CTCP_DEF_TCPCS_INIT _SB_MAKE64(32)
  398. #define M_CTCP_DEF_TCPCS_INIT _SB_MAKEMASK(16, S_CTCP_DEF_TCPCS_INIT)
  399. #define V_CTCP_DEF_TCPCS_INIT(r) _SB_MAKEVALUE(r, S_CTCP_DEF_TCPCS_INIT)
  400. #define G_CTCP_DEF_TCPCS_INIT(r) _SB_GETVALUE(r, S_CTCP_DEF_TCPCS_INIT,\
  401. M_CTCP_DEF_TCPCS_INIT)
  402. #define S_CTCP_DEF_CRC_WIDTH _SB_MAKE64(48)
  403. #define M_CTCP_DEF_CRC_WIDTH _SB_MAKEMASK(2, S_CTCP_DEF_CRC_WIDTH)
  404. #define V_CTCP_DEF_CRC_WIDTH(r) _SB_MAKEVALUE(r, S_CTCP_DEF_CRC_WIDTH)
  405. #define G_CTCP_DEF_CRC_WIDTH(r) _SB_GETVALUE(r, S_CTCP_DEF_CRC_WIDTH,\
  406. M_CTCP_DEF_CRC_WIDTH)
  407. #define K_CTCP_DEF_CRC_WIDTH_4 0
  408. #define K_CTCP_DEF_CRC_WIDTH_2 1
  409. #define K_CTCP_DEF_CRC_WIDTH_1 2
  410. #define M_CTCP_DEF_CRC_BIT_ORDER _SB_MAKEMASK1(50)
  411. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  412. /*
  413. * Data Mover Descriptor Doubleword "A" (Table 7-26)
  414. */
  415. #define S_DM_DSCRA_DST_ADDR _SB_MAKE64(0)
  416. #define M_DM_DSCRA_DST_ADDR _SB_MAKEMASK(40, S_DM_DSCRA_DST_ADDR)
  417. #define M_DM_DSCRA_UN_DEST _SB_MAKEMASK1(40)
  418. #define M_DM_DSCRA_UN_SRC _SB_MAKEMASK1(41)
  419. #define M_DM_DSCRA_INTERRUPT _SB_MAKEMASK1(42)
  420. #if SIBYTE_HDR_FEATURE_UP_TO(1250, PASS1)
  421. #define M_DM_DSCRA_THROTTLE _SB_MAKEMASK1(43)
  422. #endif /* up to 1250 PASS1 */
  423. #define S_DM_DSCRA_DIR_DEST _SB_MAKE64(44)
  424. #define M_DM_DSCRA_DIR_DEST _SB_MAKEMASK(2, S_DM_DSCRA_DIR_DEST)
  425. #define V_DM_DSCRA_DIR_DEST(x) _SB_MAKEVALUE(x, S_DM_DSCRA_DIR_DEST)
  426. #define G_DM_DSCRA_DIR_DEST(x) _SB_GETVALUE(x, S_DM_DSCRA_DIR_DEST, M_DM_DSCRA_DIR_DEST)
  427. #define K_DM_DSCRA_DIR_DEST_INCR 0
  428. #define K_DM_DSCRA_DIR_DEST_DECR 1
  429. #define K_DM_DSCRA_DIR_DEST_CONST 2
  430. #define V_DM_DSCRA_DIR_DEST_INCR _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_INCR, S_DM_DSCRA_DIR_DEST)
  431. #define V_DM_DSCRA_DIR_DEST_DECR _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_DECR, S_DM_DSCRA_DIR_DEST)
  432. #define V_DM_DSCRA_DIR_DEST_CONST _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_CONST, S_DM_DSCRA_DIR_DEST)
  433. #define S_DM_DSCRA_DIR_SRC _SB_MAKE64(46)
  434. #define M_DM_DSCRA_DIR_SRC _SB_MAKEMASK(2, S_DM_DSCRA_DIR_SRC)
  435. #define V_DM_DSCRA_DIR_SRC(x) _SB_MAKEVALUE(x, S_DM_DSCRA_DIR_SRC)
  436. #define G_DM_DSCRA_DIR_SRC(x) _SB_GETVALUE(x, S_DM_DSCRA_DIR_SRC, M_DM_DSCRA_DIR_SRC)
  437. #define K_DM_DSCRA_DIR_SRC_INCR 0
  438. #define K_DM_DSCRA_DIR_SRC_DECR 1
  439. #define K_DM_DSCRA_DIR_SRC_CONST 2
  440. #define V_DM_DSCRA_DIR_SRC_INCR _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_INCR, S_DM_DSCRA_DIR_SRC)
  441. #define V_DM_DSCRA_DIR_SRC_DECR _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_DECR, S_DM_DSCRA_DIR_SRC)
  442. #define V_DM_DSCRA_DIR_SRC_CONST _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_CONST, S_DM_DSCRA_DIR_SRC)
  443. #define M_DM_DSCRA_ZERO_MEM _SB_MAKEMASK1(48)
  444. #define M_DM_DSCRA_PREFETCH _SB_MAKEMASK1(49)
  445. #define M_DM_DSCRA_L2C_DEST _SB_MAKEMASK1(50)
  446. #define M_DM_DSCRA_L2C_SRC _SB_MAKEMASK1(51)
  447. #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  448. #define M_DM_DSCRA_RD_BKOFF _SB_MAKEMASK1(52)
  449. #define M_DM_DSCRA_WR_BKOFF _SB_MAKEMASK1(53)
  450. #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
  451. #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
  452. #define M_DM_DSCRA_TCPCS_EN _SB_MAKEMASK1(54)
  453. #define M_DM_DSCRA_TCPCS_RES _SB_MAKEMASK1(55)
  454. #define M_DM_DSCRA_TCPCS_AP _SB_MAKEMASK1(56)
  455. #define M_DM_DSCRA_CRC_EN _SB_MAKEMASK1(57)
  456. #define M_DM_DSCRA_CRC_RES _SB_MAKEMASK1(58)
  457. #define M_DM_DSCRA_CRC_AP _SB_MAKEMASK1(59)
  458. #define M_DM_DSCRA_CRC_DFN _SB_MAKEMASK1(60)
  459. #define M_DM_DSCRA_CRC_XBIT _SB_MAKEMASK1(61)
  460. #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
  461. #define M_DM_DSCRA_RESERVED2 _SB_MAKEMASK(3, 61)
  462. /*
  463. * Data Mover Descriptor Doubleword "B" (Table 7-25)
  464. */
  465. #define S_DM_DSCRB_SRC_ADDR _SB_MAKE64(0)
  466. #define M_DM_DSCRB_SRC_ADDR _SB_MAKEMASK(40, S_DM_DSCRB_SRC_ADDR)
  467. #define S_DM_DSCRB_SRC_LENGTH _SB_MAKE64(40)
  468. #define M_DM_DSCRB_SRC_LENGTH _SB_MAKEMASK(20, S_DM_DSCRB_SRC_LENGTH)
  469. #define V_DM_DSCRB_SRC_LENGTH(x) _SB_MAKEVALUE(x, S_DM_DSCRB_SRC_LENGTH)
  470. #define G_DM_DSCRB_SRC_LENGTH(x) _SB_GETVALUE(x, S_DM_DSCRB_SRC_LENGTH, M_DM_DSCRB_SRC_LENGTH)
  471. #endif