1/*
2 * Register and bit definitions for the DEC/Intel 21143 Ethernet controller,
3 * part of the Tulip family of 10 and 10/100 controllers.
4 * Reference:
5 *   21143 PCI/CardBus 10/100 Mb/s Ethernet LAN Controller,
6 *     Hardware Reference Manual, Revision 1.0.
7 *   Document No. 278074-001
8 *   Intel Corp., October 1998
9 * Includes extensions/alternatives for the DEC 21040, 21041 and 21140(A)
10 * Ethernet controllers.
11 */
12#ifndef _DC21143_H_
13#define _DC21143_H_
14
15#define _DD_MAKEMASK1(n) (1 << (n))
16#define _DD_MAKEMASK(v,n) ((((1)<<(v))-1) << (n))
17#define _DD_MAKEVALUE(v,n) ((v) << (n))
18#define _DD_GETVALUE(v,n,m) (((v) & (m)) >> (n))
19
20
21/*  *********************************************************************
22    *  PCI Configuration Register offsets (Tulip nomenclature)
23    ********************************************************************* */
24
25#define R_CFG_CFID       PCI_ID_REG
26#define K_PCI_VENDOR_DEC 0x1011
27#define K_PCI_ID_DC21040 0x0002
28#define K_PCI_ID_DC21041 0x0014
29#define K_PCI_ID_DC21140 0x0009
30#define K_PCI_ID_DC21143 0x0019
31
32#define R_CFG_CFRV       PCI_CLASS_REG
33
34#define R_CFG_CBIO       PCI_MAPREG(0)
35#define R_CFG_CBMA       PCI_MAPREG(1)
36
37#define R_CFG_CFIT       PCI_BPARAM_INTERRUPT_REG
38
39/* Tulip extensions */
40#define R_CFG_CFDD       0x40
41
42#define M_CFDD_SLEEP     __DD_MAKEMASK1(31)
43#define M_CFDD_SNOOZE    __DD_MAKEMASK1(30)
44
45#define R_CFG_CPMS       0xE0
46
47
48/*  *********************************************************************
49    *  CSRs: offsets
50    ********************************************************************* */
51
52#define R_CSR_BUSMODE	      0x00
53#define R_CSR_TXPOLL          0x08
54#define R_CSR_RXPOLL          0x10
55#define R_CSR_RXRING          0x18
56#define R_CSR_TXRING          0x20
57#define R_CSR_STATUS          0x28
58#define R_CSR_OPMODE          0x30
59#define R_CSR_INTMASK         0x38
60#define R_CSR_MISSEDFRAME     0x40
61#define R_CSR_ROM_MII         0x48
62#define R_CSR_BOOTROM_ADDR    0x50
63#define R_CSR_GENTIMER        0x58
64
65/* The following registers are specific to the 21040 */
66
67#define R_CSR_FDUPLEX         0x58
68
69/* The following registers are specific to the 21040/21041 and 21142/21143 */
70
71#define R_CSR_SIASTATUS       0x60
72#define R_CSR_SIAMODE0        0x68
73#define R_CSR_SIAMODE1        0x70
74#define R_CSR_SIAMODE2        0x78
75
76/* The following registers are specific to the 21140/21140A */
77
78#define R_CSR_GENPORT         0x60
79#define R_CSR_WATCHDOG_TIMER  0x78
80
81
82/* CSR0:  Bus Mode register */
83
84#define M_CSR0_SWRESET          _DD_MAKEMASK1(0)
85#define M_CSR0_BUSARB         	_DD_MAKEMASK1(1)
86
87#define S_CSR0_SKIPLEN		2
88#define M_CSR0_SKIPLEN          _DD_MAKEMASK(5,S_CSR0_SKIPLEN)
89#define V_CSR0_SKIPLEN(x)       _DD_MAKEVALUE(x,S_CSR0_SKIPLEN)
90#define G_CSR0_SKIPLEN(x)       _DD_GETVALUE(x,S_CSR0_SKIPLEN,M_CSR0_SKIPLEN)
91
92#define M_CSR0_BIGENDIAN        _DD_MAKEMASK1(7)
93
94#define S_CSR0_BURSTLEN		8
95#define M_CSR0_BURSTLEN         _DD_MAKEMASK(6,S_CSR0_BURSTLEN)
96#define V_CSR0_BURSTLEN(x)      _DD_MAKEVALUE(x,S_CSR0_BURSTLEN)
97#define G_CSR0_BURSTLEN(x)      _DD_GETVALUE(x,S_CSR0_BURSTLEN,M_CSR0_BURSTLEN)
98
99#define S_CSR0_CACHEALIGN	14
100#define M_CSR0_CACHEALIGN       _DD_MAKEMASK(2,S_CSR0_CACHEALIGN)
101#define V_CSR0_CACHEALIGN(x)    _DD_MAKEVALUE(x,S_CSR0_CACHEALIGN)
102#define G_CSR0_CACHEALIGN(x)    _DD_GETVALUE(x,S_CSR0_CACHEALIGN,M_CSR0_CACHEALIGN)
103
104#define S_CSR0_TXAUTOPOLL	17
105#define M_CSR0_TXAUTOPOLL	_DD_MAKEMASK(3,S_CSR0_AUTOPOLL)
106#define V_CSR0_TXAUTOPOLL(x)    _DD_MAKEVALUE(x,S_CSR0_TXAUTOPOLL)
107#define G_CSR0_TXAUTOPOLL(x)    _DD_GETVALUE(x,S_CSR0_TXAUTOPOLL,M_CSR0_TXAUTOPOLL)
108
109#define M_CSR0_DESCBYTEORDER	_DD_MAKEMASK1(20)  /* not 21040 */
110#define M_CSR0_READMULTENAB	_DD_MAKEMASK1(21)  /* not 2104{0,1} */
111#define M_CSR0_READLINEENAB	_DD_MAKEMASK1(23)  /* not 2104{0,1} */
112#define M_CSR0_WRITEINVALENAB	_DD_MAKEMASK1(24)  /* not 2104{0,1} */
113
114#define K_CSR0_TAPDISABLED	0x00
115#define K_CSR0_TAP200US		0x01
116#define K_CSR0_TAP800US		0x02
117#define K_CSR0_TAP1600US	0x03
118
119#define K_CSR0_ALIGNNONE	0
120#define K_CSR0_ALIGN32          1
121#define K_CSR0_ALIGN64          2
122#define K_CSR0_ALIGN128         3
123
124#define K_CSR0_BURST32          32
125#define K_CSR0_BURST16          16
126#define K_CSR0_BURST8           8
127#define K_CSR0_BURST4           4
128#define K_CSR0_BURST2           2
129#define K_CSR0_BURST1           1
130#define K_CSR0_BURSTANY         0
131
132
133#define M_CSR3_RXDSCRADDR	0xFFFFFFFC
134#define M_CSR4_TXDSCRADDR	0xFFFFFFFC
135
136
137/* CSR5:  Status register */
138
139#define M_CSR5_TXINT            _DD_MAKEMASK1(0)
140#define M_CSR5_TXSTOP           _DD_MAKEMASK1(1)
141#define M_CSR5_TXBUFUNAVAIL   	_DD_MAKEMASK1(2)
142#define M_CSR5_TXJABTIMEOUT     _DD_MAKEMASK1(3)
143#define M_CSR5_LINKPASS		_DD_MAKEMASK1(4)  /* not 21040 */
144#define M_CSR5_TXUNDERFLOW      _DD_MAKEMASK1(5)
145#define M_CSR5_RXINT            _DD_MAKEMASK1(6)
146#define M_CSR5_RXBUFUNAVAIL   	_DD_MAKEMASK1(7)
147#define M_CSR5_RXSTOPPED        _DD_MAKEMASK1(8)
148#define M_CSR5_RXWDOGTIMEOUT    _DD_MAKEMASK1(9)
149#define M_CSR5_AUITPPIN         _DD_MAKEMASK1(10)  /* 21040 only */
150#define M_CSR5_TXEARLYINT	_DD_MAKEMASK1(10)  /* not 2104{0,1} */
151#define M_CSR5_FDSHORTFRAME     _DD_MAKEMASK1(11)  /* 21040 only */
152#define M_CSR5_GPTIMEREXPIRE	_DD_MAKEMASK1(11)  /* not 21040 */
153#define M_CSR5_LINKFAIL         _DD_MAKEMASK1(12)
154#define M_CSR5_FATALBUSERROR    _DD_MAKEMASK1(13)
155#define M_CSR5_RXEARLYINT	_DD_MAKEMASK1(14)  /* not 21040 */
156#define M_CSR5_ABNORMALINT      _DD_MAKEMASK1(15)
157#define M_CSR5_NORMALINT        _DD_MAKEMASK1(16)
158
159#define S_CSR5_RXPROCSTATE	17
160#define M_CSR5_RXPROCSTATE      _DD_MAKEMASK(3,S_CSR5_RXPROCSTATE)
161#define V_CSR5_RXPROCSTATE(x)   _DD_MAKEVALUE(x,S_CSR5_RXPROCSTATE)
162#define G_CSR5_RXPROCSTATE(x)   _DD_GETVALUE(x,S_CSR5_RXPROCSTATE,M_CSR5_RXPROCSTATE)
163
164#define K_CSR5_RXSTOPPED	0x00	/* RESET or STOP command */
165#define K_CSR5_RXFETCH		0x01	/* fetching rx desc */
166#define K_CSR5_RXCHECK		0x02	/* checking end of rx pkt */
167#define K_CSR5_RXWAIT		0x03	/* waiting for rx pkt */
168#define K_CSR5_RXSUSPEND	0x04	/* unavailable rx buffer */
169#define K_CSR5_RXCLOSE		0x05	/* closing rx desc */
170#define K_CSR5_RXFLUSH		0x06	/* flushing rx frame */
171#define K_CSR5_RXQUEUE		0x07	/* reading rx frame from FIFO */
172
173#define S_CSR5_TXPROCSTATE	20
174#define M_CSR5_TXPROCSTATE      _DD_MAKEMASK(3,S_CSR5_TXPROCSTATE)
175#define V_CSR5_TXPROCSTATE(x)   _DD_MAKEVALUE(x,S_CSR5_TXPROCSTATE)
176#define G_CSR5_TXPROCSTATE(x)   _DD_GETVALUE(x,S_CSR5_TXPROCSTATE,M_CSR5_TXPROCSTATE)
177
178#define K_CSR5_TXSTOPPED	0x00	/* RESET or STOP command */
179#define K_CSR5_TXFETCH		0x01	/* fetching tx desc */
180#define K_CSR5_TXWAIT		0x02	/* waiting for end of tx */
181#define K_CSR5_TXREAD		0x03	/* reading buffer into FIFO */
182#define K_CSR5_TXSETUP		0x05	/* setup packet */
183#define K_CSR5_TXSUSPEND	0x06	/* tx underflow or no tx desc */
184#define K_CSR5_TXCLOSE		0x07	/* closing tx desc */
185
186#define S_CSR5_ERRORBITS	23
187#define M_CSR5_ERRORBITS	_DD_MAKEMASK(3,S_CSR5_ERRORBITS)
188#define V_CSR5_ERRORBITS(x)     _DD_MAKEVALUE(x,S_CSR5_ERRORBITS)
189#define G_CSR5_ERRORBITS(x)     _DD_GETVALUE(x,S_CSR5_ERRORBITS,M_CSR5_ERRORBITS)
190
191#define K_CSR5_FBE_PARITY	0x00
192#define K_CSR5_FBE_MABORT	0x01
193#define K_CSR5_FBE_TABORT	0x02
194
195#define M_CSR5_GPPORTINT	_DD_MAKEMASK1(26)  /* not 2104{0,1} */
196#define M_CSR5_LINKCHANGED	_DD_MAKEMASK1(27)  /* not 2104{0,1} */
197
198
199/* CSR6:  Operating Mode register */
200
201#define M_CSR6_RXHASHFILT     	_DD_MAKEMASK1(0)
202#define M_CSR6_RXSTART          _DD_MAKEMASK1(1)
203#define M_CSR6_HASHONLY	     	_DD_MAKEMASK1(2)
204#define M_CSR6_PASSBADFRAMES    _DD_MAKEMASK1(3)
205#define M_CSR6_INVERSEFILT      _DD_MAKEMASK1(4)
206#define M_CSR6_STOPBACKOFF    	_DD_MAKEMASK1(5)
207#define M_CSR6_PROMISCUOUS      _DD_MAKEMASK1(6)
208#define M_CSR6_PASSALLMULTI     _DD_MAKEMASK1(7)
209#define M_CSR6_FULLDUPLEX       _DD_MAKEMASK1(9)
210
211#define M_CSR6_INTLOOPBACK  	_DD_MAKEMASK1(10)
212#define M_CSR6_EXTLOOPBACK	_DD_MAKEMASK1(11)
213
214#define S_CSR6_OPMODE		10
215#define M_CSR6_OPMODE           _DD_MAKEMASK(2,S_CSR6_OPMODE)
216#define V_CSR6_OPMODE(x)        _DD_MAKEVALUE(x,S_CSR6_OPMODE)
217#define G_CSR6_OPMODE(x)        _DD_GETVALUE(x,S_CSR6_OPMODE,M_CSR6_OPMODE)
218
219#define M_CSR6_FORCECOLL    	_DD_MAKEMASK1(12)
220#define M_CSR6_TXSTART          _DD_MAKEMASK1(13)
221
222#define S_CSR6_THRESHCONTROL	14
223#define M_CSR6_THRESHCONTROL	_DD_MAKEMASK(2,S_CSR6_THRESHCONTROL)
224#define V_CSR6_THRESHCONTROL(x) _DD_MAKEVALUE(x,S_CSR6_THRESHCONTROL)
225#define G_CSR6_THRESHCONTROL(x) _DD_GETVALUE(x,S_CSR6_THRESHCONTROL,M_CSR6_THRESHCONTROL)
226
227#define M_CSR6_BACKPRESSURE     _DD_MAKEMASK1(16)  /* 21040 only */
228#define M_CSR6_CAPTUREEFFECT    _DD_MAKEMASK1(17)
229
230#define M_CSR6_PORTSEL       	_DD_MAKEMASK1(18)  /* not 2104{0,1} */
231#define M_CSR6_HBDISABLE 	_DD_MAKEMASK1(19)  /* not 2104{0,1} */
232#define M_CSR6_STOREFWD         _DD_MAKEMASK1(21)  /* not 2104{0,1} */
233#define M_CSR6_TXTHRESH	  	_DD_MAKEMASK1(22)  /* not 2104{0,1} */
234#define M_CSR6_PCSFUNC		_DD_MAKEMASK1(23)  /* not 2104{0,1} */
235#define M_CSR6_SCRAMMODE 	_DD_MAKEMASK1(24)  /* not 2104{0,1} */
236#define	M_CSR6_MBO		_DD_MAKEMASK1(25)  /* not 2104{0,1} */
237#define M_CSR6_RXALL		_DD_MAKEMASK1(30)  /* not 2104{0,1} */
238
239#define M_CSR6_SPECCAP		_DD_MAKEMASK1(31)  /* not 21040 */
240
241#define K_CSR6_TXTHRES_128_72   0x00
242#define K_CSR6_TXTHRES_256_96   0x01
243#define K_CSR6_TXTHRES_512_128  0x02
244#define K_CSR6_TXTHRES_1024_160 0x03
245
246
247#ifndef EB332
248#define M_CSR6_SPEED_10		(M_CSR6_TXTHRESH)
249
250#define M_CSR6_SPEED_100	(M_CSR6_HBDISABLE | \
251				 M_CSR6_SCRAMMODE | \
252				 M_CSR6_PCSFUNC | \
253				 M_CSR6_PORTSEL)
254
255#define M_CSR6_SPEED_10_MII	(M_CSR6_TXTHRESH | \
256                                 M_CSR6_PORTSEL)
257
258#define M_CSR6_SPEED_100_MII	(M_CSR6_HBDISABLE | \
259				 M_CSR6_PORTSEL)
260
261#else
262#define M_CSR6_SPEED_10		(0)
263
264#define M_CSR6_SPEED_100	(M_CSR6_SCRAMMODE | \
265				 M_CSR6_PORTSEL)
266
267#define M_CSR6_SPEED_10_MII	(M_CSR6_PORTSEL)
268
269#define M_CSR6_SPEED_100_MII	(M_CSR6_PORTSEL)
270#endif
271
272/* CSR7:  Interrupt mask register */
273
274#define M_CSR7_TXINT		_DD_MAKEMASK1(0)
275#define M_CSR7_TXSTOP           _DD_MAKEMASK1(1)
276#define M_CSR7_TXBUFUNAVAIL 	_DD_MAKEMASK1(2)
277#define M_CSR7_TXJABTIMEOUT     _DD_MAKEMASK1(3)
278#define M_CSR7_LINKPASS		_DD_MAKEMASK1(4)  /* not 21040 */
279#define M_CSR7_TXUNDERFLOW      _DD_MAKEMASK1(5)
280#define M_CSR7_RXINT          	_DD_MAKEMASK1(6)
281#define M_CSR7_RXBUFUNAVAIL 	_DD_MAKEMASK1(7)
282#define M_CSR7_RXSTOPPED        _DD_MAKEMASK1(8)
283#define M_CSR7_RXWDOGTIMEOUT   	_DD_MAKEMASK1(9)
284#define M_CSR7_AUITPSW          _DD_MAKEMASK1(10)  /* 21040 only */
285#define M_CSR7_TXEARLY		_DD_MAKEMASK1(10)  /* not 2104{0,1} */
286#define M_CSR7_FD               _DD_MAKEMASK1(11)  /* 21040 only */
287#define M_CSR7_GPTIMER		_DD_MAKEMASK1(11)  /* not 21040 */
288#define M_CSR7_LINKFAIL         _DD_MAKEMASK1(12)
289#define M_CSR7_FATALBUSERROR    _DD_MAKEMASK1(13)
290#define M_CSR7_RXEARLY		_DD_MAKEMASK1(14)  /* not 21040 */
291#define M_CSR7_ABNORMALINT    	_DD_MAKEMASK1(15)
292#define M_CSR7_NORMALINT      	_DD_MAKEMASK1(16)
293#define M_CSR7_GPPORT		_DD_MAKEMASK1(26)  /* not 2104{0,1} */
294#define M_CSR7_LINKCHANGED	_DD_MAKEMASK1(27)  /* not 2104{0,1} */
295
296
297/* CSR8: Missed Frame register */
298
299#define M_CSR8_RXOVER_WRAP	_DD_MAKEMASK1(28)  /* not 2104{0,1} */
300#define S_CSR8_RXOVER		17
301#define M_CSR8_RXOVER		_DD_MAKEMASK(11,S_CSR8_RXOVER)  /* not 2104{0,1} */
302#define V_CSR8_RXOVER(x)        _DD_MAKEVALUE(x,S_CSR8_RXOVER)
303#define G_CSR8_RXOVER(x)        _DD_GETVALUE(x,S_CSR8_RXOVER,M_CSR8_RXOVER)
304
305#define M_CSR8_MISSEDWRAP	_DD_MAKEMASK1(16)
306#define S_CSR8_MISSED		0
307#define M_CSR8_MISSED		_DD_MAKEMASK(16,S_CSR8_MISSED)
308#define V_CSR8_MISSED(x)        _DD_MAKEVALUE(x,S_CSR8_MISSED)
309#define G_CSR8_MISSED(x)        _DD_GETVALUE(x,S_CSR8_MISSED,M_CSR8_MISSED)
310
311
312/* CSR9: ROM and MII register */
313
314#define S_CSR9_ROMDATA		0
315#define M_CSR9_ROMDATA		_DD_MAKEMASK(8,S_CSR9_ROMDATA)
316#define V_CSR9_ROMDATA(x)       _DD_MAKEVALUE(x,S_CSR9_ROMDATA)
317#define G_CSR9_ROMDATA(x)       _DD_GETVALUE(x,S_CSR9_ROMDATA,M_CSR9_ROMDATA)
318
319#define M_CSR9_SROMCHIPSEL	_DD_MAKEMASK1(0)   /* not 21040 */
320#define M_CSR9_SROMCLOCK	_DD_MAKEMASK1(1)   /* not 21040 */
321#define M_CSR9_SROMDATAIN	_DD_MAKEMASK1(2)   /* not 21040 */
322#define M_CSR9_SROMDATAOUT	_DD_MAKEMASK1(3)   /* not 21040 */
323
324#define M_CSR9_REGSELECT	_DD_MAKEMASK1(10)  /* not 21040 */
325#define M_CSR9_SERROMSEL	_DD_MAKEMASK1(11)  /* not 21040 */
326#define M_CSR9_ROMSEL		_DD_MAKEMASK1(12)  /* not 21040 */
327#define M_CSR9_ROMWRITE		_DD_MAKEMASK1(13)  /* not 21040 */
328#define M_CSR9_ROMREAD		_DD_MAKEMASK1(14)  /* not 21040 */
329#define M_CSR9_MODESEL		_DD_MAKEMASK1(15)  /* 21041 only */
330#define M_CSR9_MDC		_DD_MAKEMASK1(16)  /* not 2104{0,1} */
331#define M_CSR9_MDO		_DD_MAKEMASK1(17)  /* not 2104{0,1} */
332#define M_CSR9_MIIMODE		_DD_MAKEMASK1(18)  /* not 2104{0,1} */
333#define M_CSR9_MDI		_DD_MAKEMASK1(19)  /* not 2104{0,1} */
334
335#define M_CSR9_DATANOTVALID	_DD_MAKEMASK1(31)  /* 21040 only */
336
337#define M_CSR10_BOOTROMADDR	_DD_MAKEMASK(18,0) /* not 21040 */
338
339
340/* CSR11 General Purpose Timer register */
341
342#define S_CSR11_GPTIMER		0                  /* not 21040 */
343#define M_CSR11_GPTIMER 	_DD_MAKEMASK(16,S_CSR11_GPTIMER)
344#define V_CSR11_GPTIMER(x)      _DD_MAKEVALUE(x,S_CSR11_GPTIMER)
345#define G_CSR11_GPTIMER(x)      _DD_GETVALUE(x,S_CSR11_GPTIMER,M_CSR11_GPTIMER)
346
347
348#define M_CSR11_GPTIMERCONT     _DD_MAKEMASK1(16)  /* not 21040 */
349
350#define S_CSR11_FDAUTOCONF      0                  /* 21040 only */
351#define M_CSR11_FDAUTOCONF      _DD_MAKEMASK(16,S_CSR11_FDAUTOCONF)
352#define V_CSR11_FDAUTOCONF(x)   _DD_MAKEVALUE(x,S_CSR11_FDAUTOCONF)
353#define G_CSR11_FRAUTOCONF(x)   _DD_GETVALUE(x,S_CSR11_FDAUTOCONF,M_CSR11_AUTOCONF)
354
355
356/* CSR12:  SIA Status register (21143) */
357
358#define M_CSR12_MIIRPA		_DD_MAKEMASK1(0)
359#define M_CSR12_100MBLINK	_DD_MAKEMASK1(1)
360#define M_CSR12_10MBLINK	_DD_MAKEMASK1(2)
361#define M_CSR12_AUTOPOLSTATE	_DD_MAKEMASK1(3)
362
363#define M_CSR12_RXAUIACT	_DD_MAKEMASK1(8)
364#define M_CSR12_RX10BASETACT	_DD_MAKEMASK1(9)
365#define M_CSR12_NLPDETECT	_DD_MAKEMASK1(10)
366#define M_CSR12_TXREMFAULT	_DD_MAKEMASK1(11)
367
368#define S_CSR12_AUTONEGARBIT	12
369#define M_CSR12_AUTONEGARBIT	_DD_MAKEMASK(3,S_CSR12_AUTONEGARBIT)
370#define V_CSR12_AUTONEGARBIT(x) _DD_MAKEVALUE(x,S_CSR12_AUTONEGARBIT)
371#define G_CSR12_AUTONEGARBIT(x) _DD_GETVALUE(x,S_CSR12_AUTONEGARBIT,M_CSR12_AUTONEGARBIT)
372
373#define M_CSR12_LINKPARTNEG	_DD_MAKEMASK1(15)
374
375#define S_CSR12_LINKPARTCODE	16
376#define M_CSR12_LINKPARTCODE	_DD_MAKEMASK(16,S_CSR12_LINKPARTCODE)
377#define V_CSR12_LINKPARTCODE(x) _DD_MAKEVALUE(x,S_CSR12_LINKPARTCODE)
378#define G_CSR12_LINKPARTCODE(x) _DD_GETVALUE(x,S_CSR12_LINKPARTCODE,M_CSR12_LINKPARTCODE)
379
380
381/* CSR12:  SIA Status register (21041, also 31:12, 3:3 as for 21143) */
382
383#define M_CSR12_NETCONNERR	_DD_MAKEMASK1(1)
384#define M_CSR12_LINKFAIL	_DD_MAKEMASK1(2)
385#define M_CSR12_SELPORTACT	_DD_MAKEMASK1(8)
386#define M_CSR12_NONSELPORTACT	_DD_MAKEMASK1(9)
387#define M_CSR12_AUTONEGRESTART	_DD_MAKEMASK1(10)
388#define M_CSR12_UNSTABLENLP	_DD_MAKEMASK1(11)
389
390
391/* CSR12: General Purpose Port register (21140) */
392
393#define S_CSR12_DATA		0
394#define M_CSR12_DATA		_DD_MAKEMASK(8,S_CSR12_DATA)
395#define V_CSR12_DATA		_DD_MAKEVALUE(x,S_CSR12_DATA,M_CSR12_DATA)
396#define G_CSR12_DATA(x)		_DD_GETVALUE(x,S_CSR12_DATA,M_CSR12_DATA)
397
398#define M_CSR12_CONTROL		_DD_MAKEMASK1(8)
399
400
401/* CSR13:  SIA Mode 0 register (21143 and 21041) */
402
403#define M_CSR13_CONN_NOT_RESET	_DD_MAKEMASK1(0)
404#define M_CSR13_CONN_CSR_AUTO	_DD_MAKEMAKS1(2)   /* 21041 only */
405#define M_CSR13_CONN_AUI_10BT	_DD_MAKEMASK1(3)
406
407
408/* CSR14:  SIA Mode 1 register (21143 and 21041) */
409
410#define M_CSR14_ENCODER		_DD_MAKEMASK1(0)
411#define M_CSR14_LOOPBACK	_DD_MAKEMASK1(1)
412#define M_CSR14_DRIVER		_DD_MAKEMASK1(2)
413#define M_CSR14_LINKPULSE	_DD_MAKEMASK1(3)
414
415#define S_CSR14_COMPENSATE	4
416#define M_CSR14_COMPENSATE	_DD_MAKEMASK(2,S_CSR14_COMPENSATE)
417#define V_CSR15_COMPENSATE(x)   _DD_MAKEVALUE(x,S_CSR15_COMPENSATE)
418#define G_CSR15_COMPENSATE(x)   _DD_GETVALUE(x,S_CSR15_COMPENSATE,M_CSR15_COMPENSATE)
419
420#define M_CSR14_HALFDUPLEX10BASET _DD_MAKEMASK1(6)
421#define M_CSR14_AUTONEGOTIATE	_DD_MAKEMASK1(7)
422#define M_CSR14_RXSQUELCH	_DD_MAKEMASK1(8)
423#define M_CSR14_COLLSQUELCH	_DD_MAKEMASK1(9)
424#define M_CSR14_COLLDETECT	_DD_MAKEMASK1(10)
425#define M_CSR14_SIGQUALGEN	_DD_MAKEMASK1(11)
426#define M_CSR14_LINKTEST	_DD_MAKEMASK1(12)
427#define M_CSR14_AUTOPOLARITY	_DD_MAKEMASK1(13)
428#define M_CSR14_SETPOLARITY	_DD_MAKEMASK1(14)
429#define M_CSR14_10BASETAUIAUTO	_DD_MAKEMASK1(15)
430#define M_CSR14_100BASETHALFDUP	_DD_MAKEMASK1(16)  /* not 21041 */
431#define M_CSR14_100BASETFULLDUP	_DD_MAKEMASK1(17)  /* not 21041 */
432#define M_CSR14_100BASET4	_DD_MAKEMASK1(18)  /* not 21041 */
433
434#define M_CSR14_10BT_HD		0x7F3F
435#define M_CSR14_10BT_FD		0x7F3D
436
437
438/* CSR15:  SIA Mode 2 register (21143 and 21041) */
439
440#define M_CSR15_GP_JABBERDIS	_DD_MAKEMASK1(0)   /* 21041 only */
441#define M_CSR15_GP_HOSTUNJAB	_DD_MAKEMASK1(1)
442#define M_CSR15_GP_JABBERCLK	_DD_MAKEMASK1(2)
443#define M_CSR15_GP_AUIBNC	_DD_MAKEMASK1(3)
444#define M_CSR15_GP_RXWATCHDIS	_DD_MAKEMASK1(4)
445#define M_CSR15_GP_RXWATCHREL	_DD_MAKEMASK1(5)
446
447/* (CSR15: 21143 only) */
448
449#define S_CSR15_GP_GPDATA	16
450#define M_CSR15_GP_GPDATA	_DD_MAKEMASK(4,S_CSR15_GP_GPDATA)
451#define V_CSR15_GP_GPDATA(x)    _DD_MAKEVALUE(x,S_CSR15_GP_GPDATA)
452#define G_CSR15_GP_GPDATA(x)    _DD_GETVALUE(x,S_CSR15_GP_GPDATA,M_CSR15_GP_GPDATA)
453
454#define M_CSR15_GP_LED0		_DD_MAKEMASK1(20)
455#define M_CSR15_GP_LED1		_DD_MAKEMASK1(21)
456#define M_CSR15_GP_LED2		_DD_MAKEMASK1(22)
457#define M_CSR15_GP_LED3		_DD_MAKEMASK1(23)
458#define M_CSR15_GP_INTPORT0	_DD_MAKEMASK1(24)
459#define M_CSR15_GP_INTPORT1	_DD_MAKEMASK1(25)
460#define M_CSR15_GP_RXMATCH	_DD_MAKEMASK1(26)
461#define M_CSR15_GP_CONTROLWRITE	_DD_MAKEMASK1(27)
462#define M_CSR15_GP_GPINT0	_DD_MAKEMASK1(28)
463#define M_CSR15_GP_GPINT1	_DD_MAKEMASK1(29)
464#define M_CSR15_GP_RXMATCHINT	_DD_MAKEMASK1(30)
465
466#define M_CSR15_DEFAULT_VALUE		0x00050008
467#define M_CSR15_CONFIG_GEPS_LEDS	0x08af0000
468
469/* (CSR15: 21041 only) */
470
471#define M_CSR15_GP_LED1ENB	_DD_MAKEMASK1(6)
472#define M_CSR15_GP_LED1VALUE	_DD_MAKEMASK1(7)
473#define M_CSR15_GP_TSTCLK	_DD_MAKEMASK1(8)
474#define M_CSR15_GP_FORCEUNSQ	_DD_MAKEMASK1(9)
475#define M_CSR15_GP_FORCEFAIL	_DD_MAKEMASK1(10)
476#define M_CSR15_GP_LEDSTRDIS	_DD_MAKEMASK1(11)
477#define M_CSR15_GP_PLLTEST	_DD_MAKEMASK1(12)
478#define M_CSR15_GP_FORCERXLOW	_DD_MAKEMASK1(13)
479#define M_CSR15_GP_LED2ENB	_DD_MAKEMASK1(14)
480#define M_CSR15_GP_LED2VALUE	_DD_MAKEMASK1(15)
481
482
483/* CSR15: Watchdog Timer register (21140) */
484
485#define M_CSR15_WT_JABBER	_DD_MAKEMASK1(0)
486#define M_CSR15_WT_HOSTUNJAB	_DD_MAKEMASK1(1)
487#define M_CSR15_WT_JABBERCLK	_DD_MAKEMASK1(2)
488#define M_CSR15_WT_RXWATCHDIS	_DD_MAKEMASK1(4)
489#define M_CSR15_WT_RXWATCHREL	_DD_MAKEMASK1(5)
490
491
492/*  *********************************************************************
493    *  Receive Descriptors
494    ********************************************************************* */
495
496#define M_RDES0_OWNSYS          0
497#define M_RDES0_OWNADAP         _DD_MAKEMASK1(31)
498
499#define S_RDES0_FRAMELEN	16
500#define M_RDES0_FRAMELEN        _DD_MAKEMASK(14,S_RDES0_FRAMELEN)
501#define V_RDES0_FRAMELEN(x)     _DD_MAKEVALUE(x,S_RDES0_FRAMELEN)
502#define G_RDES0_FRAMELEN(x)     _DD_GETVALUE(x,S_RDES0_FRAMELEN,M_RDES0_FRAMELEN)
503
504#define M_RDES0_ZERO		_DD_MAKEMASK1(0)
505#define M_RDES0_OVFL		_DD_MAKEMAKS1(0)   /* 21041 only */
506#define M_RDES0_CRCERR          _DD_MAKEMASK1(1)
507#define M_RDES0_DRIBBLE         _DD_MAKEMASK1(2)
508#define M_RDES0_MIIERROR	_DD_MAKEMASK1(3)   /* not 21041 */
509#define M_RDES0_WDOGTIMER       _DD_MAKEMASK1(4)
510#define M_RDES0_FRAMETYPE       _DD_MAKEMASK1(5)
511#define M_RDES0_COLLSEEN        _DD_MAKEMASK1(6)
512#define M_RDES0_FRAMETOOLONG    _DD_MAKEMASK1(7)
513#define M_RDES0_LASTDES         _DD_MAKEMASK1(8)
514#define M_RDES0_FIRSTDES        _DD_MAKEMASK1(9)
515#define M_RDES0_MCASTFRAME      _DD_MAKEMASK1(10)
516#define M_RDES0_RUNTFRAME       _DD_MAKEMASK1(11)
517
518#define S_RDES0_DATATYPE	12
519#define M_RDES0_DATATYPE        _DD_MAKEMASK(2,S_RDES0_DATATYPE)
520#define V_RDES0_DATATYPE(x)     _DD_MAKEVALUE(x,S_RDES0_DATATYPE)
521#define G_RDES0_DATATYPE(x)     _DD_GETVALUE(x,S_RDES0_DATATYPE,M_RDES0_DATATYPE)
522
523#define M_RDES0_ERROR		_DD_MAKEMASK1(14)
524#define M_RDES0_ERRORSUM        _DD_MAKEMASK1(15)
525#define M_RDES0_FILTFAIL	_DD_MAKEMASK1(30)  /* not 21041 */
526
527#define S_RDES1_BUF1SIZE	0
528#define M_RDES1_BUF1SIZE        _DD_MAKEMASK(11,S_TDES1_BUF1SIZE)
529#define V_RDES1_BUF1SIZE(x)     _DD_MAKEVALUE(x,S_RDES1_BUF1SIZE)
530#define G_RDES1_BUF1SIZE(x)     _DD_GETVALUE(x,S_RDES1_BUF1SIZE,M_RDES1_BUF1SIZE)
531
532#define S_RDES1_BUF2SIZE	11
533#define M_RDES1_BUF2SIZE        _DD_MAKEMASK(11,S_TDES2_BUF2SIZE)
534#define V_RDES1_BUF2SIZE(x)     _DD_MAKEVALUE(x,S_RDES1_BUF2SIZE)
535#define G_RDES1_BUF2SIZE(x)     _DD_GETVALUE(x,S_RDES1_BUF2SIZE,M_RDES1_BUF2SIZE)
536
537#define M_RDES1_CHAINED         _DD_MAKEMASK1(24)
538#define M_RDES1_ENDOFRING       _DD_MAKEMASK1(25)
539
540#define M_RDES2_BUFADDR		0xFFFFFFFF
541#define M_RDES3_BUFADDR		0xFFFFFFFF
542
543/*  *********************************************************************
544    *  Transmit Descriptors
545    ********************************************************************* */
546
547#define M_TDES0_OWNSYS          0
548#define M_TDES0_OWNADAP         _DD_MAKEMASK1(31)
549
550#define M_TDES0_DEFERRED        _DD_MAKEMASK1(0)
551#define M_TDES0_UNDERFLOW       _DD_MAKEMASK1(1)
552#define M_TDES0_LINK_FAIL       _DD_MAKEMASK1(2)
553
554#define S_TDES0_COLLCOUNT	3
555#define M_TDES0_COLLCOUNT	_DD_MAKEMASK(4,S_TDES0_COLLCOUNT)
556#define V_TDES0_COLLCOUNT(x)    _DD_MAKEVALUE(x,S_TDES0_COLLCOUNT)
557#define G_TDES0_COLLCOUNT(x)    _DD_GETVALUE(x,S_TDES0_COLLCOUNT,M_TDES0_COLLCOUNT)
558
559#define M_TDES0_HEARTBEAT_FAIL           _DD_MAKEMASK1(7)
560#define M_TDES0_EXCESSIVE_COLLISIONS     _DD_MAKEMASK1(8)
561#define M_TDES0_LATE_COLLISION           _DD_MAKEMASK1(9)
562#define M_TDES0_NO_CARRIER               _DD_MAKEMASK1(10)
563#define M_TDES0_LOSS_OF_CARRIER          _DD_MAKEMASK1(11)
564#define M_TDES0_TX_JABBER_TIMEOUT        _DD_MAKEMASK1(14)
565#define M_TDES0_ERROR_SUMMARY            _DD_MAKEMASK1(15)
566#define M_TDES0_OWN_BIT                  _DD_MAKEMASK1(31)
567
568#define S_TDES1_BUF1SIZE	0
569#define M_TDES1_BUF1SIZE        _DD_MAKEMASK(11,S_TDES1_BUF1SIZE)
570#define V_TDES1_BUF1SIZE(x)     _DD_MAKEVALUE(x,S_TDES1_BUF1SIZE)
571#define G_TDES1_BUF1SIZE(x)     _DD_GETVALUE(x,S_TDES1_BUF1SIZE,M_TDES1_BUF1SIZE)
572
573#define S_TDES1_BUF2SIZE	11
574#define M_TDES1_BUF2SIZE        _DD_MAKEMASK(11,S_TDES2_BUF2SIZE)
575#define V_TDES1_BUF2SIZE(x)     _DD_MAKEVALUE(x,S_TDES1_BUF2SIZE)
576#define G_TDES1_BUF2SIZE(x)     _DD_GETVALUE(x,S_TDES1_BUF2SIZE,M_TDES1_BUF2SIZE)
577
578#define M_TDES1_FT0             _DD_MAKEMASK1(22)
579#define M_TDES1_NOPADDING       _DD_MAKEMASK1(23)
580#define M_TDES1_CHAINED      	_DD_MAKEMASK1(24)
581#define M_TDES1_ENDOFRING       _DD_MAKEMASK1(25)
582#define M_TDES1_NOADDCRC        _DD_MAKEMASK1(26)
583#define M_TDES1_SETUP           _DD_MAKEMASK1(27)
584#define M_TDES1_FT1             _DD_MAKEMASK1(28)
585#define M_TDES1_FIRSTSEG        _DD_MAKEMASK1(29)
586#define M_TDES1_LASTSEG         _DD_MAKEMASK1(30)
587#define M_TDES1_INTERRUPT  	_DD_MAKEMASK1(31)
588
589#define M_TDES2_BUFADDR		0xFFFFFFFF
590#define M_TDES3_BUFADDR		0xFFFFFFFF
591
592
593/* CAM  */
594
595#define CAM_HASH_THRESHOLD          14
596#define CAM_PERFECT_ENTRIES         16
597
598#define CAM_SETUP_BUFFER_SIZE       192
599
600#endif /* _DC21143_H_ */
601