xref: /openbmc/linux/drivers/net/ethernet/broadcom/asp2/bcmasp_intf_defs.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1490cb412SJustin Chen /* SPDX-License-Identifier: GPL-2.0 */
2490cb412SJustin Chen #ifndef __BCMASP_INTF_DEFS_H
3490cb412SJustin Chen #define __BCMASP_INTF_DEFS_H
4490cb412SJustin Chen 
5490cb412SJustin Chen #define UMC_OFFSET(intf)		\
6490cb412SJustin Chen 	((((intf)->port) * 0x800) + 0xc000)
7490cb412SJustin Chen #define  UMC_CMD			0x008
8490cb412SJustin Chen #define   UMC_CMD_TX_EN			BIT(0)
9490cb412SJustin Chen #define   UMC_CMD_RX_EN			BIT(1)
10490cb412SJustin Chen #define   UMC_CMD_SPEED_SHIFT		0x2
11490cb412SJustin Chen #define    UMC_CMD_SPEED_MASK		0x3
12490cb412SJustin Chen #define    UMC_CMD_SPEED_10		0x0
13490cb412SJustin Chen #define    UMC_CMD_SPEED_100		0x1
14490cb412SJustin Chen #define    UMC_CMD_SPEED_1000		0x2
15490cb412SJustin Chen #define    UMC_CMD_SPEED_2500		0x3
16490cb412SJustin Chen #define   UMC_CMD_PROMISC		BIT(4)
17490cb412SJustin Chen #define   UMC_CMD_PAD_EN		BIT(5)
18490cb412SJustin Chen #define   UMC_CMD_CRC_FWD		BIT(6)
19490cb412SJustin Chen #define   UMC_CMD_PAUSE_FWD		BIT(7)
20490cb412SJustin Chen #define   UMC_CMD_RX_PAUSE_IGNORE	BIT(8)
21490cb412SJustin Chen #define   UMC_CMD_TX_ADDR_INS		BIT(9)
22490cb412SJustin Chen #define   UMC_CMD_HD_EN			BIT(10)
23490cb412SJustin Chen #define   UMC_CMD_SW_RESET		BIT(13)
24490cb412SJustin Chen #define   UMC_CMD_LCL_LOOP_EN		BIT(15)
25490cb412SJustin Chen #define   UMC_CMD_AUTO_CONFIG		BIT(22)
26490cb412SJustin Chen #define   UMC_CMD_CNTL_FRM_EN		BIT(23)
27490cb412SJustin Chen #define   UMC_CMD_NO_LEN_CHK		BIT(24)
28490cb412SJustin Chen #define   UMC_CMD_RMT_LOOP_EN		BIT(25)
29490cb412SJustin Chen #define   UMC_CMD_PRBL_EN		BIT(27)
30490cb412SJustin Chen #define   UMC_CMD_TX_PAUSE_IGNORE	BIT(28)
31490cb412SJustin Chen #define   UMC_CMD_TX_RX_EN		BIT(29)
32490cb412SJustin Chen #define   UMC_CMD_RUNT_FILTER_DIS	BIT(30)
33490cb412SJustin Chen #define  UMC_MAC0			0x0c
34490cb412SJustin Chen #define  UMC_MAC1			0x10
35490cb412SJustin Chen #define  UMC_FRM_LEN			0x14
36490cb412SJustin Chen #define  UMC_EEE_CTRL			0x64
37490cb412SJustin Chen #define   EN_LPI_RX_PAUSE		BIT(0)
38490cb412SJustin Chen #define   EN_LPI_TX_PFC			BIT(1)
39490cb412SJustin Chen #define   EN_LPI_TX_PAUSE		BIT(2)
40490cb412SJustin Chen #define   EEE_EN			BIT(3)
41490cb412SJustin Chen #define   RX_FIFO_CHECK			BIT(4)
42490cb412SJustin Chen #define   EEE_TX_CLK_DIS		BIT(5)
43490cb412SJustin Chen #define   DIS_EEE_10M			BIT(6)
44490cb412SJustin Chen #define   LP_IDLE_PREDICTION_MODE	BIT(7)
45490cb412SJustin Chen #define  UMC_EEE_LPI_TIMER		0x68
46490cb412SJustin Chen #define  UMC_PAUSE_CNTRL		0x330
47490cb412SJustin Chen #define  UMC_TX_FLUSH			0x334
48*64931534SJustin Chen #define  UMC_GR64			0x400
49*64931534SJustin Chen #define  UMC_GR127			0x404
50*64931534SJustin Chen #define  UMC_GR255			0x408
51*64931534SJustin Chen #define  UMC_GR511			0x40c
52*64931534SJustin Chen #define  UMC_GR1023			0x410
53*64931534SJustin Chen #define  UMC_GR1518			0x414
54*64931534SJustin Chen #define  UMC_GRMGV			0x418
55*64931534SJustin Chen #define  UMC_GR2047			0x41c
56*64931534SJustin Chen #define  UMC_GR4095			0x420
57*64931534SJustin Chen #define  UMC_GR9216			0x424
58*64931534SJustin Chen #define  UMC_GRPKT			0x428
59*64931534SJustin Chen #define  UMC_GRBYT			0x42c
60*64931534SJustin Chen #define  UMC_GRMCA			0x430
61*64931534SJustin Chen #define  UMC_GRBCA			0x434
62*64931534SJustin Chen #define  UMC_GRFCS			0x438
63*64931534SJustin Chen #define  UMC_GRXCF			0x43c
64*64931534SJustin Chen #define  UMC_GRXPF			0x440
65*64931534SJustin Chen #define  UMC_GRXUO			0x444
66*64931534SJustin Chen #define  UMC_GRALN			0x448
67*64931534SJustin Chen #define  UMC_GRFLR			0x44c
68*64931534SJustin Chen #define  UMC_GRCDE			0x450
69*64931534SJustin Chen #define  UMC_GRFCR			0x454
70*64931534SJustin Chen #define  UMC_GROVR			0x458
71*64931534SJustin Chen #define  UMC_GRJBR			0x45c
72*64931534SJustin Chen #define  UMC_GRMTUE			0x460
73*64931534SJustin Chen #define  UMC_GRPOK			0x464
74*64931534SJustin Chen #define  UMC_GRUC			0x468
75*64931534SJustin Chen #define  UMC_GRPPP			0x46c
76*64931534SJustin Chen #define  UMC_GRMCRC			0x470
77*64931534SJustin Chen #define  UMC_TR64			0x480
78*64931534SJustin Chen #define  UMC_TR127			0x484
79*64931534SJustin Chen #define  UMC_TR255			0x488
80*64931534SJustin Chen #define  UMC_TR511			0x48c
81*64931534SJustin Chen #define  UMC_TR1023			0x490
82*64931534SJustin Chen #define  UMC_TR1518			0x494
83*64931534SJustin Chen #define  UMC_TRMGV			0x498
84*64931534SJustin Chen #define  UMC_TR2047			0x49c
85*64931534SJustin Chen #define  UMC_TR4095			0x4a0
86*64931534SJustin Chen #define  UMC_TR9216			0x4a4
87*64931534SJustin Chen #define  UMC_GTPKT			0x4a8
88*64931534SJustin Chen #define  UMC_GTMCA			0x4ac
89*64931534SJustin Chen #define  UMC_GTBCA			0x4b0
90*64931534SJustin Chen #define  UMC_GTXPF			0x4b4
91*64931534SJustin Chen #define  UMC_GTXCF			0x4b8
92*64931534SJustin Chen #define  UMC_GTFCS			0x4bc
93*64931534SJustin Chen #define  UMC_GTOVR			0x4c0
94*64931534SJustin Chen #define  UMC_GTDRF			0x4c4
95*64931534SJustin Chen #define  UMC_GTEDF			0x4c8
96*64931534SJustin Chen #define  UMC_GTSCL			0x4cc
97*64931534SJustin Chen #define  UMC_GTMCL			0x4d0
98*64931534SJustin Chen #define  UMC_GTLCL			0x4d4
99*64931534SJustin Chen #define  UMC_GTXCL			0x4d8
100*64931534SJustin Chen #define  UMC_GTFRG			0x4dc
101*64931534SJustin Chen #define  UMC_GTNCL			0x4e0
102*64931534SJustin Chen #define  UMC_GTJBR			0x4e4
103*64931534SJustin Chen #define  UMC_GTBYT			0x4e8
104*64931534SJustin Chen #define  UMC_GTPOK			0x4ec
105*64931534SJustin Chen #define  UMC_GTUC			0x4f0
106*64931534SJustin Chen #define  UMC_RRPKT			0x500
107*64931534SJustin Chen #define  UMC_RRUND			0x504
108*64931534SJustin Chen #define  UMC_RRFRG			0x508
109*64931534SJustin Chen #define  UMC_RRBYT			0x50c
110490cb412SJustin Chen #define  UMC_MIB_CNTRL			0x580
111490cb412SJustin Chen #define   UMC_MIB_CNTRL_RX_CNT_RST	BIT(0)
112490cb412SJustin Chen #define   UMC_MIB_CNTRL_RUNT_CNT_RST	BIT(1)
113490cb412SJustin Chen #define   UMC_MIB_CNTRL_TX_CNT_RST	BIT(2)
114490cb412SJustin Chen #define  UMC_RX_MAX_PKT_SZ		0x608
115490cb412SJustin Chen #define  UMC_MPD_CTRL			0x620
116490cb412SJustin Chen #define   UMC_MPD_CTRL_MPD_EN		BIT(0)
117490cb412SJustin Chen #define   UMC_MPD_CTRL_PSW_EN		BIT(27)
118490cb412SJustin Chen #define  UMC_PSW_MS			0x624
119490cb412SJustin Chen #define  UMC_PSW_LS			0x628
120490cb412SJustin Chen 
121490cb412SJustin Chen #define UMAC2FB_OFFSET_2_1		0x9f044
122490cb412SJustin Chen #define UMAC2FB_OFFSET			0x9f03c
123490cb412SJustin Chen #define  UMAC2FB_CFG			0x0
124490cb412SJustin Chen #define   UMAC2FB_CFG_OPUT_EN		BIT(0)
125490cb412SJustin Chen #define   UMAC2FB_CFG_VLAN_EN		BIT(1)
126490cb412SJustin Chen #define   UMAC2FB_CFG_SNAP_EN		BIT(2)
127490cb412SJustin Chen #define   UMAC2FB_CFG_BCM_TG_EN		BIT(3)
128490cb412SJustin Chen #define   UMAC2FB_CFG_IPUT_EN		BIT(4)
129490cb412SJustin Chen #define   UMAC2FB_CFG_CHID_SHIFT	8
130490cb412SJustin Chen #define   UMAC2FB_CFG_OK_SEND_SHIFT	24
131490cb412SJustin Chen #define   UMAC2FB_CFG_DEFAULT_EN	\
132490cb412SJustin Chen 		(UMAC2FB_CFG_OPUT_EN | UMAC2FB_CFG_VLAN_EN \
133490cb412SJustin Chen 		| UMAC2FB_CFG_SNAP_EN | UMAC2FB_CFG_IPUT_EN)
134490cb412SJustin Chen 
135490cb412SJustin Chen #define RGMII_OFFSET(intf)	\
136490cb412SJustin Chen 	((((intf)->port) * 0x100) + 0xd000)
137490cb412SJustin Chen #define  RGMII_EPHY_CNTRL		0x00
138490cb412SJustin Chen #define    RGMII_EPHY_CFG_IDDQ_BIAS	BIT(0)
139490cb412SJustin Chen #define    RGMII_EPHY_CFG_EXT_PWRDOWN	BIT(1)
140490cb412SJustin Chen #define    RGMII_EPHY_CFG_FORCE_DLL_EN	BIT(2)
141490cb412SJustin Chen #define    RGMII_EPHY_CFG_IDDQ_GLOBAL	BIT(3)
142490cb412SJustin Chen #define    RGMII_EPHY_CK25_DIS		BIT(4)
143490cb412SJustin Chen #define    RGMII_EPHY_RESET		BIT(7)
144490cb412SJustin Chen #define  RGMII_OOB_CNTRL		0x0c
145490cb412SJustin Chen #define   RGMII_LINK			BIT(4)
146490cb412SJustin Chen #define   RGMII_OOB_DIS			BIT(5)
147490cb412SJustin Chen #define   RGMII_MODE_EN			BIT(6)
148490cb412SJustin Chen #define   RGMII_ID_MODE_DIS		BIT(16)
149490cb412SJustin Chen 
150490cb412SJustin Chen #define RGMII_PORT_CNTRL		0x60
151490cb412SJustin Chen #define   RGMII_PORT_MODE_EPHY		0
152490cb412SJustin Chen #define   RGMII_PORT_MODE_GPHY		1
153490cb412SJustin Chen #define   RGMII_PORT_MODE_EXT_EPHY	2
154490cb412SJustin Chen #define   RGMII_PORT_MODE_EXT_GPHY	3
155490cb412SJustin Chen #define   RGMII_PORT_MODE_EXT_RVMII	4
156490cb412SJustin Chen #define   RGMII_PORT_MODE_MASK		GENMASK(2, 0)
157490cb412SJustin Chen 
158490cb412SJustin Chen #define RGMII_SYS_LED_CNTRL		0x74
159490cb412SJustin Chen #define  RGMII_SYS_LED_CNTRL_LINK_OVRD	BIT(15)
160490cb412SJustin Chen 
161490cb412SJustin Chen #define TX_SPB_DMA_OFFSET(intf) \
162490cb412SJustin Chen 	((((intf)->channel) * 0x30) + 0x48180)
163490cb412SJustin Chen #define  TX_SPB_DMA_READ		0x00
164490cb412SJustin Chen #define  TX_SPB_DMA_BASE		0x08
165490cb412SJustin Chen #define  TX_SPB_DMA_END			0x10
166490cb412SJustin Chen #define  TX_SPB_DMA_VALID		0x18
167490cb412SJustin Chen #define  TX_SPB_DMA_FIFO_CTRL		0x20
168490cb412SJustin Chen #define   TX_SPB_DMA_FIFO_FLUSH		BIT(0)
169490cb412SJustin Chen #define  TX_SPB_DMA_FIFO_STATUS		0x24
170490cb412SJustin Chen 
171490cb412SJustin Chen #define TX_SPB_CTRL_OFFSET(intf) \
172490cb412SJustin Chen 	((((intf)->channel) * 0x68) + 0x49340)
173490cb412SJustin Chen #define  TX_SPB_CTRL_ENABLE		0x0
174490cb412SJustin Chen #define   TX_SPB_CTRL_ENABLE_EN		BIT(0)
175490cb412SJustin Chen #define  TX_SPB_CTRL_XF_CTRL2		0x20
176490cb412SJustin Chen #define   TX_SPB_CTRL_XF_BID_SHIFT	16
177490cb412SJustin Chen 
178490cb412SJustin Chen #define TX_SPB_TOP_OFFSET(intf) \
179490cb412SJustin Chen 	((((intf)->channel) * 0x1c) + 0x4a0e0)
180490cb412SJustin Chen #define TX_SPB_TOP_BLKOUT		0x0
181490cb412SJustin Chen #define TX_SPB_TOP_SPRE_BW_CTRL		0x4
182490cb412SJustin Chen 
183490cb412SJustin Chen #define TX_EPKT_C_OFFSET(intf) \
184490cb412SJustin Chen 	((((intf)->channel) * 0x120) + 0x40900)
185490cb412SJustin Chen #define  TX_EPKT_C_CFG_MISC		0x0
186490cb412SJustin Chen #define   TX_EPKT_C_CFG_MISC_EN		BIT(0)
187490cb412SJustin Chen #define   TX_EPKT_C_CFG_MISC_PT		BIT(1)
188490cb412SJustin Chen #define   TX_EPKT_C_CFG_MISC_PS_SHIFT	14
189490cb412SJustin Chen #define   TX_EPKT_C_CFG_MISC_FD_SHIFT	20
190490cb412SJustin Chen 
191490cb412SJustin Chen #define TX_PAUSE_CTRL_OFFSET(intf) \
192490cb412SJustin Chen 	((((intf)->channel * 0xc) + 0x49a20))
193490cb412SJustin Chen #define  TX_PAUSE_MAP_VECTOR		0x8
194490cb412SJustin Chen 
195490cb412SJustin Chen #define RX_EDPKT_DMA_OFFSET(intf) \
196490cb412SJustin Chen 	((((intf)->channel) * 0x38) + 0x9ca00)
197490cb412SJustin Chen #define  RX_EDPKT_DMA_WRITE		0x00
198490cb412SJustin Chen #define  RX_EDPKT_DMA_READ		0x08
199490cb412SJustin Chen #define  RX_EDPKT_DMA_BASE		0x10
200490cb412SJustin Chen #define  RX_EDPKT_DMA_END		0x18
201490cb412SJustin Chen #define  RX_EDPKT_DMA_VALID		0x20
202490cb412SJustin Chen #define  RX_EDPKT_DMA_FULLNESS		0x28
203490cb412SJustin Chen #define  RX_EDPKT_DMA_MIN_THRES		0x2c
204490cb412SJustin Chen #define  RX_EDPKT_DMA_CH_XONOFF		0x30
205490cb412SJustin Chen 
206490cb412SJustin Chen #define RX_EDPKT_CFG_OFFSET(intf) \
207490cb412SJustin Chen 	((((intf)->channel) * 0x70) + 0x9c600)
208490cb412SJustin Chen #define  RX_EDPKT_CFG_CFG0		0x0
209490cb412SJustin Chen #define   RX_EDPKT_CFG_CFG0_DBUF_SHIFT	9
210490cb412SJustin Chen #define    RX_EDPKT_CFG_CFG0_RBUF	0x0
211490cb412SJustin Chen #define    RX_EDPKT_CFG_CFG0_RBUF_4K	0x1
212490cb412SJustin Chen #define    RX_EDPKT_CFG_CFG0_BUF_4K	0x2
213490cb412SJustin Chen /* EFRM STUFF, 0 = no byte stuff, 1 = two byte stuff */
214490cb412SJustin Chen #define   RX_EDPKT_CFG_CFG0_EFRM_STUF	BIT(11)
215490cb412SJustin Chen #define   RX_EDPKT_CFG_CFG0_BALN_SHIFT	12
216490cb412SJustin Chen #define    RX_EDPKT_CFG_CFG0_NO_ALN	0
217490cb412SJustin Chen #define    RX_EDPKT_CFG_CFG0_4_ALN	2
218490cb412SJustin Chen #define    RX_EDPKT_CFG_CFG0_64_ALN	6
219490cb412SJustin Chen #define  RX_EDPKT_RING_BUFFER_WRITE	0x38
220490cb412SJustin Chen #define  RX_EDPKT_RING_BUFFER_READ	0x40
221490cb412SJustin Chen #define  RX_EDPKT_RING_BUFFER_BASE	0x48
222490cb412SJustin Chen #define  RX_EDPKT_RING_BUFFER_END	0x50
223490cb412SJustin Chen #define  RX_EDPKT_RING_BUFFER_VALID	0x58
224490cb412SJustin Chen #define  RX_EDPKT_CFG_ENABLE		0x6c
225490cb412SJustin Chen #define   RX_EDPKT_CFG_ENABLE_EN	BIT(0)
226490cb412SJustin Chen 
227490cb412SJustin Chen #define RX_SPB_DMA_OFFSET(intf) \
228490cb412SJustin Chen 	((((intf)->channel) * 0x30) + 0xa0000)
229490cb412SJustin Chen #define  RX_SPB_DMA_READ		0x00
230490cb412SJustin Chen #define  RX_SPB_DMA_BASE		0x08
231490cb412SJustin Chen #define  RX_SPB_DMA_END			0x10
232490cb412SJustin Chen #define  RX_SPB_DMA_VALID		0x18
233490cb412SJustin Chen #define  RX_SPB_DMA_FIFO_CTRL		0x20
234490cb412SJustin Chen #define   RX_SPB_DMA_FIFO_FLUSH		BIT(0)
235490cb412SJustin Chen #define  RX_SPB_DMA_FIFO_STATUS		0x24
236490cb412SJustin Chen 
237490cb412SJustin Chen #define RX_SPB_CTRL_OFFSET(intf) \
238490cb412SJustin Chen 	((((intf)->channel - 6) * 0x68) + 0xa1000)
239490cb412SJustin Chen #define  RX_SPB_CTRL_ENABLE		0x00
240490cb412SJustin Chen #define   RX_SPB_CTRL_ENABLE_EN		BIT(0)
241490cb412SJustin Chen 
242490cb412SJustin Chen #define RX_PAUSE_CTRL_OFFSET(intf) \
243490cb412SJustin Chen 	((((intf)->channel - 6) * 0x4) + 0xa1138)
244490cb412SJustin Chen #define  RX_PAUSE_MAP_VECTOR		0x00
245490cb412SJustin Chen 
246490cb412SJustin Chen #define RX_SPB_TOP_CTRL_OFFSET(intf) \
247490cb412SJustin Chen 	((((intf)->channel - 6) * 0x14) + 0xa2000)
248490cb412SJustin Chen #define  RX_SPB_TOP_BLKOUT		0x00
249490cb412SJustin Chen 
250490cb412SJustin Chen #define NUM_4K_BUFFERS			32
251490cb412SJustin Chen #define RING_BUFFER_SIZE		(PAGE_SIZE * NUM_4K_BUFFERS)
252490cb412SJustin Chen 
253490cb412SJustin Chen #define DESC_RING_COUNT			(64 * NUM_4K_BUFFERS)
254490cb412SJustin Chen #define DESC_SIZE			16
255490cb412SJustin Chen #define DESC_RING_SIZE			(DESC_RING_COUNT * DESC_SIZE)
256490cb412SJustin Chen 
257490cb412SJustin Chen #endif
258