1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __BCMASP_INTF_DEFS_H
3 #define __BCMASP_INTF_DEFS_H
4 
5 #define UMC_OFFSET(intf)		\
6 	((((intf)->port) * 0x800) + 0xc000)
7 #define  UMC_CMD			0x008
8 #define   UMC_CMD_TX_EN			BIT(0)
9 #define   UMC_CMD_RX_EN			BIT(1)
10 #define   UMC_CMD_SPEED_SHIFT		0x2
11 #define    UMC_CMD_SPEED_MASK		0x3
12 #define    UMC_CMD_SPEED_10		0x0
13 #define    UMC_CMD_SPEED_100		0x1
14 #define    UMC_CMD_SPEED_1000		0x2
15 #define    UMC_CMD_SPEED_2500		0x3
16 #define   UMC_CMD_PROMISC		BIT(4)
17 #define   UMC_CMD_PAD_EN		BIT(5)
18 #define   UMC_CMD_CRC_FWD		BIT(6)
19 #define   UMC_CMD_PAUSE_FWD		BIT(7)
20 #define   UMC_CMD_RX_PAUSE_IGNORE	BIT(8)
21 #define   UMC_CMD_TX_ADDR_INS		BIT(9)
22 #define   UMC_CMD_HD_EN			BIT(10)
23 #define   UMC_CMD_SW_RESET		BIT(13)
24 #define   UMC_CMD_LCL_LOOP_EN		BIT(15)
25 #define   UMC_CMD_AUTO_CONFIG		BIT(22)
26 #define   UMC_CMD_CNTL_FRM_EN		BIT(23)
27 #define   UMC_CMD_NO_LEN_CHK		BIT(24)
28 #define   UMC_CMD_RMT_LOOP_EN		BIT(25)
29 #define   UMC_CMD_PRBL_EN		BIT(27)
30 #define   UMC_CMD_TX_PAUSE_IGNORE	BIT(28)
31 #define   UMC_CMD_TX_RX_EN		BIT(29)
32 #define   UMC_CMD_RUNT_FILTER_DIS	BIT(30)
33 #define  UMC_MAC0			0x0c
34 #define  UMC_MAC1			0x10
35 #define  UMC_FRM_LEN			0x14
36 #define  UMC_EEE_CTRL			0x64
37 #define   EN_LPI_RX_PAUSE		BIT(0)
38 #define   EN_LPI_TX_PFC			BIT(1)
39 #define   EN_LPI_TX_PAUSE		BIT(2)
40 #define   EEE_EN			BIT(3)
41 #define   RX_FIFO_CHECK			BIT(4)
42 #define   EEE_TX_CLK_DIS		BIT(5)
43 #define   DIS_EEE_10M			BIT(6)
44 #define   LP_IDLE_PREDICTION_MODE	BIT(7)
45 #define  UMC_EEE_LPI_TIMER		0x68
46 #define  UMC_PAUSE_CNTRL		0x330
47 #define  UMC_TX_FLUSH			0x334
48 #define  UMC_GR64			0x400
49 #define  UMC_GR127			0x404
50 #define  UMC_GR255			0x408
51 #define  UMC_GR511			0x40c
52 #define  UMC_GR1023			0x410
53 #define  UMC_GR1518			0x414
54 #define  UMC_GRMGV			0x418
55 #define  UMC_GR2047			0x41c
56 #define  UMC_GR4095			0x420
57 #define  UMC_GR9216			0x424
58 #define  UMC_GRPKT			0x428
59 #define  UMC_GRBYT			0x42c
60 #define  UMC_GRMCA			0x430
61 #define  UMC_GRBCA			0x434
62 #define  UMC_GRFCS			0x438
63 #define  UMC_GRXCF			0x43c
64 #define  UMC_GRXPF			0x440
65 #define  UMC_GRXUO			0x444
66 #define  UMC_GRALN			0x448
67 #define  UMC_GRFLR			0x44c
68 #define  UMC_GRCDE			0x450
69 #define  UMC_GRFCR			0x454
70 #define  UMC_GROVR			0x458
71 #define  UMC_GRJBR			0x45c
72 #define  UMC_GRMTUE			0x460
73 #define  UMC_GRPOK			0x464
74 #define  UMC_GRUC			0x468
75 #define  UMC_GRPPP			0x46c
76 #define  UMC_GRMCRC			0x470
77 #define  UMC_TR64			0x480
78 #define  UMC_TR127			0x484
79 #define  UMC_TR255			0x488
80 #define  UMC_TR511			0x48c
81 #define  UMC_TR1023			0x490
82 #define  UMC_TR1518			0x494
83 #define  UMC_TRMGV			0x498
84 #define  UMC_TR2047			0x49c
85 #define  UMC_TR4095			0x4a0
86 #define  UMC_TR9216			0x4a4
87 #define  UMC_GTPKT			0x4a8
88 #define  UMC_GTMCA			0x4ac
89 #define  UMC_GTBCA			0x4b0
90 #define  UMC_GTXPF			0x4b4
91 #define  UMC_GTXCF			0x4b8
92 #define  UMC_GTFCS			0x4bc
93 #define  UMC_GTOVR			0x4c0
94 #define  UMC_GTDRF			0x4c4
95 #define  UMC_GTEDF			0x4c8
96 #define  UMC_GTSCL			0x4cc
97 #define  UMC_GTMCL			0x4d0
98 #define  UMC_GTLCL			0x4d4
99 #define  UMC_GTXCL			0x4d8
100 #define  UMC_GTFRG			0x4dc
101 #define  UMC_GTNCL			0x4e0
102 #define  UMC_GTJBR			0x4e4
103 #define  UMC_GTBYT			0x4e8
104 #define  UMC_GTPOK			0x4ec
105 #define  UMC_GTUC			0x4f0
106 #define  UMC_RRPKT			0x500
107 #define  UMC_RRUND			0x504
108 #define  UMC_RRFRG			0x508
109 #define  UMC_RRBYT			0x50c
110 #define  UMC_MIB_CNTRL			0x580
111 #define   UMC_MIB_CNTRL_RX_CNT_RST	BIT(0)
112 #define   UMC_MIB_CNTRL_RUNT_CNT_RST	BIT(1)
113 #define   UMC_MIB_CNTRL_TX_CNT_RST	BIT(2)
114 #define  UMC_RX_MAX_PKT_SZ		0x608
115 #define  UMC_MPD_CTRL			0x620
116 #define   UMC_MPD_CTRL_MPD_EN		BIT(0)
117 #define   UMC_MPD_CTRL_PSW_EN		BIT(27)
118 #define  UMC_PSW_MS			0x624
119 #define  UMC_PSW_LS			0x628
120 
121 #define UMAC2FB_OFFSET_2_1		0x9f044
122 #define UMAC2FB_OFFSET			0x9f03c
123 #define  UMAC2FB_CFG			0x0
124 #define   UMAC2FB_CFG_OPUT_EN		BIT(0)
125 #define   UMAC2FB_CFG_VLAN_EN		BIT(1)
126 #define   UMAC2FB_CFG_SNAP_EN		BIT(2)
127 #define   UMAC2FB_CFG_BCM_TG_EN		BIT(3)
128 #define   UMAC2FB_CFG_IPUT_EN		BIT(4)
129 #define   UMAC2FB_CFG_CHID_SHIFT	8
130 #define   UMAC2FB_CFG_OK_SEND_SHIFT	24
131 #define   UMAC2FB_CFG_DEFAULT_EN	\
132 		(UMAC2FB_CFG_OPUT_EN | UMAC2FB_CFG_VLAN_EN \
133 		| UMAC2FB_CFG_SNAP_EN | UMAC2FB_CFG_IPUT_EN)
134 
135 #define RGMII_OFFSET(intf)	\
136 	((((intf)->port) * 0x100) + 0xd000)
137 #define  RGMII_EPHY_CNTRL		0x00
138 #define    RGMII_EPHY_CFG_IDDQ_BIAS	BIT(0)
139 #define    RGMII_EPHY_CFG_EXT_PWRDOWN	BIT(1)
140 #define    RGMII_EPHY_CFG_FORCE_DLL_EN	BIT(2)
141 #define    RGMII_EPHY_CFG_IDDQ_GLOBAL	BIT(3)
142 #define    RGMII_EPHY_CK25_DIS		BIT(4)
143 #define    RGMII_EPHY_RESET		BIT(7)
144 #define  RGMII_OOB_CNTRL		0x0c
145 #define   RGMII_LINK			BIT(4)
146 #define   RGMII_OOB_DIS			BIT(5)
147 #define   RGMII_MODE_EN			BIT(6)
148 #define   RGMII_ID_MODE_DIS		BIT(16)
149 
150 #define RGMII_PORT_CNTRL		0x60
151 #define   RGMII_PORT_MODE_EPHY		0
152 #define   RGMII_PORT_MODE_GPHY		1
153 #define   RGMII_PORT_MODE_EXT_EPHY	2
154 #define   RGMII_PORT_MODE_EXT_GPHY	3
155 #define   RGMII_PORT_MODE_EXT_RVMII	4
156 #define   RGMII_PORT_MODE_MASK		GENMASK(2, 0)
157 
158 #define RGMII_SYS_LED_CNTRL		0x74
159 #define  RGMII_SYS_LED_CNTRL_LINK_OVRD	BIT(15)
160 
161 #define TX_SPB_DMA_OFFSET(intf) \
162 	((((intf)->channel) * 0x30) + 0x48180)
163 #define  TX_SPB_DMA_READ		0x00
164 #define  TX_SPB_DMA_BASE		0x08
165 #define  TX_SPB_DMA_END			0x10
166 #define  TX_SPB_DMA_VALID		0x18
167 #define  TX_SPB_DMA_FIFO_CTRL		0x20
168 #define   TX_SPB_DMA_FIFO_FLUSH		BIT(0)
169 #define  TX_SPB_DMA_FIFO_STATUS		0x24
170 
171 #define TX_SPB_CTRL_OFFSET(intf) \
172 	((((intf)->channel) * 0x68) + 0x49340)
173 #define  TX_SPB_CTRL_ENABLE		0x0
174 #define   TX_SPB_CTRL_ENABLE_EN		BIT(0)
175 #define  TX_SPB_CTRL_XF_CTRL2		0x20
176 #define   TX_SPB_CTRL_XF_BID_SHIFT	16
177 
178 #define TX_SPB_TOP_OFFSET(intf) \
179 	((((intf)->channel) * 0x1c) + 0x4a0e0)
180 #define TX_SPB_TOP_BLKOUT		0x0
181 #define TX_SPB_TOP_SPRE_BW_CTRL		0x4
182 
183 #define TX_EPKT_C_OFFSET(intf) \
184 	((((intf)->channel) * 0x120) + 0x40900)
185 #define  TX_EPKT_C_CFG_MISC		0x0
186 #define   TX_EPKT_C_CFG_MISC_EN		BIT(0)
187 #define   TX_EPKT_C_CFG_MISC_PT		BIT(1)
188 #define   TX_EPKT_C_CFG_MISC_PS_SHIFT	14
189 #define   TX_EPKT_C_CFG_MISC_FD_SHIFT	20
190 
191 #define TX_PAUSE_CTRL_OFFSET(intf) \
192 	((((intf)->channel * 0xc) + 0x49a20))
193 #define  TX_PAUSE_MAP_VECTOR		0x8
194 
195 #define RX_EDPKT_DMA_OFFSET(intf) \
196 	((((intf)->channel) * 0x38) + 0x9ca00)
197 #define  RX_EDPKT_DMA_WRITE		0x00
198 #define  RX_EDPKT_DMA_READ		0x08
199 #define  RX_EDPKT_DMA_BASE		0x10
200 #define  RX_EDPKT_DMA_END		0x18
201 #define  RX_EDPKT_DMA_VALID		0x20
202 #define  RX_EDPKT_DMA_FULLNESS		0x28
203 #define  RX_EDPKT_DMA_MIN_THRES		0x2c
204 #define  RX_EDPKT_DMA_CH_XONOFF		0x30
205 
206 #define RX_EDPKT_CFG_OFFSET(intf) \
207 	((((intf)->channel) * 0x70) + 0x9c600)
208 #define  RX_EDPKT_CFG_CFG0		0x0
209 #define   RX_EDPKT_CFG_CFG0_DBUF_SHIFT	9
210 #define    RX_EDPKT_CFG_CFG0_RBUF	0x0
211 #define    RX_EDPKT_CFG_CFG0_RBUF_4K	0x1
212 #define    RX_EDPKT_CFG_CFG0_BUF_4K	0x2
213 /* EFRM STUFF, 0 = no byte stuff, 1 = two byte stuff */
214 #define   RX_EDPKT_CFG_CFG0_EFRM_STUF	BIT(11)
215 #define   RX_EDPKT_CFG_CFG0_BALN_SHIFT	12
216 #define    RX_EDPKT_CFG_CFG0_NO_ALN	0
217 #define    RX_EDPKT_CFG_CFG0_4_ALN	2
218 #define    RX_EDPKT_CFG_CFG0_64_ALN	6
219 #define  RX_EDPKT_RING_BUFFER_WRITE	0x38
220 #define  RX_EDPKT_RING_BUFFER_READ	0x40
221 #define  RX_EDPKT_RING_BUFFER_BASE	0x48
222 #define  RX_EDPKT_RING_BUFFER_END	0x50
223 #define  RX_EDPKT_RING_BUFFER_VALID	0x58
224 #define  RX_EDPKT_CFG_ENABLE		0x6c
225 #define   RX_EDPKT_CFG_ENABLE_EN	BIT(0)
226 
227 #define RX_SPB_DMA_OFFSET(intf) \
228 	((((intf)->channel) * 0x30) + 0xa0000)
229 #define  RX_SPB_DMA_READ		0x00
230 #define  RX_SPB_DMA_BASE		0x08
231 #define  RX_SPB_DMA_END			0x10
232 #define  RX_SPB_DMA_VALID		0x18
233 #define  RX_SPB_DMA_FIFO_CTRL		0x20
234 #define   RX_SPB_DMA_FIFO_FLUSH		BIT(0)
235 #define  RX_SPB_DMA_FIFO_STATUS		0x24
236 
237 #define RX_SPB_CTRL_OFFSET(intf) \
238 	((((intf)->channel - 6) * 0x68) + 0xa1000)
239 #define  RX_SPB_CTRL_ENABLE		0x00
240 #define   RX_SPB_CTRL_ENABLE_EN		BIT(0)
241 
242 #define RX_PAUSE_CTRL_OFFSET(intf) \
243 	((((intf)->channel - 6) * 0x4) + 0xa1138)
244 #define  RX_PAUSE_MAP_VECTOR		0x00
245 
246 #define RX_SPB_TOP_CTRL_OFFSET(intf) \
247 	((((intf)->channel - 6) * 0x14) + 0xa2000)
248 #define  RX_SPB_TOP_BLKOUT		0x00
249 
250 #define NUM_4K_BUFFERS			32
251 #define RING_BUFFER_SIZE		(PAGE_SIZE * NUM_4K_BUFFERS)
252 
253 #define DESC_RING_COUNT			(64 * NUM_4K_BUFFERS)
254 #define DESC_SIZE			16
255 #define DESC_RING_SIZE			(DESC_RING_COUNT * DESC_SIZE)
256 
257 #endif
258