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