xrs700x_reg.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Register Base Addresses */
  3. #define XRS_DEVICE_ID_BASE 0x0
  4. #define XRS_GPIO_BASE 0x10000
  5. #define XRS_PORT_OFFSET 0x10000
  6. #define XRS_PORT_BASE(x) (0x200000 + XRS_PORT_OFFSET * (x))
  7. #define XRS_RTC_BASE 0x280000
  8. #define XRS_TS_OFFSET 0x8000
  9. #define XRS_TS_BASE(x) (0x290000 + XRS_TS_OFFSET * (x))
  10. #define XRS_SWITCH_CONF_BASE 0x300000
  11. /* Device Identification Registers */
  12. #define XRS_DEV_ID0 (XRS_DEVICE_ID_BASE + 0)
  13. #define XRS_DEV_ID1 (XRS_DEVICE_ID_BASE + 2)
  14. #define XRS_INT_ID0 (XRS_DEVICE_ID_BASE + 4)
  15. #define XRS_INT_ID1 (XRS_DEVICE_ID_BASE + 6)
  16. #define XRS_REV_ID (XRS_DEVICE_ID_BASE + 8)
  17. /* GPIO Registers */
  18. #define XRS_CONFIG0 (XRS_GPIO_BASE + 0x1000)
  19. #define XRS_INPUT_STATUS0 (XRS_GPIO_BASE + 0x1002)
  20. #define XRS_CONFIG1 (XRS_GPIO_BASE + 0x1004)
  21. #define XRS_INPUT_STATUS1 (XRS_GPIO_BASE + 0x1006)
  22. #define XRS_CONFIG2 (XRS_GPIO_BASE + 0x1008)
  23. #define XRS_INPUT_STATUS2 (XRS_GPIO_BASE + 0x100a)
  24. /* Port Configuration Registers */
  25. #define XRS_PORT_GEN_BASE(x) (XRS_PORT_BASE(x) + 0x0)
  26. #define XRS_PORT_HSR_BASE(x) (XRS_PORT_BASE(x) + 0x2000)
  27. #define XRS_PORT_PTP_BASE(x) (XRS_PORT_BASE(x) + 0x4000)
  28. #define XRS_PORT_CNT_BASE(x) (XRS_PORT_BASE(x) + 0x6000)
  29. #define XRS_PORT_IPO_BASE(x) (XRS_PORT_BASE(x) + 0x8000)
  30. /* Port Configuration Registers - General and State */
  31. #define XRS_PORT_STATE(x) (XRS_PORT_GEN_BASE(x) + 0x0)
  32. #define XRS_PORT_FORWARDING 0
  33. #define XRS_PORT_LEARNING 1
  34. #define XRS_PORT_DISABLED 2
  35. #define XRS_PORT_MODE_NORMAL 0
  36. #define XRS_PORT_MODE_MANAGEMENT 1
  37. #define XRS_PORT_SPEED_1000 0x12
  38. #define XRS_PORT_SPEED_100 0x20
  39. #define XRS_PORT_SPEED_10 0x30
  40. #define XRS_PORT_VLAN(x) (XRS_PORT_GEN_BASE(x) + 0x10)
  41. #define XRS_PORT_VLAN0_MAPPING(x) (XRS_PORT_GEN_BASE(x) + 0x12)
  42. #define XRS_PORT_FWD_MASK(x) (XRS_PORT_GEN_BASE(x) + 0x14)
  43. #define XRS_PORT_VLAN_PRIO(x) (XRS_PORT_GEN_BASE(x) + 0x16)
  44. /* Port Configuration Registers - HSR/PRP */
  45. #define XRS_HSR_CFG(x) (XRS_PORT_HSR_BASE(x) + 0x0)
  46. #define XRS_HSR_CFG_HSR_PRP BIT(0)
  47. #define XRS_HSR_CFG_HSR 0
  48. #define XRS_HSR_CFG_PRP BIT(8)
  49. #define XRS_HSR_CFG_LANID_A 0
  50. #define XRS_HSR_CFG_LANID_B BIT(10)
  51. /* Port Configuration Registers - PTP */
  52. #define XRS_PTP_RX_SYNC_DELAY_NS_LO(x) (XRS_PORT_PTP_BASE(x) + 0x2)
  53. #define XRS_PTP_RX_SYNC_DELAY_NS_HI(x) (XRS_PORT_PTP_BASE(x) + 0x4)
  54. #define XRS_PTP_RX_EVENT_DELAY_NS(x) (XRS_PORT_PTP_BASE(x) + 0xa)
  55. #define XRS_PTP_TX_EVENT_DELAY_NS(x) (XRS_PORT_PTP_BASE(x) + 0x12)
  56. /* Port Configuration Registers - Counter */
  57. #define XRS_CNT_CTRL(x) (XRS_PORT_CNT_BASE(x) + 0x0)
  58. #define XRS_RX_GOOD_OCTETS_L (XRS_PORT_CNT_BASE(0) + 0x200)
  59. #define XRS_RX_GOOD_OCTETS_H (XRS_PORT_CNT_BASE(0) + 0x202)
  60. #define XRS_RX_BAD_OCTETS_L (XRS_PORT_CNT_BASE(0) + 0x204)
  61. #define XRS_RX_BAD_OCTETS_H (XRS_PORT_CNT_BASE(0) + 0x206)
  62. #define XRS_RX_UNICAST_L (XRS_PORT_CNT_BASE(0) + 0x208)
  63. #define XRS_RX_UNICAST_H (XRS_PORT_CNT_BASE(0) + 0x20a)
  64. #define XRS_RX_BROADCAST_L (XRS_PORT_CNT_BASE(0) + 0x20c)
  65. #define XRS_RX_BROADCAST_H (XRS_PORT_CNT_BASE(0) + 0x20e)
  66. #define XRS_RX_MULTICAST_L (XRS_PORT_CNT_BASE(0) + 0x210)
  67. #define XRS_RX_MULTICAST_H (XRS_PORT_CNT_BASE(0) + 0x212)
  68. #define XRS_RX_UNDERSIZE_L (XRS_PORT_CNT_BASE(0) + 0x214)
  69. #define XRS_RX_UNDERSIZE_H (XRS_PORT_CNT_BASE(0) + 0x216)
  70. #define XRS_RX_FRAGMENTS_L (XRS_PORT_CNT_BASE(0) + 0x218)
  71. #define XRS_RX_FRAGMENTS_H (XRS_PORT_CNT_BASE(0) + 0x21a)
  72. #define XRS_RX_OVERSIZE_L (XRS_PORT_CNT_BASE(0) + 0x21c)
  73. #define XRS_RX_OVERSIZE_H (XRS_PORT_CNT_BASE(0) + 0x21e)
  74. #define XRS_RX_JABBER_L (XRS_PORT_CNT_BASE(0) + 0x220)
  75. #define XRS_RX_JABBER_H (XRS_PORT_CNT_BASE(0) + 0x222)
  76. #define XRS_RX_ERR_L (XRS_PORT_CNT_BASE(0) + 0x224)
  77. #define XRS_RX_ERR_H (XRS_PORT_CNT_BASE(0) + 0x226)
  78. #define XRS_RX_CRC_L (XRS_PORT_CNT_BASE(0) + 0x228)
  79. #define XRS_RX_CRC_H (XRS_PORT_CNT_BASE(0) + 0x22a)
  80. #define XRS_RX_64_L (XRS_PORT_CNT_BASE(0) + 0x22c)
  81. #define XRS_RX_64_H (XRS_PORT_CNT_BASE(0) + 0x22e)
  82. #define XRS_RX_65_127_L (XRS_PORT_CNT_BASE(0) + 0x230)
  83. #define XRS_RX_65_127_H (XRS_PORT_CNT_BASE(0) + 0x232)
  84. #define XRS_RX_128_255_L (XRS_PORT_CNT_BASE(0) + 0x234)
  85. #define XRS_RX_128_255_H (XRS_PORT_CNT_BASE(0) + 0x236)
  86. #define XRS_RX_256_511_L (XRS_PORT_CNT_BASE(0) + 0x238)
  87. #define XRS_RX_256_511_H (XRS_PORT_CNT_BASE(0) + 0x23a)
  88. #define XRS_RX_512_1023_L (XRS_PORT_CNT_BASE(0) + 0x23c)
  89. #define XRS_RX_512_1023_H (XRS_PORT_CNT_BASE(0) + 0x23e)
  90. #define XRS_RX_1024_1536_L (XRS_PORT_CNT_BASE(0) + 0x240)
  91. #define XRS_RX_1024_1536_H (XRS_PORT_CNT_BASE(0) + 0x242)
  92. #define XRS_RX_HSR_PRP_L (XRS_PORT_CNT_BASE(0) + 0x244)
  93. #define XRS_RX_HSR_PRP_H (XRS_PORT_CNT_BASE(0) + 0x246)
  94. #define XRS_RX_WRONGLAN_L (XRS_PORT_CNT_BASE(0) + 0x248)
  95. #define XRS_RX_WRONGLAN_H (XRS_PORT_CNT_BASE(0) + 0x24a)
  96. #define XRS_RX_DUPLICATE_L (XRS_PORT_CNT_BASE(0) + 0x24c)
  97. #define XRS_RX_DUPLICATE_H (XRS_PORT_CNT_BASE(0) + 0x24e)
  98. #define XRS_TX_OCTETS_L (XRS_PORT_CNT_BASE(0) + 0x280)
  99. #define XRS_TX_OCTETS_H (XRS_PORT_CNT_BASE(0) + 0x282)
  100. #define XRS_TX_UNICAST_L (XRS_PORT_CNT_BASE(0) + 0x284)
  101. #define XRS_TX_UNICAST_H (XRS_PORT_CNT_BASE(0) + 0x286)
  102. #define XRS_TX_BROADCAST_L (XRS_PORT_CNT_BASE(0) + 0x288)
  103. #define XRS_TX_BROADCAST_H (XRS_PORT_CNT_BASE(0) + 0x28a)
  104. #define XRS_TX_MULTICAST_L (XRS_PORT_CNT_BASE(0) + 0x28c)
  105. #define XRS_TX_MULTICAST_H (XRS_PORT_CNT_BASE(0) + 0x28e)
  106. #define XRS_TX_HSR_PRP_L (XRS_PORT_CNT_BASE(0) + 0x290)
  107. #define XRS_TX_HSR_PRP_H (XRS_PORT_CNT_BASE(0) + 0x292)
  108. #define XRS_PRIQ_DROP_L (XRS_PORT_CNT_BASE(0) + 0x2c0)
  109. #define XRS_PRIQ_DROP_H (XRS_PORT_CNT_BASE(0) + 0x2c2)
  110. #define XRS_EARLY_DROP_L (XRS_PORT_CNT_BASE(0) + 0x2c4)
  111. #define XRS_EARLY_DROP_H (XRS_PORT_CNT_BASE(0) + 0x2c6)
  112. /* Port Configuration Registers - Inbound Policy 0 - 15 */
  113. #define XRS_ETH_ADDR_CFG(x, p) (XRS_PORT_IPO_BASE(x) + \
  114. (p) * 0x20 + 0x0)
  115. #define XRS_ETH_ADDR_FWD_ALLOW(x, p) (XRS_PORT_IPO_BASE(x) + \
  116. (p) * 0x20 + 0x2)
  117. #define XRS_ETH_ADDR_FWD_MIRROR(x, p) (XRS_PORT_IPO_BASE(x) + \
  118. (p) * 0x20 + 0x4)
  119. #define XRS_ETH_ADDR_0(x, p) (XRS_PORT_IPO_BASE(x) + \
  120. (p) * 0x20 + 0x8)
  121. #define XRS_ETH_ADDR_1(x, p) (XRS_PORT_IPO_BASE(x) + \
  122. (p) * 0x20 + 0xa)
  123. #define XRS_ETH_ADDR_2(x, p) (XRS_PORT_IPO_BASE(x) + \
  124. (p) * 0x20 + 0xc)
  125. /* RTC Registers */
  126. #define XRS_CUR_NSEC0 (XRS_RTC_BASE + 0x1004)
  127. #define XRS_CUR_NSEC1 (XRS_RTC_BASE + 0x1006)
  128. #define XRS_CUR_SEC0 (XRS_RTC_BASE + 0x1008)
  129. #define XRS_CUR_SEC1 (XRS_RTC_BASE + 0x100a)
  130. #define XRS_CUR_SEC2 (XRS_RTC_BASE + 0x100c)
  131. #define XRS_TIME_CC0 (XRS_RTC_BASE + 0x1010)
  132. #define XRS_TIME_CC1 (XRS_RTC_BASE + 0x1012)
  133. #define XRS_TIME_CC2 (XRS_RTC_BASE + 0x1014)
  134. #define XRS_STEP_SIZE0 (XRS_RTC_BASE + 0x1020)
  135. #define XRS_STEP_SIZE1 (XRS_RTC_BASE + 0x1022)
  136. #define XRS_STEP_SIZE2 (XRS_RTC_BASE + 0x1024)
  137. #define XRS_ADJUST_NSEC0 (XRS_RTC_BASE + 0x1034)
  138. #define XRS_ADJUST_NSEC1 (XRS_RTC_BASE + 0x1036)
  139. #define XRS_ADJUST_SEC0 (XRS_RTC_BASE + 0x1038)
  140. #define XRS_ADJUST_SEC1 (XRS_RTC_BASE + 0x103a)
  141. #define XRS_ADJUST_SEC2 (XRS_RTC_BASE + 0x103c)
  142. #define XRS_TIME_CMD (XRS_RTC_BASE + 0x1040)
  143. /* Time Stamper Registers */
  144. #define XRS_TS_CTRL(x) (XRS_TS_BASE(x) + 0x1000)
  145. #define XRS_TS_INT_MASK(x) (XRS_TS_BASE(x) + 0x1008)
  146. #define XRS_TS_INT_STATUS(x) (XRS_TS_BASE(x) + 0x1010)
  147. #define XRS_TS_NSEC0(x) (XRS_TS_BASE(x) + 0x1104)
  148. #define XRS_TS_NSEC1(x) (XRS_TS_BASE(x) + 0x1106)
  149. #define XRS_TS_SEC0(x) (XRS_TS_BASE(x) + 0x1108)
  150. #define XRS_TS_SEC1(x) (XRS_TS_BASE(x) + 0x110a)
  151. #define XRS_TS_SEC2(x) (XRS_TS_BASE(x) + 0x110c)
  152. #define XRS_PNCT0(x) (XRS_TS_BASE(x) + 0x1110)
  153. #define XRS_PNCT1(x) (XRS_TS_BASE(x) + 0x1112)
  154. /* Switch Configuration Registers */
  155. #define XRS_SWITCH_GEN_BASE (XRS_SWITCH_CONF_BASE + 0x0)
  156. #define XRS_SWITCH_TS_BASE (XRS_SWITCH_CONF_BASE + 0x2000)
  157. #define XRS_SWITCH_VLAN_BASE (XRS_SWITCH_CONF_BASE + 0x4000)
  158. /* Switch Configuration Registers - General */
  159. #define XRS_GENERAL (XRS_SWITCH_GEN_BASE + 0x10)
  160. #define XRS_GENERAL_TIME_TRAILER BIT(9)
  161. #define XRS_GENERAL_MOD_SYNC BIT(10)
  162. #define XRS_GENERAL_CUT_THRU BIT(13)
  163. #define XRS_GENERAL_CLR_MAC_TBL BIT(14)
  164. #define XRS_GENERAL_RESET BIT(15)
  165. #define XRS_MT_CLEAR_MASK (XRS_SWITCH_GEN_BASE + 0x12)
  166. #define XRS_ADDRESS_AGING (XRS_SWITCH_GEN_BASE + 0x20)
  167. #define XRS_TS_CTRL_TX (XRS_SWITCH_GEN_BASE + 0x28)
  168. #define XRS_TS_CTRL_RX (XRS_SWITCH_GEN_BASE + 0x2a)
  169. #define XRS_INT_MASK (XRS_SWITCH_GEN_BASE + 0x2c)
  170. #define XRS_INT_STATUS (XRS_SWITCH_GEN_BASE + 0x2e)
  171. #define XRS_MAC_TABLE0 (XRS_SWITCH_GEN_BASE + 0x200)
  172. #define XRS_MAC_TABLE1 (XRS_SWITCH_GEN_BASE + 0x202)
  173. #define XRS_MAC_TABLE2 (XRS_SWITCH_GEN_BASE + 0x204)
  174. #define XRS_MAC_TABLE3 (XRS_SWITCH_GEN_BASE + 0x206)
  175. /* Switch Configuration Registers - Frame Timestamp */
  176. #define XRS_TX_TS_NS_LO(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + 0x0)
  177. #define XRS_TX_TS_NS_HI(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + 0x2)
  178. #define XRS_TX_TS_S_LO(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + 0x4)
  179. #define XRS_TX_TS_S_HI(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + 0x6)
  180. #define XRS_TX_TS_HDR(t, h) (XRS_SWITCH_TS_BASE + 0x80 * (t) + \
  181. 0x2 * (h) + 0xe)
  182. #define XRS_RX_TS_NS_LO(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + \
  183. 0x200)
  184. #define XRS_RX_TS_NS_HI(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + \
  185. 0x202)
  186. #define XRS_RX_TS_S_LO(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + \
  187. 0x204)
  188. #define XRS_RX_TS_S_HI(t) (XRS_SWITCH_TS_BASE + 0x80 * (t) + \
  189. 0x206)
  190. #define XRS_RX_TS_HDR(t, h) (XRS_SWITCH_TS_BASE + 0x80 * (t) + \
  191. 0x2 * (h) + 0xe)
  192. /* Switch Configuration Registers - VLAN */
  193. #define XRS_VLAN(v) (XRS_SWITCH_VLAN_BASE + 0x2 * (v))