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