xref: /OK3568_Linux_fs/u-boot/drivers/net/ks8851_mll.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * drivers/net/ks8851_mll.c
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Supports:
5*4882a593Smuzhiyun  * KS8851 16bit MLL chip from Micrel Inc.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Copyright (c) 2009 Micrel Inc.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * modified by
10*4882a593Smuzhiyun  * (c) 2011 Bticino s.p.a, Roberto Cerati <roberto.cerati@bticino.it>
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify
13*4882a593Smuzhiyun  * it under the terms of the GNU General Public License version 2 as
14*4882a593Smuzhiyun  * published by the Free Software Foundation.
15*4882a593Smuzhiyun  *
16*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful,
17*4882a593Smuzhiyun  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18*4882a593Smuzhiyun  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19*4882a593Smuzhiyun  * GNU General Public License for more details.
20*4882a593Smuzhiyun  *
21*4882a593Smuzhiyun  * You should have received a copy of the GNU General Public License
22*4882a593Smuzhiyun  * along with this program; if not, write to the Free Software
23*4882a593Smuzhiyun  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24*4882a593Smuzhiyun  */
25*4882a593Smuzhiyun #ifndef _KS8851_MLL_H_
26*4882a593Smuzhiyun #define _KS8851_MLL_H_
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #include <linux/types.h>
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define KS_CCR				0x08
31*4882a593Smuzhiyun #define CCR_EEPROM			(1 << 9)
32*4882a593Smuzhiyun #define CCR_SPI				(1 << 8)
33*4882a593Smuzhiyun #define CCR_8BIT			(1 << 7)
34*4882a593Smuzhiyun #define CCR_16BIT			(1 << 6)
35*4882a593Smuzhiyun #define CCR_32BIT			(1 << 5)
36*4882a593Smuzhiyun #define CCR_SHARED			(1 << 4)
37*4882a593Smuzhiyun #define CCR_32PIN			(1 << 0)
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /* MAC address registers */
40*4882a593Smuzhiyun #define KS_MARL				0x10
41*4882a593Smuzhiyun #define KS_MARM				0x12
42*4882a593Smuzhiyun #define KS_MARH				0x14
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define KS_OBCR				0x20
45*4882a593Smuzhiyun #define OBCR_ODS_16MA			(1 << 6)
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun #define KS_EEPCR			0x22
48*4882a593Smuzhiyun #define EEPCR_EESA			(1 << 4)
49*4882a593Smuzhiyun #define EEPCR_EESB			(1 << 3)
50*4882a593Smuzhiyun #define EEPCR_EEDO			(1 << 2)
51*4882a593Smuzhiyun #define EEPCR_EESCK			(1 << 1)
52*4882a593Smuzhiyun #define EEPCR_EECS			(1 << 0)
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #define KS_MBIR				0x24
55*4882a593Smuzhiyun #define MBIR_TXMBF			(1 << 12)
56*4882a593Smuzhiyun #define MBIR_TXMBFA			(1 << 11)
57*4882a593Smuzhiyun #define MBIR_RXMBF			(1 << 4)
58*4882a593Smuzhiyun #define MBIR_RXMBFA			(1 << 3)
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun #define KS_GRR				0x26
61*4882a593Smuzhiyun #define GRR_QMU				(1 << 1)
62*4882a593Smuzhiyun #define GRR_GSR				(1 << 0)
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun #define KS_WFCR				0x2A
65*4882a593Smuzhiyun #define WFCR_MPRXE			(1 << 7)
66*4882a593Smuzhiyun #define WFCR_WF3E			(1 << 3)
67*4882a593Smuzhiyun #define WFCR_WF2E			(1 << 2)
68*4882a593Smuzhiyun #define WFCR_WF1E			(1 << 1)
69*4882a593Smuzhiyun #define WFCR_WF0E			(1 << 0)
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun #define KS_WF0CRC0			0x30
72*4882a593Smuzhiyun #define KS_WF0CRC1			0x32
73*4882a593Smuzhiyun #define KS_WF0BM0			0x34
74*4882a593Smuzhiyun #define KS_WF0BM1			0x36
75*4882a593Smuzhiyun #define KS_WF0BM2			0x38
76*4882a593Smuzhiyun #define KS_WF0BM3			0x3A
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #define KS_WF1CRC0			0x40
79*4882a593Smuzhiyun #define KS_WF1CRC1			0x42
80*4882a593Smuzhiyun #define KS_WF1BM0			0x44
81*4882a593Smuzhiyun #define KS_WF1BM1			0x46
82*4882a593Smuzhiyun #define KS_WF1BM2			0x48
83*4882a593Smuzhiyun #define KS_WF1BM3			0x4A
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define KS_WF2CRC0			0x50
86*4882a593Smuzhiyun #define KS_WF2CRC1			0x52
87*4882a593Smuzhiyun #define KS_WF2BM0			0x54
88*4882a593Smuzhiyun #define KS_WF2BM1			0x56
89*4882a593Smuzhiyun #define KS_WF2BM2			0x58
90*4882a593Smuzhiyun #define KS_WF2BM3			0x5A
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #define KS_WF3CRC0			0x60
93*4882a593Smuzhiyun #define KS_WF3CRC1			0x62
94*4882a593Smuzhiyun #define KS_WF3BM0			0x64
95*4882a593Smuzhiyun #define KS_WF3BM1			0x66
96*4882a593Smuzhiyun #define KS_WF3BM2			0x68
97*4882a593Smuzhiyun #define KS_WF3BM3			0x6A
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun #define KS_TXCR				0x70
100*4882a593Smuzhiyun #define TXCR_TCGICMP			(1 << 8)
101*4882a593Smuzhiyun #define TXCR_TCGUDP			(1 << 7)
102*4882a593Smuzhiyun #define TXCR_TCGTCP			(1 << 6)
103*4882a593Smuzhiyun #define TXCR_TCGIP			(1 << 5)
104*4882a593Smuzhiyun #define TXCR_FTXQ			(1 << 4)
105*4882a593Smuzhiyun #define TXCR_TXFCE			(1 << 3)
106*4882a593Smuzhiyun #define TXCR_TXPE			(1 << 2)
107*4882a593Smuzhiyun #define TXCR_TXCRC			(1 << 1)
108*4882a593Smuzhiyun #define TXCR_TXE			(1 << 0)
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #define KS_TXSR				0x72
111*4882a593Smuzhiyun #define TXSR_TXLC			(1 << 13)
112*4882a593Smuzhiyun #define TXSR_TXMC			(1 << 12)
113*4882a593Smuzhiyun #define TXSR_TXFID_MASK			(0x3f << 0)
114*4882a593Smuzhiyun #define TXSR_TXFID_SHIFT		(0)
115*4882a593Smuzhiyun #define TXSR_TXFID_GET(_v)		(((_v) >> 0) & 0x3f)
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun #define KS_RXCR1			0x74
119*4882a593Smuzhiyun #define RXCR1_FRXQ			(1 << 15)
120*4882a593Smuzhiyun #define RXCR1_RXUDPFCC			(1 << 14)
121*4882a593Smuzhiyun #define RXCR1_RXTCPFCC			(1 << 13)
122*4882a593Smuzhiyun #define RXCR1_RXIPFCC			(1 << 12)
123*4882a593Smuzhiyun #define RXCR1_RXPAFMA			(1 << 11)
124*4882a593Smuzhiyun #define RXCR1_RXFCE			(1 << 10)
125*4882a593Smuzhiyun #define RXCR1_RXEFE			(1 << 9)
126*4882a593Smuzhiyun #define RXCR1_RXMAFMA			(1 << 8)
127*4882a593Smuzhiyun #define RXCR1_RXBE			(1 << 7)
128*4882a593Smuzhiyun #define RXCR1_RXME			(1 << 6)
129*4882a593Smuzhiyun #define RXCR1_RXUE			(1 << 5)
130*4882a593Smuzhiyun #define RXCR1_RXAE			(1 << 4)
131*4882a593Smuzhiyun #define RXCR1_RXINVF			(1 << 1)
132*4882a593Smuzhiyun #define RXCR1_RXE			(1 << 0)
133*4882a593Smuzhiyun #define RXCR1_FILTER_MASK		(RXCR1_RXINVF | RXCR1_RXAE | \
134*4882a593Smuzhiyun 					 RXCR1_RXMAFMA | RXCR1_RXPAFMA)
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun #define KS_RXCR2			0x76
137*4882a593Smuzhiyun #define RXCR2_SRDBL_MASK		(0x7 << 5)
138*4882a593Smuzhiyun #define RXCR2_SRDBL_SHIFT		(5)
139*4882a593Smuzhiyun #define RXCR2_SRDBL_4B			(0x0 << 5)
140*4882a593Smuzhiyun #define RXCR2_SRDBL_8B			(0x1 << 5)
141*4882a593Smuzhiyun #define RXCR2_SRDBL_16B			(0x2 << 5)
142*4882a593Smuzhiyun #define RXCR2_SRDBL_32B			(0x3 << 5)
143*4882a593Smuzhiyun /* #define RXCR2_SRDBL_FRAME		(0x4 << 5) */
144*4882a593Smuzhiyun #define RXCR2_IUFFP			(1 << 4)
145*4882a593Smuzhiyun #define RXCR2_RXIUFCEZ			(1 << 3)
146*4882a593Smuzhiyun #define RXCR2_UDPLFE			(1 << 2)
147*4882a593Smuzhiyun #define RXCR2_RXICMPFCC			(1 << 1)
148*4882a593Smuzhiyun #define RXCR2_RXSAF			(1 << 0)
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #define KS_TXMIR			0x78
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun #define KS_RXFHSR			0x7C
153*4882a593Smuzhiyun #define RXFSHR_RXFV			(1 << 15)
154*4882a593Smuzhiyun #define RXFSHR_RXICMPFCS		(1 << 13)
155*4882a593Smuzhiyun #define RXFSHR_RXIPFCS			(1 << 12)
156*4882a593Smuzhiyun #define RXFSHR_RXTCPFCS			(1 << 11)
157*4882a593Smuzhiyun #define RXFSHR_RXUDPFCS			(1 << 10)
158*4882a593Smuzhiyun #define RXFSHR_RXBF			(1 << 7)
159*4882a593Smuzhiyun #define RXFSHR_RXMF			(1 << 6)
160*4882a593Smuzhiyun #define RXFSHR_RXUF			(1 << 5)
161*4882a593Smuzhiyun #define RXFSHR_RXMR			(1 << 4)
162*4882a593Smuzhiyun #define RXFSHR_RXFT			(1 << 3)
163*4882a593Smuzhiyun #define RXFSHR_RXFTL			(1 << 2)
164*4882a593Smuzhiyun #define RXFSHR_RXRF			(1 << 1)
165*4882a593Smuzhiyun #define RXFSHR_RXCE			(1 << 0)
166*4882a593Smuzhiyun #define RXFSHR_ERR			(RXFSHR_RXCE | RXFSHR_RXRF |\
167*4882a593Smuzhiyun 					RXFSHR_RXFTL | RXFSHR_RXMR |\
168*4882a593Smuzhiyun 					RXFSHR_RXICMPFCS | RXFSHR_RXIPFCS |\
169*4882a593Smuzhiyun 					RXFSHR_RXTCPFCS)
170*4882a593Smuzhiyun #define KS_RXFHBCR			0x7E
171*4882a593Smuzhiyun #define RXFHBCR_CNT_MASK		0x0FFF
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #define KS_TXQCR			0x80
174*4882a593Smuzhiyun #define TXQCR_AETFE			(1 << 2)
175*4882a593Smuzhiyun #define TXQCR_TXQMAM			(1 << 1)
176*4882a593Smuzhiyun #define TXQCR_METFE			(1 << 0)
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun #define KS_RXQCR			0x82
179*4882a593Smuzhiyun #define RXQCR_RXDTTS			(1 << 12)
180*4882a593Smuzhiyun #define RXQCR_RXDBCTS			(1 << 11)
181*4882a593Smuzhiyun #define RXQCR_RXFCTS			(1 << 10)
182*4882a593Smuzhiyun #define RXQCR_RXIPHTOE			(1 << 9)
183*4882a593Smuzhiyun #define RXQCR_RXDTTE			(1 << 7)
184*4882a593Smuzhiyun #define RXQCR_RXDBCTE			(1 << 6)
185*4882a593Smuzhiyun #define RXQCR_RXFCTE			(1 << 5)
186*4882a593Smuzhiyun #define RXQCR_ADRFE			(1 << 4)
187*4882a593Smuzhiyun #define RXQCR_SDA			(1 << 3)
188*4882a593Smuzhiyun #define RXQCR_RRXEF			(1 << 0)
189*4882a593Smuzhiyun #define RXQCR_CMD_CNTL			(RXQCR_RXFCTE|RXQCR_ADRFE)
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun #define KS_TXFDPR			0x84
192*4882a593Smuzhiyun #define TXFDPR_TXFPAI			(1 << 14)
193*4882a593Smuzhiyun #define TXFDPR_TXFP_MASK		(0x7ff << 0)
194*4882a593Smuzhiyun #define TXFDPR_TXFP_SHIFT		(0)
195*4882a593Smuzhiyun 
196*4882a593Smuzhiyun #define KS_RXFDPR			0x86
197*4882a593Smuzhiyun #define RXFDPR_RXFPAI			(1 << 14)
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #define KS_RXDTTR			0x8C
200*4882a593Smuzhiyun #define KS_RXDBCTR			0x8E
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun #define KS_IER				0x90
203*4882a593Smuzhiyun #define KS_ISR				0x92
204*4882a593Smuzhiyun #define IRQ_LCI				(1 << 15)
205*4882a593Smuzhiyun #define IRQ_TXI				(1 << 14)
206*4882a593Smuzhiyun #define IRQ_RXI				(1 << 13)
207*4882a593Smuzhiyun #define IRQ_RXOI			(1 << 11)
208*4882a593Smuzhiyun #define IRQ_TXPSI			(1 << 9)
209*4882a593Smuzhiyun #define IRQ_RXPSI			(1 << 8)
210*4882a593Smuzhiyun #define IRQ_TXSAI			(1 << 6)
211*4882a593Smuzhiyun #define IRQ_RXWFDI			(1 << 5)
212*4882a593Smuzhiyun #define IRQ_RXMPDI			(1 << 4)
213*4882a593Smuzhiyun #define IRQ_LDI				(1 << 3)
214*4882a593Smuzhiyun #define IRQ_EDI				(1 << 2)
215*4882a593Smuzhiyun #define IRQ_SPIBEI			(1 << 1)
216*4882a593Smuzhiyun #define IRQ_DEDI			(1 << 0)
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun #define KS_RXFCTR			0x9C
219*4882a593Smuzhiyun #define RXFCTR_THRESHOLD_MASK		0x00FF
220*4882a593Smuzhiyun 
221*4882a593Smuzhiyun #define KS_RXFC				0x9D
222*4882a593Smuzhiyun #define RXFCTR_RXFC_MASK		(0xff << 8)
223*4882a593Smuzhiyun #define RXFCTR_RXFC_SHIFT		(8)
224*4882a593Smuzhiyun #define RXFCTR_RXFC_GET(_v)		(((_v) >> 8) & 0xff)
225*4882a593Smuzhiyun #define RXFCTR_RXFCT_MASK		(0xff << 0)
226*4882a593Smuzhiyun #define RXFCTR_RXFCT_SHIFT		(0)
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun #define KS_TXNTFSR			0x9E
229*4882a593Smuzhiyun 
230*4882a593Smuzhiyun #define KS_MAHTR0			0xA0
231*4882a593Smuzhiyun #define KS_MAHTR1			0xA2
232*4882a593Smuzhiyun #define KS_MAHTR2			0xA4
233*4882a593Smuzhiyun #define KS_MAHTR3			0xA6
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun #define KS_FCLWR			0xB0
236*4882a593Smuzhiyun #define KS_FCHWR			0xB2
237*4882a593Smuzhiyun #define KS_FCOWR			0xB4
238*4882a593Smuzhiyun 
239*4882a593Smuzhiyun #define KS_CIDER			0xC0
240*4882a593Smuzhiyun #define CIDER_ID			0x8870
241*4882a593Smuzhiyun #define CIDER_REV_MASK			(0x7 << 1)
242*4882a593Smuzhiyun #define CIDER_REV_SHIFT			(1)
243*4882a593Smuzhiyun #define CIDER_REV_GET(_v)		(((_v) >> 1) & 0x7)
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun #define KS_CGCR				0xC6
246*4882a593Smuzhiyun #define KS_IACR				0xC8
247*4882a593Smuzhiyun #define IACR_RDEN			(1 << 12)
248*4882a593Smuzhiyun #define IACR_TSEL_MASK			(0x3 << 10)
249*4882a593Smuzhiyun #define IACR_TSEL_SHIFT			(10)
250*4882a593Smuzhiyun #define IACR_TSEL_MIB			(0x3 << 10)
251*4882a593Smuzhiyun #define IACR_ADDR_MASK			(0x1f << 0)
252*4882a593Smuzhiyun #define IACR_ADDR_SHIFT			(0)
253*4882a593Smuzhiyun 
254*4882a593Smuzhiyun #define KS_IADLR			0xD0
255*4882a593Smuzhiyun #define KS_IAHDR			0xD2
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun #define KS_PMECR			0xD4
258*4882a593Smuzhiyun #define PMECR_PME_DELAY			(1 << 14)
259*4882a593Smuzhiyun #define PMECR_PME_POL			(1 << 12)
260*4882a593Smuzhiyun #define PMECR_WOL_WAKEUP		(1 << 11)
261*4882a593Smuzhiyun #define PMECR_WOL_MAGICPKT		(1 << 10)
262*4882a593Smuzhiyun #define PMECR_WOL_LINKUP		(1 << 9)
263*4882a593Smuzhiyun #define PMECR_WOL_ENERGY		(1 << 8)
264*4882a593Smuzhiyun #define PMECR_AUTO_WAKE_EN		(1 << 7)
265*4882a593Smuzhiyun #define PMECR_WAKEUP_NORMAL		(1 << 6)
266*4882a593Smuzhiyun #define PMECR_WKEVT_MASK		(0xf << 2)
267*4882a593Smuzhiyun #define PMECR_WKEVT_SHIFT		(2)
268*4882a593Smuzhiyun #define PMECR_WKEVT_GET(_v)		(((_v) >> 2) & 0xf)
269*4882a593Smuzhiyun #define PMECR_WKEVT_ENERGY		(0x1 << 2)
270*4882a593Smuzhiyun #define PMECR_WKEVT_LINK		(0x2 << 2)
271*4882a593Smuzhiyun #define PMECR_WKEVT_MAGICPKT		(0x4 << 2)
272*4882a593Smuzhiyun #define PMECR_WKEVT_FRAME		(0x8 << 2)
273*4882a593Smuzhiyun #define PMECR_PM_MASK			(0x3 << 0)
274*4882a593Smuzhiyun #define PMECR_PM_SHIFT			(0)
275*4882a593Smuzhiyun #define PMECR_PM_NORMAL			(0x0 << 0)
276*4882a593Smuzhiyun #define PMECR_PM_ENERGY			(0x1 << 0)
277*4882a593Smuzhiyun #define PMECR_PM_SOFTDOWN		(0x2 << 0)
278*4882a593Smuzhiyun #define PMECR_PM_POWERSAVE		(0x3 << 0)
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun /* Standard MII PHY data */
281*4882a593Smuzhiyun #define KS_P1MBCR			0xE4
282*4882a593Smuzhiyun #define P1MBCR_FORCE_FDX		(1 << 8)
283*4882a593Smuzhiyun 
284*4882a593Smuzhiyun #define KS_P1MBSR			0xE6
285*4882a593Smuzhiyun #define P1MBSR_AN_COMPLETE		(1 << 5)
286*4882a593Smuzhiyun #define P1MBSR_AN_CAPABLE		(1 << 3)
287*4882a593Smuzhiyun #define P1MBSR_LINK_UP			(1 << 2)
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun #define KS_PHY1ILR			0xE8
290*4882a593Smuzhiyun #define KS_PHY1IHR			0xEA
291*4882a593Smuzhiyun #define KS_P1ANAR			0xEC
292*4882a593Smuzhiyun #define KS_P1ANLPR			0xEE
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun #define KS_P1SCLMD			0xF4
295*4882a593Smuzhiyun #define P1SCLMD_LEDOFF			(1 << 15)
296*4882a593Smuzhiyun #define P1SCLMD_TXIDS			(1 << 14)
297*4882a593Smuzhiyun #define P1SCLMD_RESTARTAN		(1 << 13)
298*4882a593Smuzhiyun #define P1SCLMD_DISAUTOMDIX		(1 << 10)
299*4882a593Smuzhiyun #define P1SCLMD_FORCEMDIX		(1 << 9)
300*4882a593Smuzhiyun #define P1SCLMD_AUTONEGEN		(1 << 7)
301*4882a593Smuzhiyun #define P1SCLMD_FORCE100		(1 << 6)
302*4882a593Smuzhiyun #define P1SCLMD_FORCEFDX		(1 << 5)
303*4882a593Smuzhiyun #define P1SCLMD_ADV_FLOW		(1 << 4)
304*4882a593Smuzhiyun #define P1SCLMD_ADV_100BT_FDX		(1 << 3)
305*4882a593Smuzhiyun #define P1SCLMD_ADV_100BT_HDX		(1 << 2)
306*4882a593Smuzhiyun #define P1SCLMD_ADV_10BT_FDX		(1 << 1)
307*4882a593Smuzhiyun #define P1SCLMD_ADV_10BT_HDX		(1 << 0)
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun #define KS_P1CR				0xF6
310*4882a593Smuzhiyun #define P1CR_HP_MDIX			(1 << 15)
311*4882a593Smuzhiyun #define P1CR_REV_POL			(1 << 13)
312*4882a593Smuzhiyun #define P1CR_OP_100M			(1 << 10)
313*4882a593Smuzhiyun #define P1CR_OP_FDX			(1 << 9)
314*4882a593Smuzhiyun #define P1CR_OP_MDI			(1 << 7)
315*4882a593Smuzhiyun #define P1CR_AN_DONE			(1 << 6)
316*4882a593Smuzhiyun #define P1CR_LINK_GOOD			(1 << 5)
317*4882a593Smuzhiyun #define P1CR_PNTR_FLOW			(1 << 4)
318*4882a593Smuzhiyun #define P1CR_PNTR_100BT_FDX		(1 << 3)
319*4882a593Smuzhiyun #define P1CR_PNTR_100BT_HDX		(1 << 2)
320*4882a593Smuzhiyun #define P1CR_PNTR_10BT_FDX		(1 << 1)
321*4882a593Smuzhiyun #define P1CR_PNTR_10BT_HDX		(1 << 0)
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun /* TX Frame control */
324*4882a593Smuzhiyun #define TXFR_TXIC			(1 << 15)
325*4882a593Smuzhiyun #define TXFR_TXFID_MASK			(0x3f << 0)
326*4882a593Smuzhiyun #define TXFR_TXFID_SHIFT		(0)
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun #define KS_P1SR				0xF8
329*4882a593Smuzhiyun #define P1SR_HP_MDIX			(1 << 15)
330*4882a593Smuzhiyun #define P1SR_REV_POL			(1 << 13)
331*4882a593Smuzhiyun #define P1SR_OP_100M			(1 << 10)
332*4882a593Smuzhiyun #define P1SR_OP_FDX			(1 << 9)
333*4882a593Smuzhiyun #define P1SR_OP_MDI			(1 << 7)
334*4882a593Smuzhiyun #define P1SR_AN_DONE			(1 << 6)
335*4882a593Smuzhiyun #define P1SR_LINK_GOOD			(1 << 5)
336*4882a593Smuzhiyun #define P1SR_PNTR_FLOW			(1 << 4)
337*4882a593Smuzhiyun #define P1SR_PNTR_100BT_FDX		(1 << 3)
338*4882a593Smuzhiyun #define P1SR_PNTR_100BT_HDX		(1 << 2)
339*4882a593Smuzhiyun #define P1SR_PNTR_10BT_FDX		(1 << 1)
340*4882a593Smuzhiyun #define P1SR_PNTR_10BT_HDX		(1 << 0)
341*4882a593Smuzhiyun 
342*4882a593Smuzhiyun #define ENUM_BUS_NONE			0
343*4882a593Smuzhiyun #define ENUM_BUS_8BIT			1
344*4882a593Smuzhiyun #define ENUM_BUS_16BIT			2
345*4882a593Smuzhiyun #define ENUM_BUS_32BIT			3
346*4882a593Smuzhiyun 
347*4882a593Smuzhiyun #define MAX_MCAST_LST			32
348*4882a593Smuzhiyun #define HW_MCAST_SIZE			8
349*4882a593Smuzhiyun #define MAC_ADDR_LEN			6
350*4882a593Smuzhiyun 
351*4882a593Smuzhiyun /* Chip ID values */
352*4882a593Smuzhiyun struct chip_id {
353*4882a593Smuzhiyun 	u16 id;
354*4882a593Smuzhiyun 	char *name;
355*4882a593Smuzhiyun };
356*4882a593Smuzhiyun 
357*4882a593Smuzhiyun #endif
358