xref: /OK3568_Linux_fs/kernel/drivers/net/dsa/microchip/ksz8795_reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Microchip KSZ8795 register definitions
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (c) 2017 Microchip Technology Inc.
6*4882a593Smuzhiyun  *	Tristram Ha <Tristram.Ha@microchip.com>
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef __KSZ8795_REG_H
10*4882a593Smuzhiyun #define __KSZ8795_REG_H
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define KS_PORT_M			0x1F
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #define KS_PRIO_M			0x3
15*4882a593Smuzhiyun #define KS_PRIO_S			2
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #define REG_CHIP_ID0			0x00
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #define FAMILY_ID			0x87
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #define REG_CHIP_ID1			0x01
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define SW_CHIP_ID_M			0xF0
24*4882a593Smuzhiyun #define SW_CHIP_ID_S			4
25*4882a593Smuzhiyun #define SW_REVISION_M			0x0E
26*4882a593Smuzhiyun #define SW_REVISION_S			1
27*4882a593Smuzhiyun #define SW_START			0x01
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define CHIP_ID_94			0x60
30*4882a593Smuzhiyun #define CHIP_ID_95			0x90
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define REG_SW_CTRL_0			0x02
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define SW_NEW_BACKOFF			BIT(7)
35*4882a593Smuzhiyun #define SW_GLOBAL_RESET			BIT(6)
36*4882a593Smuzhiyun #define SW_FLUSH_DYN_MAC_TABLE		BIT(5)
37*4882a593Smuzhiyun #define SW_FLUSH_STA_MAC_TABLE		BIT(4)
38*4882a593Smuzhiyun #define SW_LINK_AUTO_AGING		BIT(0)
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #define REG_SW_CTRL_1			0x03
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun #define SW_HUGE_PACKET			BIT(6)
43*4882a593Smuzhiyun #define SW_TX_FLOW_CTRL_DISABLE		BIT(5)
44*4882a593Smuzhiyun #define SW_RX_FLOW_CTRL_DISABLE		BIT(4)
45*4882a593Smuzhiyun #define SW_CHECK_LENGTH			BIT(3)
46*4882a593Smuzhiyun #define SW_AGING_ENABLE			BIT(2)
47*4882a593Smuzhiyun #define SW_FAST_AGING			BIT(1)
48*4882a593Smuzhiyun #define SW_AGGR_BACKOFF			BIT(0)
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #define REG_SW_CTRL_2			0x04
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define UNICAST_VLAN_BOUNDARY		BIT(7)
53*4882a593Smuzhiyun #define MULTICAST_STORM_DISABLE		BIT(6)
54*4882a593Smuzhiyun #define SW_BACK_PRESSURE		BIT(5)
55*4882a593Smuzhiyun #define FAIR_FLOW_CTRL			BIT(4)
56*4882a593Smuzhiyun #define NO_EXC_COLLISION_DROP		BIT(3)
57*4882a593Smuzhiyun #define SW_LEGAL_PACKET_DISABLE		BIT(1)
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun #define REG_SW_CTRL_3			0x05
60*4882a593Smuzhiyun  #define WEIGHTED_FAIR_QUEUE_ENABLE	BIT(3)
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun #define SW_VLAN_ENABLE			BIT(7)
63*4882a593Smuzhiyun #define SW_IGMP_SNOOP			BIT(6)
64*4882a593Smuzhiyun #define SW_MIRROR_RX_TX			BIT(0)
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun #define REG_SW_CTRL_4			0x06
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun #define SW_HALF_DUPLEX_FLOW_CTRL	BIT(7)
69*4882a593Smuzhiyun #define SW_HALF_DUPLEX			BIT(6)
70*4882a593Smuzhiyun #define SW_FLOW_CTRL			BIT(5)
71*4882a593Smuzhiyun #define SW_10_MBIT			BIT(4)
72*4882a593Smuzhiyun #define SW_REPLACE_VID			BIT(3)
73*4882a593Smuzhiyun #define BROADCAST_STORM_RATE_HI		0x07
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define REG_SW_CTRL_5			0x07
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define BROADCAST_STORM_RATE_LO		0xFF
78*4882a593Smuzhiyun #define BROADCAST_STORM_RATE		0x07FF
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #define REG_SW_CTRL_6			0x08
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #define SW_MIB_COUNTER_FLUSH		BIT(7)
83*4882a593Smuzhiyun #define SW_MIB_COUNTER_FREEZE		BIT(6)
84*4882a593Smuzhiyun #define SW_MIB_COUNTER_CTRL_ENABLE	KS_PORT_M
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define REG_SW_CTRL_9			0x0B
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define SPI_CLK_125_MHZ			0x80
89*4882a593Smuzhiyun #define SPI_CLK_62_5_MHZ		0x40
90*4882a593Smuzhiyun #define SPI_CLK_31_25_MHZ		0x00
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #define SW_LED_MODE_M			0x3
93*4882a593Smuzhiyun #define SW_LED_MODE_S			4
94*4882a593Smuzhiyun #define SW_LED_LINK_ACT_SPEED		0
95*4882a593Smuzhiyun #define SW_LED_LINK_ACT			1
96*4882a593Smuzhiyun #define SW_LED_LINK_ACT_DUPLEX		2
97*4882a593Smuzhiyun #define SW_LED_LINK_DUPLEX		3
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun #define REG_SW_CTRL_10			0x0C
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define SW_TAIL_TAG_ENABLE		BIT(1)
102*4882a593Smuzhiyun #define SW_PASS_PAUSE			BIT(0)
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun #define REG_SW_CTRL_11			0x0D
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun #define REG_POWER_MANAGEMENT_1		0x0E
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #define SW_PLL_POWER_DOWN		BIT(5)
109*4882a593Smuzhiyun #define SW_POWER_MANAGEMENT_MODE_M	0x3
110*4882a593Smuzhiyun #define SW_POWER_MANAGEMENT_MODE_S	3
111*4882a593Smuzhiyun #define SW_POWER_NORMAL			0
112*4882a593Smuzhiyun #define SW_ENERGY_DETECTION		1
113*4882a593Smuzhiyun #define SW_SOFTWARE_POWER_DOWN		2
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #define REG_POWER_MANAGEMENT_2		0x0F
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #define REG_PORT_1_CTRL_0		0x10
118*4882a593Smuzhiyun #define REG_PORT_2_CTRL_0		0x20
119*4882a593Smuzhiyun #define REG_PORT_3_CTRL_0		0x30
120*4882a593Smuzhiyun #define REG_PORT_4_CTRL_0		0x40
121*4882a593Smuzhiyun #define REG_PORT_5_CTRL_0		0x50
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun #define PORT_BROADCAST_STORM		BIT(7)
124*4882a593Smuzhiyun #define PORT_DIFFSERV_ENABLE		BIT(6)
125*4882a593Smuzhiyun #define PORT_802_1P_ENABLE		BIT(5)
126*4882a593Smuzhiyun #define PORT_BASED_PRIO_S		3
127*4882a593Smuzhiyun #define PORT_BASED_PRIO_M		KS_PRIO_M
128*4882a593Smuzhiyun #define PORT_BASED_PRIO_0		0
129*4882a593Smuzhiyun #define PORT_BASED_PRIO_1		1
130*4882a593Smuzhiyun #define PORT_BASED_PRIO_2		2
131*4882a593Smuzhiyun #define PORT_BASED_PRIO_3		3
132*4882a593Smuzhiyun #define PORT_INSERT_TAG			BIT(2)
133*4882a593Smuzhiyun #define PORT_REMOVE_TAG			BIT(1)
134*4882a593Smuzhiyun #define PORT_QUEUE_SPLIT_L		BIT(0)
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun #define REG_PORT_1_CTRL_1		0x11
137*4882a593Smuzhiyun #define REG_PORT_2_CTRL_1		0x21
138*4882a593Smuzhiyun #define REG_PORT_3_CTRL_1		0x31
139*4882a593Smuzhiyun #define REG_PORT_4_CTRL_1		0x41
140*4882a593Smuzhiyun #define REG_PORT_5_CTRL_1		0x51
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #define PORT_MIRROR_SNIFFER		BIT(7)
143*4882a593Smuzhiyun #define PORT_MIRROR_RX			BIT(6)
144*4882a593Smuzhiyun #define PORT_MIRROR_TX			BIT(5)
145*4882a593Smuzhiyun #define PORT_VLAN_MEMBERSHIP		KS_PORT_M
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun #define REG_PORT_1_CTRL_2		0x12
148*4882a593Smuzhiyun #define REG_PORT_2_CTRL_2		0x22
149*4882a593Smuzhiyun #define REG_PORT_3_CTRL_2		0x32
150*4882a593Smuzhiyun #define REG_PORT_4_CTRL_2		0x42
151*4882a593Smuzhiyun #define REG_PORT_5_CTRL_2		0x52
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun #define PORT_802_1P_REMAPPING		BIT(7)
154*4882a593Smuzhiyun #define PORT_INGRESS_FILTER		BIT(6)
155*4882a593Smuzhiyun #define PORT_DISCARD_NON_VID		BIT(5)
156*4882a593Smuzhiyun #define PORT_FORCE_FLOW_CTRL		BIT(4)
157*4882a593Smuzhiyun #define PORT_BACK_PRESSURE		BIT(3)
158*4882a593Smuzhiyun #define PORT_TX_ENABLE			BIT(2)
159*4882a593Smuzhiyun #define PORT_RX_ENABLE			BIT(1)
160*4882a593Smuzhiyun #define PORT_LEARN_DISABLE		BIT(0)
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun #define REG_PORT_1_CTRL_3		0x13
163*4882a593Smuzhiyun #define REG_PORT_2_CTRL_3		0x23
164*4882a593Smuzhiyun #define REG_PORT_3_CTRL_3		0x33
165*4882a593Smuzhiyun #define REG_PORT_4_CTRL_3		0x43
166*4882a593Smuzhiyun #define REG_PORT_5_CTRL_3		0x53
167*4882a593Smuzhiyun #define REG_PORT_1_CTRL_4		0x14
168*4882a593Smuzhiyun #define REG_PORT_2_CTRL_4		0x24
169*4882a593Smuzhiyun #define REG_PORT_3_CTRL_4		0x34
170*4882a593Smuzhiyun #define REG_PORT_4_CTRL_4		0x44
171*4882a593Smuzhiyun #define REG_PORT_5_CTRL_4		0x54
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #define PORT_DEFAULT_VID		0x0001
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun #define REG_PORT_1_CTRL_5		0x15
176*4882a593Smuzhiyun #define REG_PORT_2_CTRL_5		0x25
177*4882a593Smuzhiyun #define REG_PORT_3_CTRL_5		0x35
178*4882a593Smuzhiyun #define REG_PORT_4_CTRL_5		0x45
179*4882a593Smuzhiyun #define REG_PORT_5_CTRL_5		0x55
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun #define PORT_ACL_ENABLE			BIT(2)
182*4882a593Smuzhiyun #define PORT_AUTHEN_MODE		0x3
183*4882a593Smuzhiyun #define PORT_AUTHEN_PASS		0
184*4882a593Smuzhiyun #define PORT_AUTHEN_BLOCK		1
185*4882a593Smuzhiyun #define PORT_AUTHEN_TRAP		2
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun #define REG_PORT_5_CTRL_6		0x56
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun #define PORT_MII_INTERNAL_CLOCK		BIT(7)
190*4882a593Smuzhiyun #define PORT_GMII_1GPS_MODE		BIT(6)
191*4882a593Smuzhiyun #define PORT_RGMII_ID_IN_ENABLE		BIT(4)
192*4882a593Smuzhiyun #define PORT_RGMII_ID_OUT_ENABLE	BIT(3)
193*4882a593Smuzhiyun #define PORT_GMII_MAC_MODE		BIT(2)
194*4882a593Smuzhiyun #define PORT_INTERFACE_TYPE		0x3
195*4882a593Smuzhiyun #define PORT_INTERFACE_MII		0
196*4882a593Smuzhiyun #define PORT_INTERFACE_RMII		1
197*4882a593Smuzhiyun #define PORT_INTERFACE_GMII		2
198*4882a593Smuzhiyun #define PORT_INTERFACE_RGMII		3
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #define REG_PORT_1_CTRL_7		0x17
201*4882a593Smuzhiyun #define REG_PORT_2_CTRL_7		0x27
202*4882a593Smuzhiyun #define REG_PORT_3_CTRL_7		0x37
203*4882a593Smuzhiyun #define REG_PORT_4_CTRL_7		0x47
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun #define PORT_AUTO_NEG_ASYM_PAUSE	BIT(5)
206*4882a593Smuzhiyun #define PORT_AUTO_NEG_SYM_PAUSE		BIT(4)
207*4882a593Smuzhiyun #define PORT_AUTO_NEG_100BTX_FD		BIT(3)
208*4882a593Smuzhiyun #define PORT_AUTO_NEG_100BTX		BIT(2)
209*4882a593Smuzhiyun #define PORT_AUTO_NEG_10BT_FD		BIT(1)
210*4882a593Smuzhiyun #define PORT_AUTO_NEG_10BT		BIT(0)
211*4882a593Smuzhiyun 
212*4882a593Smuzhiyun #define REG_PORT_1_STATUS_0		0x18
213*4882a593Smuzhiyun #define REG_PORT_2_STATUS_0		0x28
214*4882a593Smuzhiyun #define REG_PORT_3_STATUS_0		0x38
215*4882a593Smuzhiyun #define REG_PORT_4_STATUS_0		0x48
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun /* For KSZ8765. */
218*4882a593Smuzhiyun #define PORT_FIBER_MODE			BIT(7)
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun #define PORT_REMOTE_ASYM_PAUSE		BIT(5)
221*4882a593Smuzhiyun #define PORT_REMOTE_SYM_PAUSE		BIT(4)
222*4882a593Smuzhiyun #define PORT_REMOTE_100BTX_FD		BIT(3)
223*4882a593Smuzhiyun #define PORT_REMOTE_100BTX		BIT(2)
224*4882a593Smuzhiyun #define PORT_REMOTE_10BT_FD		BIT(1)
225*4882a593Smuzhiyun #define PORT_REMOTE_10BT		BIT(0)
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun #define REG_PORT_1_STATUS_1		0x19
228*4882a593Smuzhiyun #define REG_PORT_2_STATUS_1		0x29
229*4882a593Smuzhiyun #define REG_PORT_3_STATUS_1		0x39
230*4882a593Smuzhiyun #define REG_PORT_4_STATUS_1		0x49
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun #define PORT_HP_MDIX			BIT(7)
233*4882a593Smuzhiyun #define PORT_REVERSED_POLARITY		BIT(5)
234*4882a593Smuzhiyun #define PORT_TX_FLOW_CTRL		BIT(4)
235*4882a593Smuzhiyun #define PORT_RX_FLOW_CTRL		BIT(3)
236*4882a593Smuzhiyun #define PORT_STAT_SPEED_100MBIT		BIT(2)
237*4882a593Smuzhiyun #define PORT_STAT_FULL_DUPLEX		BIT(1)
238*4882a593Smuzhiyun 
239*4882a593Smuzhiyun #define PORT_REMOTE_FAULT		BIT(0)
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun #define REG_PORT_1_LINK_MD_CTRL		0x1A
242*4882a593Smuzhiyun #define REG_PORT_2_LINK_MD_CTRL		0x2A
243*4882a593Smuzhiyun #define REG_PORT_3_LINK_MD_CTRL		0x3A
244*4882a593Smuzhiyun #define REG_PORT_4_LINK_MD_CTRL		0x4A
245*4882a593Smuzhiyun 
246*4882a593Smuzhiyun #define PORT_CABLE_10M_SHORT		BIT(7)
247*4882a593Smuzhiyun #define PORT_CABLE_DIAG_RESULT_M	0x3
248*4882a593Smuzhiyun #define PORT_CABLE_DIAG_RESULT_S	5
249*4882a593Smuzhiyun #define PORT_CABLE_STAT_NORMAL		0
250*4882a593Smuzhiyun #define PORT_CABLE_STAT_OPEN		1
251*4882a593Smuzhiyun #define PORT_CABLE_STAT_SHORT		2
252*4882a593Smuzhiyun #define PORT_CABLE_STAT_FAILED		3
253*4882a593Smuzhiyun #define PORT_START_CABLE_DIAG		BIT(4)
254*4882a593Smuzhiyun #define PORT_FORCE_LINK			BIT(3)
255*4882a593Smuzhiyun #define PORT_POWER_SAVING		BIT(2)
256*4882a593Smuzhiyun #define PORT_PHY_REMOTE_LOOPBACK	BIT(1)
257*4882a593Smuzhiyun #define PORT_CABLE_FAULT_COUNTER_H	0x01
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun #define REG_PORT_1_LINK_MD_RESULT	0x1B
260*4882a593Smuzhiyun #define REG_PORT_2_LINK_MD_RESULT	0x2B
261*4882a593Smuzhiyun #define REG_PORT_3_LINK_MD_RESULT	0x3B
262*4882a593Smuzhiyun #define REG_PORT_4_LINK_MD_RESULT	0x4B
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun #define PORT_CABLE_FAULT_COUNTER_L	0xFF
265*4882a593Smuzhiyun #define PORT_CABLE_FAULT_COUNTER	0x1FF
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun #define REG_PORT_1_CTRL_9		0x1C
268*4882a593Smuzhiyun #define REG_PORT_2_CTRL_9		0x2C
269*4882a593Smuzhiyun #define REG_PORT_3_CTRL_9		0x3C
270*4882a593Smuzhiyun #define REG_PORT_4_CTRL_9		0x4C
271*4882a593Smuzhiyun 
272*4882a593Smuzhiyun #define PORT_AUTO_NEG_DISABLE		BIT(7)
273*4882a593Smuzhiyun #define PORT_FORCE_100_MBIT		BIT(6)
274*4882a593Smuzhiyun #define PORT_FORCE_FULL_DUPLEX		BIT(5)
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun #define REG_PORT_1_CTRL_10		0x1D
277*4882a593Smuzhiyun #define REG_PORT_2_CTRL_10		0x2D
278*4882a593Smuzhiyun #define REG_PORT_3_CTRL_10		0x3D
279*4882a593Smuzhiyun #define REG_PORT_4_CTRL_10		0x4D
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun #define PORT_LED_OFF			BIT(7)
282*4882a593Smuzhiyun #define PORT_TX_DISABLE			BIT(6)
283*4882a593Smuzhiyun #define PORT_AUTO_NEG_RESTART		BIT(5)
284*4882a593Smuzhiyun #define PORT_POWER_DOWN			BIT(3)
285*4882a593Smuzhiyun #define PORT_AUTO_MDIX_DISABLE		BIT(2)
286*4882a593Smuzhiyun #define PORT_FORCE_MDIX			BIT(1)
287*4882a593Smuzhiyun #define PORT_MAC_LOOPBACK		BIT(0)
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun #define REG_PORT_1_STATUS_2		0x1E
290*4882a593Smuzhiyun #define REG_PORT_2_STATUS_2		0x2E
291*4882a593Smuzhiyun #define REG_PORT_3_STATUS_2		0x3E
292*4882a593Smuzhiyun #define REG_PORT_4_STATUS_2		0x4E
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun #define PORT_MDIX_STATUS		BIT(7)
295*4882a593Smuzhiyun #define PORT_AUTO_NEG_COMPLETE		BIT(6)
296*4882a593Smuzhiyun #define PORT_STAT_LINK_GOOD		BIT(5)
297*4882a593Smuzhiyun 
298*4882a593Smuzhiyun #define REG_PORT_1_STATUS_3		0x1F
299*4882a593Smuzhiyun #define REG_PORT_2_STATUS_3		0x2F
300*4882a593Smuzhiyun #define REG_PORT_3_STATUS_3		0x3F
301*4882a593Smuzhiyun #define REG_PORT_4_STATUS_3		0x4F
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun #define PORT_PHY_LOOPBACK		BIT(7)
304*4882a593Smuzhiyun #define PORT_PHY_ISOLATE		BIT(5)
305*4882a593Smuzhiyun #define PORT_PHY_SOFT_RESET		BIT(4)
306*4882a593Smuzhiyun #define PORT_PHY_FORCE_LINK		BIT(3)
307*4882a593Smuzhiyun #define PORT_PHY_MODE_M			0x7
308*4882a593Smuzhiyun #define PHY_MODE_IN_AUTO_NEG		1
309*4882a593Smuzhiyun #define PHY_MODE_10BT_HALF		2
310*4882a593Smuzhiyun #define PHY_MODE_100BT_HALF		3
311*4882a593Smuzhiyun #define PHY_MODE_10BT_FULL		5
312*4882a593Smuzhiyun #define PHY_MODE_100BT_FULL		6
313*4882a593Smuzhiyun #define PHY_MODE_ISOLDATE		7
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun #define REG_PORT_CTRL_0			0x00
316*4882a593Smuzhiyun #define REG_PORT_CTRL_1			0x01
317*4882a593Smuzhiyun #define REG_PORT_CTRL_2			0x02
318*4882a593Smuzhiyun #define REG_PORT_CTRL_VID		0x03
319*4882a593Smuzhiyun 
320*4882a593Smuzhiyun #define REG_PORT_CTRL_5			0x05
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun #define REG_PORT_CTRL_7			0x07
323*4882a593Smuzhiyun #define REG_PORT_STATUS_0		0x08
324*4882a593Smuzhiyun #define REG_PORT_STATUS_1		0x09
325*4882a593Smuzhiyun #define REG_PORT_LINK_MD_CTRL		0x0A
326*4882a593Smuzhiyun #define REG_PORT_LINK_MD_RESULT		0x0B
327*4882a593Smuzhiyun #define REG_PORT_CTRL_9			0x0C
328*4882a593Smuzhiyun #define REG_PORT_CTRL_10		0x0D
329*4882a593Smuzhiyun #define REG_PORT_STATUS_2		0x0E
330*4882a593Smuzhiyun #define REG_PORT_STATUS_3		0x0F
331*4882a593Smuzhiyun 
332*4882a593Smuzhiyun #define REG_PORT_CTRL_12		0xA0
333*4882a593Smuzhiyun #define REG_PORT_CTRL_13		0xA1
334*4882a593Smuzhiyun #define REG_PORT_RATE_CTRL_3		0xA2
335*4882a593Smuzhiyun #define REG_PORT_RATE_CTRL_2		0xA3
336*4882a593Smuzhiyun #define REG_PORT_RATE_CTRL_1		0xA4
337*4882a593Smuzhiyun #define REG_PORT_RATE_CTRL_0		0xA5
338*4882a593Smuzhiyun #define REG_PORT_RATE_LIMIT		0xA6
339*4882a593Smuzhiyun #define REG_PORT_IN_RATE_0		0xA7
340*4882a593Smuzhiyun #define REG_PORT_IN_RATE_1		0xA8
341*4882a593Smuzhiyun #define REG_PORT_IN_RATE_2		0xA9
342*4882a593Smuzhiyun #define REG_PORT_IN_RATE_3		0xAA
343*4882a593Smuzhiyun #define REG_PORT_OUT_RATE_0		0xAB
344*4882a593Smuzhiyun #define REG_PORT_OUT_RATE_1		0xAC
345*4882a593Smuzhiyun #define REG_PORT_OUT_RATE_2		0xAD
346*4882a593Smuzhiyun #define REG_PORT_OUT_RATE_3		0xAE
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun #define PORT_CTRL_ADDR(port, addr)		\
349*4882a593Smuzhiyun 	((addr) + REG_PORT_1_CTRL_0 + (port) *	\
350*4882a593Smuzhiyun 		(REG_PORT_2_CTRL_0 - REG_PORT_1_CTRL_0))
351*4882a593Smuzhiyun 
352*4882a593Smuzhiyun #define REG_SW_MAC_ADDR_0		0x68
353*4882a593Smuzhiyun #define REG_SW_MAC_ADDR_1		0x69
354*4882a593Smuzhiyun #define REG_SW_MAC_ADDR_2		0x6A
355*4882a593Smuzhiyun #define REG_SW_MAC_ADDR_3		0x6B
356*4882a593Smuzhiyun #define REG_SW_MAC_ADDR_4		0x6C
357*4882a593Smuzhiyun #define REG_SW_MAC_ADDR_5		0x6D
358*4882a593Smuzhiyun 
359*4882a593Smuzhiyun #define REG_IND_CTRL_0			0x6E
360*4882a593Smuzhiyun 
361*4882a593Smuzhiyun #define TABLE_EXT_SELECT_S		5
362*4882a593Smuzhiyun #define TABLE_EEE_V			1
363*4882a593Smuzhiyun #define TABLE_ACL_V			2
364*4882a593Smuzhiyun #define TABLE_PME_V			4
365*4882a593Smuzhiyun #define TABLE_LINK_MD_V			5
366*4882a593Smuzhiyun #define TABLE_EEE			(TABLE_EEE_V << TABLE_EXT_SELECT_S)
367*4882a593Smuzhiyun #define TABLE_ACL			(TABLE_ACL_V << TABLE_EXT_SELECT_S)
368*4882a593Smuzhiyun #define TABLE_PME			(TABLE_PME_V << TABLE_EXT_SELECT_S)
369*4882a593Smuzhiyun #define TABLE_LINK_MD			(TABLE_LINK_MD << TABLE_EXT_SELECT_S)
370*4882a593Smuzhiyun #define TABLE_READ			BIT(4)
371*4882a593Smuzhiyun #define TABLE_SELECT_S			2
372*4882a593Smuzhiyun #define TABLE_STATIC_MAC_V		0
373*4882a593Smuzhiyun #define TABLE_VLAN_V			1
374*4882a593Smuzhiyun #define TABLE_DYNAMIC_MAC_V		2
375*4882a593Smuzhiyun #define TABLE_MIB_V			3
376*4882a593Smuzhiyun #define TABLE_STATIC_MAC		(TABLE_STATIC_MAC_V << TABLE_SELECT_S)
377*4882a593Smuzhiyun #define TABLE_VLAN			(TABLE_VLAN_V << TABLE_SELECT_S)
378*4882a593Smuzhiyun #define TABLE_DYNAMIC_MAC		(TABLE_DYNAMIC_MAC_V << TABLE_SELECT_S)
379*4882a593Smuzhiyun #define TABLE_MIB			(TABLE_MIB_V << TABLE_SELECT_S)
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun #define REG_IND_CTRL_1			0x6F
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun #define TABLE_ENTRY_MASK		0x03FF
384*4882a593Smuzhiyun #define TABLE_EXT_ENTRY_MASK		0x0FFF
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun #define REG_IND_DATA_8			0x70
387*4882a593Smuzhiyun #define REG_IND_DATA_7			0x71
388*4882a593Smuzhiyun #define REG_IND_DATA_6			0x72
389*4882a593Smuzhiyun #define REG_IND_DATA_5			0x73
390*4882a593Smuzhiyun #define REG_IND_DATA_4			0x74
391*4882a593Smuzhiyun #define REG_IND_DATA_3			0x75
392*4882a593Smuzhiyun #define REG_IND_DATA_2			0x76
393*4882a593Smuzhiyun #define REG_IND_DATA_1			0x77
394*4882a593Smuzhiyun #define REG_IND_DATA_0			0x78
395*4882a593Smuzhiyun 
396*4882a593Smuzhiyun #define REG_IND_DATA_PME_EEE_ACL	0xA0
397*4882a593Smuzhiyun 
398*4882a593Smuzhiyun #define REG_IND_DATA_CHECK		REG_IND_DATA_6
399*4882a593Smuzhiyun #define REG_IND_MIB_CHECK		REG_IND_DATA_4
400*4882a593Smuzhiyun #define REG_IND_DATA_HI			REG_IND_DATA_7
401*4882a593Smuzhiyun #define REG_IND_DATA_LO			REG_IND_DATA_3
402*4882a593Smuzhiyun 
403*4882a593Smuzhiyun #define REG_INT_STATUS			0x7C
404*4882a593Smuzhiyun #define REG_INT_ENABLE			0x7D
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun #define INT_PME				BIT(4)
407*4882a593Smuzhiyun 
408*4882a593Smuzhiyun #define REG_ACL_INT_STATUS		0x7E
409*4882a593Smuzhiyun #define REG_ACL_INT_ENABLE		0x7F
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun #define INT_PORT_5			BIT(4)
412*4882a593Smuzhiyun #define INT_PORT_4			BIT(3)
413*4882a593Smuzhiyun #define INT_PORT_3			BIT(2)
414*4882a593Smuzhiyun #define INT_PORT_2			BIT(1)
415*4882a593Smuzhiyun #define INT_PORT_1			BIT(0)
416*4882a593Smuzhiyun 
417*4882a593Smuzhiyun #define INT_PORT_ALL			\
418*4882a593Smuzhiyun 	(INT_PORT_5 | INT_PORT_4 | INT_PORT_3 | INT_PORT_2 | INT_PORT_1)
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun #define REG_SW_CTRL_12			0x80
421*4882a593Smuzhiyun #define REG_SW_CTRL_13			0x81
422*4882a593Smuzhiyun 
423*4882a593Smuzhiyun #define SWITCH_802_1P_MASK		3
424*4882a593Smuzhiyun #define SWITCH_802_1P_BASE		3
425*4882a593Smuzhiyun #define SWITCH_802_1P_SHIFT		2
426*4882a593Smuzhiyun 
427*4882a593Smuzhiyun #define SW_802_1P_MAP_M			KS_PRIO_M
428*4882a593Smuzhiyun #define SW_802_1P_MAP_S			KS_PRIO_S
429*4882a593Smuzhiyun 
430*4882a593Smuzhiyun #define REG_SWITCH_CTRL_14		0x82
431*4882a593Smuzhiyun 
432*4882a593Smuzhiyun #define SW_PRIO_MAPPING_M		KS_PRIO_M
433*4882a593Smuzhiyun #define SW_PRIO_MAPPING_S		6
434*4882a593Smuzhiyun #define SW_PRIO_MAP_3_HI		0
435*4882a593Smuzhiyun #define SW_PRIO_MAP_2_HI		2
436*4882a593Smuzhiyun #define SW_PRIO_MAP_0_LO		3
437*4882a593Smuzhiyun 
438*4882a593Smuzhiyun #define REG_SW_CTRL_15			0x83
439*4882a593Smuzhiyun #define REG_SW_CTRL_16			0x84
440*4882a593Smuzhiyun #define REG_SW_CTRL_17			0x85
441*4882a593Smuzhiyun #define REG_SW_CTRL_18			0x86
442*4882a593Smuzhiyun 
443*4882a593Smuzhiyun #define SW_SELF_ADDR_FILTER_ENABLE	BIT(6)
444*4882a593Smuzhiyun 
445*4882a593Smuzhiyun #define REG_SW_UNK_UCAST_CTRL		0x83
446*4882a593Smuzhiyun #define REG_SW_UNK_MCAST_CTRL		0x84
447*4882a593Smuzhiyun #define REG_SW_UNK_VID_CTRL		0x85
448*4882a593Smuzhiyun #define REG_SW_UNK_IP_MCAST_CTRL	0x86
449*4882a593Smuzhiyun 
450*4882a593Smuzhiyun #define SW_UNK_FWD_ENABLE		BIT(5)
451*4882a593Smuzhiyun #define SW_UNK_FWD_MAP			KS_PORT_M
452*4882a593Smuzhiyun 
453*4882a593Smuzhiyun #define REG_SW_CTRL_19			0x87
454*4882a593Smuzhiyun 
455*4882a593Smuzhiyun #define SW_IN_RATE_LIMIT_PERIOD_M	0x3
456*4882a593Smuzhiyun #define SW_IN_RATE_LIMIT_PERIOD_S	4
457*4882a593Smuzhiyun #define SW_IN_RATE_LIMIT_16_MS		0
458*4882a593Smuzhiyun #define SW_IN_RATE_LIMIT_64_MS		1
459*4882a593Smuzhiyun #define SW_IN_RATE_LIMIT_256_MS		2
460*4882a593Smuzhiyun #define SW_OUT_RATE_LIMIT_QUEUE_BASED	BIT(3)
461*4882a593Smuzhiyun #define SW_INS_TAG_ENABLE		BIT(2)
462*4882a593Smuzhiyun 
463*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_0		0x90
464*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_1		0x91
465*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_2		0x92
466*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_3		0x93
467*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_4		0x94
468*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_5		0x95
469*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_6		0x96
470*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_7		0x97
471*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_8		0x98
472*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_9		0x99
473*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_10		0x9A
474*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_11		0x9B
475*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_12		0x9C
476*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_13		0x9D
477*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_14		0x9E
478*4882a593Smuzhiyun #define REG_TOS_PRIO_CTRL_15		0x9F
479*4882a593Smuzhiyun 
480*4882a593Smuzhiyun #define TOS_PRIO_M			KS_PRIO_M
481*4882a593Smuzhiyun #define TOS_PRIO_S			KS_PRIO_S
482*4882a593Smuzhiyun 
483*4882a593Smuzhiyun #define REG_SW_CTRL_20			0xA3
484*4882a593Smuzhiyun 
485*4882a593Smuzhiyun #define SW_GMII_DRIVE_STRENGTH_S	4
486*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_M		0x7
487*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_2MA		0
488*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_4MA		1
489*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_8MA		2
490*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_12MA		3
491*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_16MA		4
492*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_20MA		5
493*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_24MA		6
494*4882a593Smuzhiyun #define SW_DRIVE_STRENGTH_28MA		7
495*4882a593Smuzhiyun #define SW_MII_DRIVE_STRENGTH_S		0
496*4882a593Smuzhiyun 
497*4882a593Smuzhiyun #define REG_SW_CTRL_21			0xA4
498*4882a593Smuzhiyun 
499*4882a593Smuzhiyun #define SW_IPV6_MLD_OPTION		BIT(3)
500*4882a593Smuzhiyun #define SW_IPV6_MLD_SNOOP		BIT(2)
501*4882a593Smuzhiyun 
502*4882a593Smuzhiyun #define REG_PORT_1_CTRL_12		0xB0
503*4882a593Smuzhiyun #define REG_PORT_2_CTRL_12		0xC0
504*4882a593Smuzhiyun #define REG_PORT_3_CTRL_12		0xD0
505*4882a593Smuzhiyun #define REG_PORT_4_CTRL_12		0xE0
506*4882a593Smuzhiyun #define REG_PORT_5_CTRL_12		0xF0
507*4882a593Smuzhiyun 
508*4882a593Smuzhiyun #define PORT_PASS_ALL			BIT(6)
509*4882a593Smuzhiyun #define PORT_INS_TAG_FOR_PORT_5_S	3
510*4882a593Smuzhiyun #define PORT_INS_TAG_FOR_PORT_5		BIT(3)
511*4882a593Smuzhiyun #define PORT_INS_TAG_FOR_PORT_4		BIT(2)
512*4882a593Smuzhiyun #define PORT_INS_TAG_FOR_PORT_3		BIT(1)
513*4882a593Smuzhiyun #define PORT_INS_TAG_FOR_PORT_2		BIT(0)
514*4882a593Smuzhiyun 
515*4882a593Smuzhiyun #define REG_PORT_1_CTRL_13		0xB1
516*4882a593Smuzhiyun #define REG_PORT_2_CTRL_13		0xC1
517*4882a593Smuzhiyun #define REG_PORT_3_CTRL_13		0xD1
518*4882a593Smuzhiyun #define REG_PORT_4_CTRL_13		0xE1
519*4882a593Smuzhiyun #define REG_PORT_5_CTRL_13		0xF1
520*4882a593Smuzhiyun 
521*4882a593Smuzhiyun #define PORT_QUEUE_SPLIT_H		BIT(1)
522*4882a593Smuzhiyun #define PORT_QUEUE_SPLIT_1		0
523*4882a593Smuzhiyun #define PORT_QUEUE_SPLIT_2		1
524*4882a593Smuzhiyun #define PORT_QUEUE_SPLIT_4		2
525*4882a593Smuzhiyun #define PORT_DROP_TAG			BIT(0)
526*4882a593Smuzhiyun 
527*4882a593Smuzhiyun #define REG_PORT_1_CTRL_14		0xB2
528*4882a593Smuzhiyun #define REG_PORT_2_CTRL_14		0xC2
529*4882a593Smuzhiyun #define REG_PORT_3_CTRL_14		0xD2
530*4882a593Smuzhiyun #define REG_PORT_4_CTRL_14		0xE2
531*4882a593Smuzhiyun #define REG_PORT_5_CTRL_14		0xF2
532*4882a593Smuzhiyun #define REG_PORT_1_CTRL_15		0xB3
533*4882a593Smuzhiyun #define REG_PORT_2_CTRL_15		0xC3
534*4882a593Smuzhiyun #define REG_PORT_3_CTRL_15		0xD3
535*4882a593Smuzhiyun #define REG_PORT_4_CTRL_15		0xE3
536*4882a593Smuzhiyun #define REG_PORT_5_CTRL_15		0xF3
537*4882a593Smuzhiyun #define REG_PORT_1_CTRL_16		0xB4
538*4882a593Smuzhiyun #define REG_PORT_2_CTRL_16		0xC4
539*4882a593Smuzhiyun #define REG_PORT_3_CTRL_16		0xD4
540*4882a593Smuzhiyun #define REG_PORT_4_CTRL_16		0xE4
541*4882a593Smuzhiyun #define REG_PORT_5_CTRL_16		0xF4
542*4882a593Smuzhiyun #define REG_PORT_1_CTRL_17		0xB5
543*4882a593Smuzhiyun #define REG_PORT_2_CTRL_17		0xC5
544*4882a593Smuzhiyun #define REG_PORT_3_CTRL_17		0xD5
545*4882a593Smuzhiyun #define REG_PORT_4_CTRL_17		0xE5
546*4882a593Smuzhiyun #define REG_PORT_5_CTRL_17		0xF5
547*4882a593Smuzhiyun 
548*4882a593Smuzhiyun #define REG_PORT_1_RATE_CTRL_3		0xB2
549*4882a593Smuzhiyun #define REG_PORT_1_RATE_CTRL_2		0xB3
550*4882a593Smuzhiyun #define REG_PORT_1_RATE_CTRL_1		0xB4
551*4882a593Smuzhiyun #define REG_PORT_1_RATE_CTRL_0		0xB5
552*4882a593Smuzhiyun #define REG_PORT_2_RATE_CTRL_3		0xC2
553*4882a593Smuzhiyun #define REG_PORT_2_RATE_CTRL_2		0xC3
554*4882a593Smuzhiyun #define REG_PORT_2_RATE_CTRL_1		0xC4
555*4882a593Smuzhiyun #define REG_PORT_2_RATE_CTRL_0		0xC5
556*4882a593Smuzhiyun #define REG_PORT_3_RATE_CTRL_3		0xD2
557*4882a593Smuzhiyun #define REG_PORT_3_RATE_CTRL_2		0xD3
558*4882a593Smuzhiyun #define REG_PORT_3_RATE_CTRL_1		0xD4
559*4882a593Smuzhiyun #define REG_PORT_3_RATE_CTRL_0		0xD5
560*4882a593Smuzhiyun #define REG_PORT_4_RATE_CTRL_3		0xE2
561*4882a593Smuzhiyun #define REG_PORT_4_RATE_CTRL_2		0xE3
562*4882a593Smuzhiyun #define REG_PORT_4_RATE_CTRL_1		0xE4
563*4882a593Smuzhiyun #define REG_PORT_4_RATE_CTRL_0		0xE5
564*4882a593Smuzhiyun #define REG_PORT_5_RATE_CTRL_3		0xF2
565*4882a593Smuzhiyun #define REG_PORT_5_RATE_CTRL_2		0xF3
566*4882a593Smuzhiyun #define REG_PORT_5_RATE_CTRL_1		0xF4
567*4882a593Smuzhiyun #define REG_PORT_5_RATE_CTRL_0		0xF5
568*4882a593Smuzhiyun 
569*4882a593Smuzhiyun #define RATE_CTRL_ENABLE		BIT(7)
570*4882a593Smuzhiyun #define RATE_RATIO_M			(BIT(7) - 1)
571*4882a593Smuzhiyun 
572*4882a593Smuzhiyun #define PORT_OUT_RATE_ENABLE		BIT(7)
573*4882a593Smuzhiyun 
574*4882a593Smuzhiyun #define REG_PORT_1_RATE_LIMIT		0xB6
575*4882a593Smuzhiyun #define REG_PORT_2_RATE_LIMIT		0xC6
576*4882a593Smuzhiyun #define REG_PORT_3_RATE_LIMIT		0xD6
577*4882a593Smuzhiyun #define REG_PORT_4_RATE_LIMIT		0xE6
578*4882a593Smuzhiyun #define REG_PORT_5_RATE_LIMIT		0xF6
579*4882a593Smuzhiyun 
580*4882a593Smuzhiyun #define PORT_IN_PORT_BASED_S		6
581*4882a593Smuzhiyun #define PORT_RATE_PACKET_BASED_S	5
582*4882a593Smuzhiyun #define PORT_IN_FLOW_CTRL_S		4
583*4882a593Smuzhiyun #define PORT_IN_LIMIT_MODE_M		0x3
584*4882a593Smuzhiyun #define PORT_IN_LIMIT_MODE_S		2
585*4882a593Smuzhiyun #define PORT_COUNT_IFG_S		1
586*4882a593Smuzhiyun #define PORT_COUNT_PREAMBLE_S		0
587*4882a593Smuzhiyun #define PORT_IN_PORT_BASED		BIT(PORT_IN_PORT_BASED_S)
588*4882a593Smuzhiyun #define PORT_RATE_PACKET_BASED		BIT(PORT_RATE_PACKET_BASED_S)
589*4882a593Smuzhiyun #define PORT_IN_FLOW_CTRL		BIT(PORT_IN_FLOW_CTRL_S)
590*4882a593Smuzhiyun #define PORT_IN_ALL			0
591*4882a593Smuzhiyun #define PORT_IN_UNICAST			1
592*4882a593Smuzhiyun #define PORT_IN_MULTICAST		2
593*4882a593Smuzhiyun #define PORT_IN_BROADCAST		3
594*4882a593Smuzhiyun #define PORT_COUNT_IFG			BIT(PORT_COUNT_IFG_S)
595*4882a593Smuzhiyun #define PORT_COUNT_PREAMBLE		BIT(PORT_COUNT_PREAMBLE_S)
596*4882a593Smuzhiyun 
597*4882a593Smuzhiyun #define REG_PORT_1_IN_RATE_0		0xB7
598*4882a593Smuzhiyun #define REG_PORT_2_IN_RATE_0		0xC7
599*4882a593Smuzhiyun #define REG_PORT_3_IN_RATE_0		0xD7
600*4882a593Smuzhiyun #define REG_PORT_4_IN_RATE_0		0xE7
601*4882a593Smuzhiyun #define REG_PORT_5_IN_RATE_0		0xF7
602*4882a593Smuzhiyun #define REG_PORT_1_IN_RATE_1		0xB8
603*4882a593Smuzhiyun #define REG_PORT_2_IN_RATE_1		0xC8
604*4882a593Smuzhiyun #define REG_PORT_3_IN_RATE_1		0xD8
605*4882a593Smuzhiyun #define REG_PORT_4_IN_RATE_1		0xE8
606*4882a593Smuzhiyun #define REG_PORT_5_IN_RATE_1		0xF8
607*4882a593Smuzhiyun #define REG_PORT_1_IN_RATE_2		0xB9
608*4882a593Smuzhiyun #define REG_PORT_2_IN_RATE_2		0xC9
609*4882a593Smuzhiyun #define REG_PORT_3_IN_RATE_2		0xD9
610*4882a593Smuzhiyun #define REG_PORT_4_IN_RATE_2		0xE9
611*4882a593Smuzhiyun #define REG_PORT_5_IN_RATE_2		0xF9
612*4882a593Smuzhiyun #define REG_PORT_1_IN_RATE_3		0xBA
613*4882a593Smuzhiyun #define REG_PORT_2_IN_RATE_3		0xCA
614*4882a593Smuzhiyun #define REG_PORT_3_IN_RATE_3		0xDA
615*4882a593Smuzhiyun #define REG_PORT_4_IN_RATE_3		0xEA
616*4882a593Smuzhiyun #define REG_PORT_5_IN_RATE_3		0xFA
617*4882a593Smuzhiyun 
618*4882a593Smuzhiyun #define PORT_IN_RATE_ENABLE		BIT(7)
619*4882a593Smuzhiyun #define PORT_RATE_LIMIT_M		(BIT(7) - 1)
620*4882a593Smuzhiyun 
621*4882a593Smuzhiyun #define REG_PORT_1_OUT_RATE_0		0xBB
622*4882a593Smuzhiyun #define REG_PORT_2_OUT_RATE_0		0xCB
623*4882a593Smuzhiyun #define REG_PORT_3_OUT_RATE_0		0xDB
624*4882a593Smuzhiyun #define REG_PORT_4_OUT_RATE_0		0xEB
625*4882a593Smuzhiyun #define REG_PORT_5_OUT_RATE_0		0xFB
626*4882a593Smuzhiyun #define REG_PORT_1_OUT_RATE_1		0xBC
627*4882a593Smuzhiyun #define REG_PORT_2_OUT_RATE_1		0xCC
628*4882a593Smuzhiyun #define REG_PORT_3_OUT_RATE_1		0xDC
629*4882a593Smuzhiyun #define REG_PORT_4_OUT_RATE_1		0xEC
630*4882a593Smuzhiyun #define REG_PORT_5_OUT_RATE_1		0xFC
631*4882a593Smuzhiyun #define REG_PORT_1_OUT_RATE_2		0xBD
632*4882a593Smuzhiyun #define REG_PORT_2_OUT_RATE_2		0xCD
633*4882a593Smuzhiyun #define REG_PORT_3_OUT_RATE_2		0xDD
634*4882a593Smuzhiyun #define REG_PORT_4_OUT_RATE_2		0xED
635*4882a593Smuzhiyun #define REG_PORT_5_OUT_RATE_2		0xFD
636*4882a593Smuzhiyun #define REG_PORT_1_OUT_RATE_3		0xBE
637*4882a593Smuzhiyun #define REG_PORT_2_OUT_RATE_3		0xCE
638*4882a593Smuzhiyun #define REG_PORT_3_OUT_RATE_3		0xDE
639*4882a593Smuzhiyun #define REG_PORT_4_OUT_RATE_3		0xEE
640*4882a593Smuzhiyun #define REG_PORT_5_OUT_RATE_3		0xFE
641*4882a593Smuzhiyun 
642*4882a593Smuzhiyun /* PME */
643*4882a593Smuzhiyun 
644*4882a593Smuzhiyun #define SW_PME_OUTPUT_ENABLE		BIT(1)
645*4882a593Smuzhiyun #define SW_PME_ACTIVE_HIGH		BIT(0)
646*4882a593Smuzhiyun 
647*4882a593Smuzhiyun #define PORT_MAGIC_PACKET_DETECT	BIT(2)
648*4882a593Smuzhiyun #define PORT_LINK_UP_DETECT		BIT(1)
649*4882a593Smuzhiyun #define PORT_ENERGY_DETECT		BIT(0)
650*4882a593Smuzhiyun 
651*4882a593Smuzhiyun /* ACL */
652*4882a593Smuzhiyun 
653*4882a593Smuzhiyun #define ACL_FIRST_RULE_M		0xF
654*4882a593Smuzhiyun 
655*4882a593Smuzhiyun #define ACL_MODE_M			0x3
656*4882a593Smuzhiyun #define ACL_MODE_S			4
657*4882a593Smuzhiyun #define ACL_MODE_DISABLE		0
658*4882a593Smuzhiyun #define ACL_MODE_LAYER_2		1
659*4882a593Smuzhiyun #define ACL_MODE_LAYER_3		2
660*4882a593Smuzhiyun #define ACL_MODE_LAYER_4		3
661*4882a593Smuzhiyun #define ACL_ENABLE_M			0x3
662*4882a593Smuzhiyun #define ACL_ENABLE_S			2
663*4882a593Smuzhiyun #define ACL_ENABLE_2_COUNT		0
664*4882a593Smuzhiyun #define ACL_ENABLE_2_TYPE		1
665*4882a593Smuzhiyun #define ACL_ENABLE_2_MAC		2
666*4882a593Smuzhiyun #define ACL_ENABLE_2_BOTH		3
667*4882a593Smuzhiyun #define ACL_ENABLE_3_IP			1
668*4882a593Smuzhiyun #define ACL_ENABLE_3_SRC_DST_COMP	2
669*4882a593Smuzhiyun #define ACL_ENABLE_4_PROTOCOL		0
670*4882a593Smuzhiyun #define ACL_ENABLE_4_TCP_PORT_COMP	1
671*4882a593Smuzhiyun #define ACL_ENABLE_4_UDP_PORT_COMP	2
672*4882a593Smuzhiyun #define ACL_ENABLE_4_TCP_SEQN_COMP	3
673*4882a593Smuzhiyun #define ACL_SRC				BIT(1)
674*4882a593Smuzhiyun #define ACL_EQUAL			BIT(0)
675*4882a593Smuzhiyun 
676*4882a593Smuzhiyun #define ACL_MAX_PORT			0xFFFF
677*4882a593Smuzhiyun 
678*4882a593Smuzhiyun #define ACL_MIN_PORT			0xFFFF
679*4882a593Smuzhiyun #define ACL_IP_ADDR			0xFFFFFFFF
680*4882a593Smuzhiyun #define ACL_TCP_SEQNUM			0xFFFFFFFF
681*4882a593Smuzhiyun 
682*4882a593Smuzhiyun #define ACL_RESERVED			0xF8
683*4882a593Smuzhiyun #define ACL_PORT_MODE_M			0x3
684*4882a593Smuzhiyun #define ACL_PORT_MODE_S			1
685*4882a593Smuzhiyun #define ACL_PORT_MODE_DISABLE		0
686*4882a593Smuzhiyun #define ACL_PORT_MODE_EITHER		1
687*4882a593Smuzhiyun #define ACL_PORT_MODE_IN_RANGE		2
688*4882a593Smuzhiyun #define ACL_PORT_MODE_OUT_OF_RANGE	3
689*4882a593Smuzhiyun 
690*4882a593Smuzhiyun #define ACL_TCP_FLAG_ENABLE		BIT(0)
691*4882a593Smuzhiyun 
692*4882a593Smuzhiyun #define ACL_TCP_FLAG_M			0xFF
693*4882a593Smuzhiyun 
694*4882a593Smuzhiyun #define ACL_TCP_FLAG			0xFF
695*4882a593Smuzhiyun #define ACL_ETH_TYPE			0xFFFF
696*4882a593Smuzhiyun #define ACL_IP_M			0xFFFFFFFF
697*4882a593Smuzhiyun 
698*4882a593Smuzhiyun #define ACL_PRIO_MODE_M			0x3
699*4882a593Smuzhiyun #define ACL_PRIO_MODE_S			6
700*4882a593Smuzhiyun #define ACL_PRIO_MODE_DISABLE		0
701*4882a593Smuzhiyun #define ACL_PRIO_MODE_HIGHER		1
702*4882a593Smuzhiyun #define ACL_PRIO_MODE_LOWER		2
703*4882a593Smuzhiyun #define ACL_PRIO_MODE_REPLACE		3
704*4882a593Smuzhiyun #define ACL_PRIO_M			0x7
705*4882a593Smuzhiyun #define ACL_PRIO_S			3
706*4882a593Smuzhiyun #define ACL_VLAN_PRIO_REPLACE		BIT(2)
707*4882a593Smuzhiyun #define ACL_VLAN_PRIO_M			0x7
708*4882a593Smuzhiyun #define ACL_VLAN_PRIO_HI_M		0x3
709*4882a593Smuzhiyun 
710*4882a593Smuzhiyun #define ACL_VLAN_PRIO_LO_M		0x8
711*4882a593Smuzhiyun #define ACL_VLAN_PRIO_S			7
712*4882a593Smuzhiyun #define ACL_MAP_MODE_M			0x3
713*4882a593Smuzhiyun #define ACL_MAP_MODE_S			5
714*4882a593Smuzhiyun #define ACL_MAP_MODE_DISABLE		0
715*4882a593Smuzhiyun #define ACL_MAP_MODE_OR			1
716*4882a593Smuzhiyun #define ACL_MAP_MODE_AND		2
717*4882a593Smuzhiyun #define ACL_MAP_MODE_REPLACE		3
718*4882a593Smuzhiyun #define ACL_MAP_PORT_M			0x1F
719*4882a593Smuzhiyun 
720*4882a593Smuzhiyun #define ACL_CNT_M			(BIT(11) - 1)
721*4882a593Smuzhiyun #define ACL_CNT_S			5
722*4882a593Smuzhiyun #define ACL_MSEC_UNIT			BIT(4)
723*4882a593Smuzhiyun #define ACL_INTR_MODE			BIT(3)
724*4882a593Smuzhiyun 
725*4882a593Smuzhiyun #define REG_PORT_ACL_BYTE_EN_MSB	0x10
726*4882a593Smuzhiyun 
727*4882a593Smuzhiyun #define ACL_BYTE_EN_MSB_M		0x3F
728*4882a593Smuzhiyun 
729*4882a593Smuzhiyun #define REG_PORT_ACL_BYTE_EN_LSB	0x11
730*4882a593Smuzhiyun 
731*4882a593Smuzhiyun #define ACL_ACTION_START		0xA
732*4882a593Smuzhiyun #define ACL_ACTION_LEN			2
733*4882a593Smuzhiyun #define ACL_INTR_CNT_START		0xB
734*4882a593Smuzhiyun #define ACL_RULESET_START		0xC
735*4882a593Smuzhiyun #define ACL_RULESET_LEN			2
736*4882a593Smuzhiyun #define ACL_TABLE_LEN			14
737*4882a593Smuzhiyun 
738*4882a593Smuzhiyun #define ACL_ACTION_ENABLE		0x000C
739*4882a593Smuzhiyun #define ACL_MATCH_ENABLE		0x1FF0
740*4882a593Smuzhiyun #define ACL_RULESET_ENABLE		0x2003
741*4882a593Smuzhiyun #define ACL_BYTE_ENABLE			((ACL_BYTE_EN_MSB_M << 8) | 0xFF)
742*4882a593Smuzhiyun #define ACL_MODE_ENABLE			(0x10 << 8)
743*4882a593Smuzhiyun 
744*4882a593Smuzhiyun #define REG_PORT_ACL_CTRL_0		0x12
745*4882a593Smuzhiyun 
746*4882a593Smuzhiyun #define PORT_ACL_WRITE_DONE		BIT(6)
747*4882a593Smuzhiyun #define PORT_ACL_READ_DONE		BIT(5)
748*4882a593Smuzhiyun #define PORT_ACL_WRITE			BIT(4)
749*4882a593Smuzhiyun #define PORT_ACL_INDEX_M		0xF
750*4882a593Smuzhiyun 
751*4882a593Smuzhiyun #define REG_PORT_ACL_CTRL_1		0x13
752*4882a593Smuzhiyun 
753*4882a593Smuzhiyun #define PORT_ACL_FORCE_DLR_MISS		BIT(0)
754*4882a593Smuzhiyun 
755*4882a593Smuzhiyun #ifndef PHY_REG_CTRL
756*4882a593Smuzhiyun #define PHY_REG_CTRL			0
757*4882a593Smuzhiyun 
758*4882a593Smuzhiyun #define PHY_RESET			BIT(15)
759*4882a593Smuzhiyun #define PHY_LOOPBACK			BIT(14)
760*4882a593Smuzhiyun #define PHY_SPEED_100MBIT		BIT(13)
761*4882a593Smuzhiyun #define PHY_AUTO_NEG_ENABLE		BIT(12)
762*4882a593Smuzhiyun #define PHY_POWER_DOWN			BIT(11)
763*4882a593Smuzhiyun #define PHY_MII_DISABLE			BIT(10)
764*4882a593Smuzhiyun #define PHY_AUTO_NEG_RESTART		BIT(9)
765*4882a593Smuzhiyun #define PHY_FULL_DUPLEX			BIT(8)
766*4882a593Smuzhiyun #define PHY_COLLISION_TEST_NOT		BIT(7)
767*4882a593Smuzhiyun #define PHY_HP_MDIX			BIT(5)
768*4882a593Smuzhiyun #define PHY_FORCE_MDIX			BIT(4)
769*4882a593Smuzhiyun #define PHY_AUTO_MDIX_DISABLE		BIT(3)
770*4882a593Smuzhiyun #define PHY_REMOTE_FAULT_DISABLE	BIT(2)
771*4882a593Smuzhiyun #define PHY_TRANSMIT_DISABLE		BIT(1)
772*4882a593Smuzhiyun #define PHY_LED_DISABLE			BIT(0)
773*4882a593Smuzhiyun 
774*4882a593Smuzhiyun #define PHY_REG_STATUS			1
775*4882a593Smuzhiyun 
776*4882a593Smuzhiyun #define PHY_100BT4_CAPABLE		BIT(15)
777*4882a593Smuzhiyun #define PHY_100BTX_FD_CAPABLE		BIT(14)
778*4882a593Smuzhiyun #define PHY_100BTX_CAPABLE		BIT(13)
779*4882a593Smuzhiyun #define PHY_10BT_FD_CAPABLE		BIT(12)
780*4882a593Smuzhiyun #define PHY_10BT_CAPABLE		BIT(11)
781*4882a593Smuzhiyun #define PHY_MII_SUPPRESS_CAPABLE_NOT	BIT(6)
782*4882a593Smuzhiyun #define PHY_AUTO_NEG_ACKNOWLEDGE	BIT(5)
783*4882a593Smuzhiyun #define PHY_REMOTE_FAULT		BIT(4)
784*4882a593Smuzhiyun #define PHY_AUTO_NEG_CAPABLE		BIT(3)
785*4882a593Smuzhiyun #define PHY_LINK_STATUS			BIT(2)
786*4882a593Smuzhiyun #define PHY_JABBER_DETECT_NOT		BIT(1)
787*4882a593Smuzhiyun #define PHY_EXTENDED_CAPABILITY		BIT(0)
788*4882a593Smuzhiyun 
789*4882a593Smuzhiyun #define PHY_REG_ID_1			2
790*4882a593Smuzhiyun #define PHY_REG_ID_2			3
791*4882a593Smuzhiyun 
792*4882a593Smuzhiyun #define PHY_REG_AUTO_NEGOTIATION	4
793*4882a593Smuzhiyun 
794*4882a593Smuzhiyun #define PHY_AUTO_NEG_NEXT_PAGE_NOT	BIT(15)
795*4882a593Smuzhiyun #define PHY_AUTO_NEG_REMOTE_FAULT_NOT	BIT(13)
796*4882a593Smuzhiyun #define PHY_AUTO_NEG_SYM_PAUSE		BIT(10)
797*4882a593Smuzhiyun #define PHY_AUTO_NEG_100BT4		BIT(9)
798*4882a593Smuzhiyun #define PHY_AUTO_NEG_100BTX_FD		BIT(8)
799*4882a593Smuzhiyun #define PHY_AUTO_NEG_100BTX		BIT(7)
800*4882a593Smuzhiyun #define PHY_AUTO_NEG_10BT_FD		BIT(6)
801*4882a593Smuzhiyun #define PHY_AUTO_NEG_10BT		BIT(5)
802*4882a593Smuzhiyun #define PHY_AUTO_NEG_SELECTOR		0x001F
803*4882a593Smuzhiyun #define PHY_AUTO_NEG_802_3		0x0001
804*4882a593Smuzhiyun 
805*4882a593Smuzhiyun #define PHY_REG_REMOTE_CAPABILITY	5
806*4882a593Smuzhiyun 
807*4882a593Smuzhiyun #define PHY_REMOTE_NEXT_PAGE_NOT	BIT(15)
808*4882a593Smuzhiyun #define PHY_REMOTE_ACKNOWLEDGE_NOT	BIT(14)
809*4882a593Smuzhiyun #define PHY_REMOTE_REMOTE_FAULT_NOT	BIT(13)
810*4882a593Smuzhiyun #define PHY_REMOTE_SYM_PAUSE		BIT(10)
811*4882a593Smuzhiyun #define PHY_REMOTE_100BTX_FD		BIT(8)
812*4882a593Smuzhiyun #define PHY_REMOTE_100BTX		BIT(7)
813*4882a593Smuzhiyun #define PHY_REMOTE_10BT_FD		BIT(6)
814*4882a593Smuzhiyun #define PHY_REMOTE_10BT			BIT(5)
815*4882a593Smuzhiyun #endif
816*4882a593Smuzhiyun 
817*4882a593Smuzhiyun #define KSZ8795_ID_HI			0x0022
818*4882a593Smuzhiyun #define KSZ8795_ID_LO			0x1550
819*4882a593Smuzhiyun 
820*4882a593Smuzhiyun #define KSZ8795_SW_ID			0x8795
821*4882a593Smuzhiyun 
822*4882a593Smuzhiyun #define PHY_REG_LINK_MD			0x1D
823*4882a593Smuzhiyun 
824*4882a593Smuzhiyun #define PHY_START_CABLE_DIAG		BIT(15)
825*4882a593Smuzhiyun #define PHY_CABLE_DIAG_RESULT		0x6000
826*4882a593Smuzhiyun #define PHY_CABLE_STAT_NORMAL		0x0000
827*4882a593Smuzhiyun #define PHY_CABLE_STAT_OPEN		0x2000
828*4882a593Smuzhiyun #define PHY_CABLE_STAT_SHORT		0x4000
829*4882a593Smuzhiyun #define PHY_CABLE_STAT_FAILED		0x6000
830*4882a593Smuzhiyun #define PHY_CABLE_10M_SHORT		BIT(12)
831*4882a593Smuzhiyun #define PHY_CABLE_FAULT_COUNTER		0x01FF
832*4882a593Smuzhiyun 
833*4882a593Smuzhiyun #define PHY_REG_PHY_CTRL		0x1F
834*4882a593Smuzhiyun 
835*4882a593Smuzhiyun #define PHY_MODE_M			0x7
836*4882a593Smuzhiyun #define PHY_MODE_S			8
837*4882a593Smuzhiyun #define PHY_STAT_REVERSED_POLARITY	BIT(5)
838*4882a593Smuzhiyun #define PHY_STAT_MDIX			BIT(4)
839*4882a593Smuzhiyun #define PHY_FORCE_LINK			BIT(3)
840*4882a593Smuzhiyun #define PHY_POWER_SAVING_ENABLE		BIT(2)
841*4882a593Smuzhiyun #define PHY_REMOTE_LOOPBACK		BIT(1)
842*4882a593Smuzhiyun 
843*4882a593Smuzhiyun /* Chip resource */
844*4882a593Smuzhiyun 
845*4882a593Smuzhiyun #define PRIO_QUEUES			4
846*4882a593Smuzhiyun 
847*4882a593Smuzhiyun #define KS_PRIO_IN_REG			4
848*4882a593Smuzhiyun 
849*4882a593Smuzhiyun #define TOTAL_PORT_NUM			5
850*4882a593Smuzhiyun 
851*4882a593Smuzhiyun /* Host port can only be last of them. */
852*4882a593Smuzhiyun #define SWITCH_PORT_NUM			(TOTAL_PORT_NUM - 1)
853*4882a593Smuzhiyun 
854*4882a593Smuzhiyun #define KSZ8795_COUNTER_NUM		0x20
855*4882a593Smuzhiyun #define TOTAL_KSZ8795_COUNTER_NUM	(KSZ8795_COUNTER_NUM + 4)
856*4882a593Smuzhiyun 
857*4882a593Smuzhiyun #define SWITCH_COUNTER_NUM		KSZ8795_COUNTER_NUM
858*4882a593Smuzhiyun #define TOTAL_SWITCH_COUNTER_NUM	TOTAL_KSZ8795_COUNTER_NUM
859*4882a593Smuzhiyun 
860*4882a593Smuzhiyun /* Common names used by other drivers */
861*4882a593Smuzhiyun 
862*4882a593Smuzhiyun #define P_BCAST_STORM_CTRL		REG_PORT_CTRL_0
863*4882a593Smuzhiyun #define P_PRIO_CTRL			REG_PORT_CTRL_0
864*4882a593Smuzhiyun #define P_TAG_CTRL			REG_PORT_CTRL_0
865*4882a593Smuzhiyun #define P_MIRROR_CTRL			REG_PORT_CTRL_1
866*4882a593Smuzhiyun #define P_802_1P_CTRL			REG_PORT_CTRL_2
867*4882a593Smuzhiyun #define P_STP_CTRL			REG_PORT_CTRL_2
868*4882a593Smuzhiyun #define P_LOCAL_CTRL			REG_PORT_CTRL_7
869*4882a593Smuzhiyun #define P_REMOTE_STATUS			REG_PORT_STATUS_0
870*4882a593Smuzhiyun #define P_FORCE_CTRL			REG_PORT_CTRL_9
871*4882a593Smuzhiyun #define P_NEG_RESTART_CTRL		REG_PORT_CTRL_10
872*4882a593Smuzhiyun #define P_SPEED_STATUS			REG_PORT_STATUS_1
873*4882a593Smuzhiyun #define P_LINK_STATUS			REG_PORT_STATUS_2
874*4882a593Smuzhiyun #define P_PASS_ALL_CTRL			REG_PORT_CTRL_12
875*4882a593Smuzhiyun #define P_INS_SRC_PVID_CTRL		REG_PORT_CTRL_12
876*4882a593Smuzhiyun #define P_DROP_TAG_CTRL			REG_PORT_CTRL_13
877*4882a593Smuzhiyun #define P_RATE_LIMIT_CTRL		REG_PORT_RATE_LIMIT
878*4882a593Smuzhiyun 
879*4882a593Smuzhiyun #define S_UNKNOWN_DA_CTRL		REG_SWITCH_CTRL_12
880*4882a593Smuzhiyun #define S_FORWARD_INVALID_VID_CTRL	REG_FORWARD_INVALID_VID
881*4882a593Smuzhiyun 
882*4882a593Smuzhiyun #define S_FLUSH_TABLE_CTRL		REG_SW_CTRL_0
883*4882a593Smuzhiyun #define S_LINK_AGING_CTRL		REG_SW_CTRL_0
884*4882a593Smuzhiyun #define S_HUGE_PACKET_CTRL		REG_SW_CTRL_1
885*4882a593Smuzhiyun #define S_MIRROR_CTRL			REG_SW_CTRL_3
886*4882a593Smuzhiyun #define S_REPLACE_VID_CTRL		REG_SW_CTRL_4
887*4882a593Smuzhiyun #define S_PASS_PAUSE_CTRL		REG_SW_CTRL_10
888*4882a593Smuzhiyun #define S_TAIL_TAG_CTRL			REG_SW_CTRL_10
889*4882a593Smuzhiyun #define S_802_1P_PRIO_CTRL		REG_SW_CTRL_12
890*4882a593Smuzhiyun #define S_TOS_PRIO_CTRL			REG_TOS_PRIO_CTRL_0
891*4882a593Smuzhiyun #define S_IPV6_MLD_CTRL			REG_SW_CTRL_21
892*4882a593Smuzhiyun 
893*4882a593Smuzhiyun #define IND_ACC_TABLE(table)		((table) << 8)
894*4882a593Smuzhiyun 
895*4882a593Smuzhiyun /* Driver set switch broadcast storm protection at 10% rate. */
896*4882a593Smuzhiyun #define BROADCAST_STORM_PROT_RATE	10
897*4882a593Smuzhiyun 
898*4882a593Smuzhiyun /* 148,800 frames * 67 ms / 100 */
899*4882a593Smuzhiyun #define BROADCAST_STORM_VALUE		9969
900*4882a593Smuzhiyun 
901*4882a593Smuzhiyun /**
902*4882a593Smuzhiyun  * STATIC_MAC_TABLE_ADDR		00-0000FFFF-FFFFFFFF
903*4882a593Smuzhiyun  * STATIC_MAC_TABLE_FWD_PORTS		00-001F0000-00000000
904*4882a593Smuzhiyun  * STATIC_MAC_TABLE_VALID		00-00200000-00000000
905*4882a593Smuzhiyun  * STATIC_MAC_TABLE_OVERRIDE		00-00400000-00000000
906*4882a593Smuzhiyun  * STATIC_MAC_TABLE_USE_FID		00-00800000-00000000
907*4882a593Smuzhiyun  * STATIC_MAC_TABLE_FID			00-7F000000-00000000
908*4882a593Smuzhiyun  */
909*4882a593Smuzhiyun 
910*4882a593Smuzhiyun #define STATIC_MAC_TABLE_ADDR		0x0000FFFF
911*4882a593Smuzhiyun #define STATIC_MAC_TABLE_FWD_PORTS	0x001F0000
912*4882a593Smuzhiyun #define STATIC_MAC_TABLE_VALID		0x00200000
913*4882a593Smuzhiyun #define STATIC_MAC_TABLE_OVERRIDE	0x00400000
914*4882a593Smuzhiyun #define STATIC_MAC_TABLE_USE_FID	0x00800000
915*4882a593Smuzhiyun #define STATIC_MAC_TABLE_FID		0x7F000000
916*4882a593Smuzhiyun 
917*4882a593Smuzhiyun #define STATIC_MAC_FWD_PORTS_S		16
918*4882a593Smuzhiyun #define STATIC_MAC_FID_S		24
919*4882a593Smuzhiyun 
920*4882a593Smuzhiyun /**
921*4882a593Smuzhiyun  * VLAN_TABLE_FID			00-007F007F-007F007F
922*4882a593Smuzhiyun  * VLAN_TABLE_MEMBERSHIP		00-0F800F80-0F800F80
923*4882a593Smuzhiyun  * VLAN_TABLE_VALID			00-10001000-10001000
924*4882a593Smuzhiyun  */
925*4882a593Smuzhiyun 
926*4882a593Smuzhiyun #define VLAN_TABLE_FID			0x007F
927*4882a593Smuzhiyun #define VLAN_TABLE_MEMBERSHIP		0x0F80
928*4882a593Smuzhiyun #define VLAN_TABLE_VALID		0x1000
929*4882a593Smuzhiyun 
930*4882a593Smuzhiyun #define VLAN_TABLE_MEMBERSHIP_S		7
931*4882a593Smuzhiyun #define VLAN_TABLE_S			16
932*4882a593Smuzhiyun 
933*4882a593Smuzhiyun /**
934*4882a593Smuzhiyun  * DYNAMIC_MAC_TABLE_ADDR		00-0000FFFF-FFFFFFFF
935*4882a593Smuzhiyun  * DYNAMIC_MAC_TABLE_FID		00-007F0000-00000000
936*4882a593Smuzhiyun  * DYNAMIC_MAC_TABLE_NOT_READY		00-00800000-00000000
937*4882a593Smuzhiyun  * DYNAMIC_MAC_TABLE_SRC_PORT		00-07000000-00000000
938*4882a593Smuzhiyun  * DYNAMIC_MAC_TABLE_TIMESTAMP		00-18000000-00000000
939*4882a593Smuzhiyun  * DYNAMIC_MAC_TABLE_ENTRIES		7F-E0000000-00000000
940*4882a593Smuzhiyun  * DYNAMIC_MAC_TABLE_MAC_EMPTY		80-00000000-00000000
941*4882a593Smuzhiyun  */
942*4882a593Smuzhiyun 
943*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_ADDR		0x0000FFFF
944*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_FID		0x007F0000
945*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_SRC_PORT	0x07000000
946*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_TIMESTAMP	0x18000000
947*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_ENTRIES	0xE0000000
948*4882a593Smuzhiyun 
949*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_NOT_READY	0x80
950*4882a593Smuzhiyun 
951*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_ENTRIES_H	0x7F
952*4882a593Smuzhiyun #define DYNAMIC_MAC_TABLE_MAC_EMPTY	0x80
953*4882a593Smuzhiyun 
954*4882a593Smuzhiyun #define DYNAMIC_MAC_FID_S		16
955*4882a593Smuzhiyun #define DYNAMIC_MAC_SRC_PORT_S		24
956*4882a593Smuzhiyun #define DYNAMIC_MAC_TIMESTAMP_S		27
957*4882a593Smuzhiyun #define DYNAMIC_MAC_ENTRIES_S		29
958*4882a593Smuzhiyun #define DYNAMIC_MAC_ENTRIES_H_S		3
959*4882a593Smuzhiyun 
960*4882a593Smuzhiyun /**
961*4882a593Smuzhiyun  * MIB_COUNTER_VALUE			00-00000000-3FFFFFFF
962*4882a593Smuzhiyun  * MIB_TOTAL_BYTES			00-0000000F-FFFFFFFF
963*4882a593Smuzhiyun  * MIB_PACKET_DROPPED			00-00000000-0000FFFF
964*4882a593Smuzhiyun  * MIB_COUNTER_VALID			00-00000020-00000000
965*4882a593Smuzhiyun  * MIB_COUNTER_OVERFLOW			00-00000040-00000000
966*4882a593Smuzhiyun  */
967*4882a593Smuzhiyun 
968*4882a593Smuzhiyun #define MIB_COUNTER_OVERFLOW		BIT(6)
969*4882a593Smuzhiyun #define MIB_COUNTER_VALID		BIT(5)
970*4882a593Smuzhiyun 
971*4882a593Smuzhiyun #define MIB_COUNTER_VALUE		0x3FFFFFFF
972*4882a593Smuzhiyun 
973*4882a593Smuzhiyun #define KS_MIB_TOTAL_RX_0		0x100
974*4882a593Smuzhiyun #define KS_MIB_TOTAL_TX_0		0x101
975*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_RX_0	0x102
976*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_TX_0	0x103
977*4882a593Smuzhiyun #define KS_MIB_TOTAL_RX_1		0x104
978*4882a593Smuzhiyun #define KS_MIB_TOTAL_TX_1		0x105
979*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_TX_1	0x106
980*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_RX_1	0x107
981*4882a593Smuzhiyun #define KS_MIB_TOTAL_RX_2		0x108
982*4882a593Smuzhiyun #define KS_MIB_TOTAL_TX_2		0x109
983*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_TX_2	0x10A
984*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_RX_2	0x10B
985*4882a593Smuzhiyun #define KS_MIB_TOTAL_RX_3		0x10C
986*4882a593Smuzhiyun #define KS_MIB_TOTAL_TX_3		0x10D
987*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_TX_3	0x10E
988*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_RX_3	0x10F
989*4882a593Smuzhiyun #define KS_MIB_TOTAL_RX_4		0x110
990*4882a593Smuzhiyun #define KS_MIB_TOTAL_TX_4		0x111
991*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_TX_4	0x112
992*4882a593Smuzhiyun #define KS_MIB_PACKET_DROPPED_RX_4	0x113
993*4882a593Smuzhiyun 
994*4882a593Smuzhiyun #define MIB_PACKET_DROPPED		0x0000FFFF
995*4882a593Smuzhiyun 
996*4882a593Smuzhiyun #define MIB_TOTAL_BYTES_H		0x0000000F
997*4882a593Smuzhiyun 
998*4882a593Smuzhiyun #define TAIL_TAG_OVERRIDE		BIT(6)
999*4882a593Smuzhiyun #define TAIL_TAG_LOOKUP			BIT(7)
1000*4882a593Smuzhiyun 
1001*4882a593Smuzhiyun #define VLAN_TABLE_ENTRIES		(4096 / 4)
1002*4882a593Smuzhiyun #define FID_ENTRIES			128
1003*4882a593Smuzhiyun 
1004*4882a593Smuzhiyun #endif
1005