summaryrefslogtreecommitdiffstats
path: root/cfe/cfe/dev/dc21143.h
blob: 65f32550c701e5778fd3f3f12504dddfc1e47bb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
/*
 * Register and bit definitions for the DEC/Intel 21143 Ethernet controller,
 * part of the Tulip family of 10 and 10/100 controllers.
 * Reference:
 *   21143 PCI/CardBus 10/100 Mb/s Ethernet LAN Controller,
 *     Hardware Reference Manual, Revision 1.0.
 *   Document No. 278074-001
 *   Intel Corp., October 1998
 * Includes extensions/alternatives for the DEC 21040, 21041 and 21140(A)
 * Ethernet controllers.
 */
#ifndef _DC21143_H_
#define _DC21143_H_

#define _DD_MAKEMASK1(n) (1 << (n))
#define _DD_MAKEMASK(v,n) ((((1)<<(v))-1) << (n))
#define _DD_MAKEVALUE(v,n) ((v) << (n))
#define _DD_GETVALUE(v,n,m) (((v) & (m)) >> (n))


/*  *********************************************************************
    *  PCI Configuration Register offsets (Tulip nomenclature)
    ********************************************************************* */

#define R_CFG_CFID       PCI_ID_REG
#define K_PCI_VENDOR_DEC 0x1011
#define K_PCI_ID_DC21040 0x0002
#define K_PCI_ID_DC21041 0x0014
#define K_PCI_ID_DC21140 0x0009
#define K_PCI_ID_DC21143 0x0019

#define R_CFG_CFRV       PCI_CLASS_REG

#define R_CFG_CBIO       PCI_MAPREG(0)
#define R_CFG_CBMA       PCI_MAPREG(1)

#define R_CFG_CFIT       PCI_BPARAM_INTERRUPT_REG

/* Tulip extensions */
#define R_CFG_CFDD       0x40

#define M_CFDD_SLEEP     __DD_MAKEMASK1(31)
#define M_CFDD_SNOOZE    __DD_MAKEMASK1(30)

#define R_CFG_CPMS       0xE0


/*  *********************************************************************
    *  CSRs: offsets
    ********************************************************************* */

#define R_CSR_BUSMODE	      0x00
#define R_CSR_TXPOLL          0x08
#define R_CSR_RXPOLL          0x10
#define R_CSR_RXRING          0x18
#define R_CSR_TXRING          0x20
#define R_CSR_STATUS          0x28
#define R_CSR_OPMODE          0x30
#define R_CSR_INTMASK         0x38  
#define R_CSR_MISSEDFRAME     0x40
#define R_CSR_ROM_MII         0x48
#define R_CSR_BOOTROM_ADRR    0x50
#define R_CSR_GENTIMER        0x58

/* The following registers are specific to the 21040 */

#define R_CSR_FDUPLEX         0x58
   
/* The following registers are specific to the 21040/21041 and 21142/21143 */

#define R_CSR_SIASTATUS       0x60
#define R_CSR_SIAMODE0        0x68
#define R_CSR_SIAMODE1        0x70
#define R_CSR_SIAMODE2        0x78

/* The following registers are specific to the 21140/21140A */

#define R_CSR_GENPORT         0x60
#define R_CSR_WATCHDOG_TIMER  0x78


/* CSR0:  Bus Mode register */

#define M_CSR0_SWRESET          _DD_MAKEMASK1(0)
#define M_CSR0_BUSARB         	_DD_MAKEMASK1(1)

#define S_CSR0_SKIPLEN		2
#define M_CSR0_SKIPLEN          _DD_MAKEMASK(5,S_CSR0_SKIPLEN)
#define V_CSR0_SKIPLEN(x)       _DD_MAKEVALUE(x,S_CSR0_SKIPLEN)
#define G_CSR0_SKIPLEN(x)       _DD_GETVALUE(x,S_CSR0_SKIPLEN,M_CSR0_SKIPLEN)

#define M_CSR0_BIGENDIAN        _DD_MAKEMASK1(7)

#define S_CSR0_BURSTLEN		8
#define M_CSR0_BURSTLEN         _DD_MAKEMASK(6,S_CSR0_BURSTLEN)
#define V_CSR0_BURSTLEN(x)      _DD_MAKEVALUE(x,S_CSR0_BURSTLEN)
#define G_CSR0_BURSTLEN(x)      _DD_GETVALUE(x,S_CSR0_BURSTLEN,M_CSR0_BURSTLEN)

#define S_CSR0_CACHEALIGN	14
#define M_CSR0_CACHEALIGN       _DD_MAKEMASK(2,S_CSR0_CACHEALIGN)
#define V_CSR0_CACHEALIGN(x)    _DD_MAKEVALUE(x,S_CSR0_CACHEALIGN)
#define G_CSR0_CACHEALIGN(x)    _DD_GETVALUE(x,S_CSR0_CACHEALIGN,M_CSR0_CACHEALIGN)

#define S_CSR0_TXAUTOPOLL	17
#define M_CSR0_TXAUTOPOLL	_DD_MAKEMASK(3,S_CSR0_AUTOPOLL)
#define V_CSR0_TXAUTOPOLL(x)    _DD_MAKEVALUE(x,S_CSR0_TXAUTOPOLL)
#define G_CSR0_TXAUTOPOLL(x)    _DD_GETVALUE(x,S_CSR0_TXAUTOPOLL,M_CSR0_TXAUTOPOLL)

#define M_CSR0_DESCBYTEORDER	_DD_MAKEMASK1(20)  /* not 21040 */
#define M_CSR0_READMULTENAB	_DD_MAKEMASK1(21)  /* not 2104{0,1} */
#define M_CSR0_READLINEENAB	_DD_MAKEMASK1(23)  /* not 2104{0,1} */
#define M_CSR0_WRITEINVALENAB	_DD_MAKEMASK1(24)  /* not 2104{0,1} */

#define K_CSR0_TAPDISABLED	0x00
#define K_CSR0_TAP200US		0x01
#define K_CSR0_TAP800US		0x02
#define K_CSR0_TAP1600US	0x03

#define K_CSR0_ALIGNNONE	0
#define K_CSR0_ALIGN32          1
#define K_CSR0_ALIGN64          2
#define K_CSR0_ALIGN128         3

#define K_CSR0_BURST32          32
#define K_CSR0_BURST16          16
#define K_CSR0_BURST8           8
#define K_CSR0_BURST4           4
#define K_CSR0_BURST2           2
#define K_CSR0_BURST1           1


#define M_CSR3_RXDSCRADDR	0xFFFFFFFC
#define M_CSR4_TXDSCRADDR	0xFFFFFFFC


/* CSR5:  Status register */

#define M_CSR5_TXINT            _DD_MAKEMASK1(0)
#define M_CSR5_TXSTOP           _DD_MAKEMASK1(1)
#define M_CSR5_TXBUFUNAVAIL   	_DD_MAKEMASK1(2)
#define M_CSR5_TXJABTIMEOUT     _DD_MAKEMASK1(3)
#define M_CSR5_LINKPASS		_DD_MAKEMASK1(4)  /* not 21040 */
#define M_CSR5_TXUNDERFLOW      _DD_MAKEMASK1(5)
#define M_CSR5_RXINT            _DD_MAKEMASK1(6)
#define M_CSR5_RXBUFUNAVAIL   	_DD_MAKEMASK1(7)
#define M_CSR5_RXSTOPPED        _DD_MAKEMASK1(8)
#define M_CSR5_RXWDOGTIMEOUT    _DD_MAKEMASK1(9)
#define M_CSR5_AUITPPIN         _DD_MAKEMASK1(10)  /* 21040 only */
#define M_CSR5_TXEARLYINT	_DD_MAKEMASK1(10)  /* not 2104{0,1} */
#define M_CSR5_FDSHORTFRAME     _DD_MAKEMASK1(11)  /* 21040 only */
#define M_CSR5_GPTIMEREXPIRE	_DD_MAKEMASK1(11)  /* not 21040 */
#define M_CSR5_LINKFAIL         _DD_MAKEMASK1(12)
#define M_CSR5_FATALBUSERROR    _DD_MAKEMASK1(13)
#define M_CSR5_RXEARLYINT	_DD_MAKEMASK1(14)  /* not 21040 */
#define M_CSR5_ABNORMALINT      _DD_MAKEMASK1(15)
#define M_CSR5_NORMALINT        _DD_MAKEMASK1(16)

#define S_CSR5_RXPROCSTATE	17
#define M_CSR5_RXPROCSTATE      _DD_MAKEMASK(3,S_CSR5_RXPROCSTATE)
#define V_CSR5_RXPROCSTATE(x)   _DD_MAKEVALUE(x,S_CSR5_RXPROCSTATE)
#define G_CSR5_RXPROCSTATE(x)   _DD_GETVALUE(x,S_CSR5_RXPROCSTATE,M_CSR5_RXPROCSTATE)

#define K_CSR5_RXSTOPPED	0x00	/* RESET or STOP command */
#define K_CSR5_RXFETCH		0x01	/* fetching rx desc */
#define K_CSR5_RXCHECK		0x02	/* checking end of rx pkt */
#define K_CSR5_RXWAIT		0x03	/* waiting for rx pkt */
#define K_CSR5_RXSUSPEND	0x04	/* unavailable rx buffer */
#define K_CSR5_RXCLOSE		0x05	/* closing rx desc */
#define K_CSR5_RXFLUSH		0x06	/* flushing rx frame */
#define K_CSR5_RXQUEUE		0x07	/* reading rx frame from FIFO */

#define S_CSR5_TXPROCSTATE	20
#define M_CSR5_TXPROCSTATE      _DD_MAKEMASK(3,S_CSR5_TXPROCSTATE)
#define V_CSR5_TXPROCSTATE(x)   _DD_MAKEVALUE(x,S_CSR5_TXPROCSTATE)
#define G_CSR5_TXPROCSTATE(x)   _DD_GETVALUE(x,S_CSR5_TXPROCSTATE,M_CSR5_TXPROCSTATE)

#define K_CSR5_TXSTOPPED	0x00	/* RESET or STOP command */
#define K_CSR5_TXFETCH		0x01	/* fetching tx desc */
#define K_CSR5_TXWAIT		0x02	/* waiting for end of tx */
#define K_CSR5_TXREAD		0x03	/* reading buffer into FIFO */
#define K_CSR5_TXSETUP		0x05	/* setup packet */
#define K_CSR5_TXSUSPEND	0x06	/* tx underflow or no tx desc */
#define K_CSR5_TXCLOSE		0x07	/* closing tx desc */

#define S_CSR5_ERRORBITS	23
#define M_CSR5_ERRORBITS	_DD_MAKEMASK(3,S_CSR5_ERRORBITS)
#define V_CSR5_ERRORBITS(x)     _DD_MAKEVALUE(x,S_CSR5_ERRORBITS)
#define G_CSR5_ERRORBITS(x)     _DD_GETVALUE(x,S_CSR5_ERRORBITS,M_CSR5_ERRORBITS)

#define K_CSR5_FBE_PARITY	0x00
#define K_CSR5_FBE_MABORT	0x01
#define K_CSR5_FBE_TABORT	0x02

#define M_CSR5_GPPORTINT	_DD_MAKEMASK1(26)  /* not 2104{0,1} */
#define M_CSR5_LINKCHANGED	_DD_MAKEMASK1(27)  /* not 2104{0,1} */


/* CSR6:  Operating Mode register */

#define M_CSR6_RXHASHFILT     	_DD_MAKEMASK1(0)
#define M_CSR6_RXSTART          _DD_MAKEMASK1(1)
#define M_CSR6_HASHONLY	     	_DD_MAKEMASK1(2)
#define M_CSR6_PASSBADFRAMES    _DD_MAKEMASK1(3)
#define M_CSR6_INVERSEFILT      _DD_MAKEMASK1(4)
#define M_CSR6_STOPBACKOFF    	_DD_MAKEMASK1(5)
#define M_CSR6_PROMISCUOUS      _DD_MAKEMASK1(6)
#define M_CSR6_PASSALLMULTI     _DD_MAKEMASK1(7)
#define M_CSR6_FULLDUPLEX       _DD_MAKEMASK1(9)

#define M_CSR6_INTLOOPBACK  	_DD_MAKEMASK1(10)
#define M_CSR6_EXTLOOPBACK	_DD_MAKEMASK1(11)

#define S_CSR6_OPMODE		10
#define M_CSR6_OPMODE           _DD_MAKEMASK(2,S_CSR6_OPMODE)
#define V_CSR6_OPMODE(x)        _DD_MAKEVALUE(x,S_CSR6_OPMODE)
#define G_CSR6_OPMODE(x)        _DD_GETVALUE(x,S_CSR6_OPMODE,M_CSR6_OPMODE)

#define M_CSR6_FORCECOLL    	_DD_MAKEMASK1(12)
#define M_CSR6_TXSTART          _DD_MAKEMASK1(13)

#define S_CSR6_THRESHCONTROL	14
#define M_CSR6_THRESHCONTROL	_DD_MAKEMASK(2,S_CSR6_THRESHCONTROL)
#define V_CSR6_THRESHCONTROL(x) _DD_MAKEVALUE(x,S_CSR6_THRESHCONTROL)
#define G_CSR6_THRESHCONTROL(x) _DD_GETVALUE(x,S_CSR6_THRESHCONTROL,M_CSR6_THRESHCONTROL)

#define M_CSR6_BACKPRESSURE     _DD_MAKEMASK1(16)  /* 21040 only */
#define M_CSR6_CAPTUREEFFECT    _DD_MAKEMASK1(17)

#define M_CSR6_PORTSEL       	_DD_MAKEMASK1(18)  /* not 2104{0,1} */
#define M_CSR6_HBDISABLE 	_DD_MAKEMASK1(19)  /* not 2104{0,1} */
#define M_CSR6_STOREFWD         _DD_MAKEMASK1(21)  /* not 2104{0,1} */
#define M_CSR6_TXTHRESH	  	_DD_MAKEMASK1(22)  /* not 2104{0,1} */
#define M_CSR6_PCSFUNC		_DD_MAKEMASK1(23)  /* not 2104{0,1} */
#define M_CSR6_SCRAMMODE 	_DD_MAKEMASK1(24)  /* not 2104{0,1} */
#define	M_CSR6_MBO		_DD_MAKEMASK1(25)  /* not 2104{0,1} */
#define M_CSR6_RXALL		_DD_MAKEMASK1(30)  /* not 2104{0,1} */

#define M_CSR6_SPECCAP		_DD_MAKEMASK1(31)  /* not 21040 */

#define K_CSR6_TXTHRES_128_72   0x00
#define K_CSR6_TXTHRES_256_96   0x01
#define K_CSR6_TXTHRES_512_128  0x02
#define K_CSR6_TXTHRES_1024_160 0x03


#define M_CSR6_SPEED_10		(M_CSR6_TXTHRESH)

#define M_CSR6_SPEED_100	(M_CSR6_HBDISABLE | \
				 M_CSR6_SCRAMMODE | \
				 M_CSR6_PCSFUNC | \
				 M_CSR6_PORTSEL)

#define M_CSR6_SPEED_10_MII	(M_CSR6_TXTHRESH | \
                                 M_CSR6_PORTSEL)

#define M_CSR6_SPEED_100_MII	(M_CSR6_HBDISABLE | \
				 M_CSR6_PORTSEL)


/* CSR7:  Interrupt mask register */

#define M_CSR7_TXINT		_DD_MAKEMASK1(0)
#define M_CSR7_TXSTOP           _DD_MAKEMASK1(1)
#define M_CSR7_TXBUFUNAVAIL 	_DD_MAKEMASK1(2)
#define M_CSR7_TXJABTIMEOUT     _DD_MAKEMASK1(3)
#define M_CSR7_LINKPASS		_DD_MAKEMASK1(4)  /* not 21040 */
#define M_CSR7_TXUNDERFLOW      _DD_MAKEMASK1(5)
#define M_CSR7_RXINT          	_DD_MAKEMASK1(6)
#define M_CSR7_RXBUFUNAVAIL 	_DD_MAKEMASK1(7)
#define M_CSR7_RXSTOPPED        _DD_MAKEMASK1(8)
#define M_CSR7_RXWDOGTIMEOUT   	_DD_MAKEMASK1(9)
#define M_CSR7_AUITPSW          _DD_MAKEMASK1(10)  /* 21040 only */
#define M_CSR7_TXEARLY		_DD_MAKEMASK1(10)  /* not 2104{0,1} */
#define M_CSR7_FD               _DD_MAKEMASK1(11)  /* 21040 only */
#define M_CSR7_GPTIMER		_DD_MAKEMASK1(11)  /* not 21040 */
#define M_CSR7_LINKFAIL         _DD_MAKEMASK1(12)
#define M_CSR7_FATALBUSERROR    _DD_MAKEMASK1(13)
#define M_CSR7_RXEARLY		_DD_MAKEMASK1(14)  /* not 21040 */
#define M_CSR7_ABNORMALINT    	_DD_MAKEMASK1(15)
#define M_CSR7_NORMALINT      	_DD_MAKEMASK1(16)
#define M_CSR7_GPPORT		_DD_MAKEMASK1(26)  /* not 2104{0,1} */
#define M_CSR7_LINKCHANGED	_DD_MAKEMASK1(27)  /* not 2104{0,1} */


/* CSR8: Missed Frame register */

#define M_CSR8_RXOVER_WRAP	_DD_MAKEMASK1(28)  /* not 2104{0,1} */
#define S_CSR8_RXOVER		17
#define M_CSR8_RXOVER		_DD_MAKEMASK(11,S_CSR8_RXOVER)  /* not 2104{0,1} */
#define V_CSR8_RXOVER(x)        _DD_MAKEVALUE(x,S_CSR8_RXOVER)
#define G_CSR8_RXOVER(x)        _DD_GETVALUE(x,S_CSR8_RXOVER,M_CSR8_RXOVER)

#define M_CSR8_MISSEDWRAP	_DD_MAKEMASK1(16)
#define S_CSR8_MISSED		0
#define M_CSR8_MISSED		_DD_MAKEMASK(16,S_CSR8_MISSED)
#define V_CSR8_MISSED(x)        _DD_MAKEVALUE(x,S_CSR8_MISSED)
#define G_CSR8_MISSED(x)        _DD_GETVALUE(x,S_CSR8_MISSED,M_CSR8_MISSED)


/* CSR9: ROM and MII register */

#define S_CSR9_ROMDATA		0
#define M_CSR9_ROMDATA		_DD_MAKEMASK(8,S_CSR9_ROMDATA)
#define V_CSR9_ROMDATA(x)       _DD_MAKEVALUE(x,S_CSR9_ROMDATA)
#define G_CSR9_ROMDATA(x)       _DD_GETVALUE(x,S_CSR9_ROMDATA,M_CSR9_ROMDATA)

#define M_CSR9_SROMCHIPSEL	_DD_MAKEMASK1(0)   /* not 21040 */
#define M_CSR9_SROMCLOCK	_DD_MAKEMASK1(1)   /* not 21040 */
#define M_CSR9_SROMDATAIN	_DD_MAKEMASK1(2)   /* not 21040 */
#define M_CSR9_SROMDATAOUT	_DD_MAKEMASK1(3)   /* not 21040 */

#define M_CSR9_REGSELECT	_DD_MAKEMASK1(10)  /* not 21040 */
#define M_CSR9_SERROMSEL	_DD_MAKEMASK1(11)  /* not 21040 */
#define M_CSR9_ROMSEL		_DD_MAKEMASK1(12)  /* not 21040 */
#define M_CSR9_ROMWRITE		_DD_MAKEMASK1(13)  /* not 21040 */
#define M_CSR9_ROMREAD		_DD_MAKEMASK1(14)  /* not 21040 */
#define M_CSR9_MODESEL		_DD_MAKEMASK1(15)  /* 21041 only */
#define M_CSR9_MDC		_DD_MAKEMASK1(16)  /* not 2104{0,1} */
#define M_CSR9_MDO		_DD_MAKEMASK1(17)  /* not 2104{0,1} */
#define M_CSR9_MIIMODE		_DD_MAKEMASK1(18)  /* not 2104{0,1} */
#define M_CSR9_MDI		_DD_MAKEMASK1(19)  /* not 2104{0,1} */

#define M_CSR9_DATANOTVALID	_DD_MAKEMASK1(31)  /* 21040 only */

#define M_CSR10_BOOTROMADDR	_DD_MAKEMASK(18,0) /* not 21040 */


/* CSR11 General Purpose Timer register */

#define S_CSR11_GPTIMER		0                  /* not 21040 */
#define M_CSR11_GPTIMER 	_DD_MAKEMASK(16,S_CSR11_GPTIMER)
#define V_CSR11_GPTIMER(x)      _DD_MAKEVALUE(x,S_CSR11_GPTIMER)
#define G_CSR11_GPTIMER(x)      _DD_GETVALUE(x,S_CSR11_GPTIMER,M_CSR11_GPTIMER)


#define M_CSR11_GPTIMERCONT     _DD_MAKEMASK1(16)  /* not 21040 */

#define S_CSR11_FDAUTOCONF      0                  /* 21040 only */
#define M_CSR11_FDAUTOCONF      _DD_MAKEMASK(16,S_CSR11_FDAUTOCONF)
#define V_CSR11_FDAUTOCONF(x)   _DD_MAKEVALUE(x,S_CSR11_FDAUTOCONF)
#define G_CSR11_FRAUTOCONF(x)   _DD_GETVALUE(x,S_CSR11_FDAUTOCONF,M_CSR11_AUTOCONF)


/* CSR12:  SIA Status register (21143) */

#define M_CSR12_MIIRPA		_DD_MAKEMASK1(0)
#define M_CSR12_100MBLINK	_DD_MAKEMASK1(1)
#define M_CSR12_10MBLINK	_DD_MAKEMASK1(2)
#define M_CSR12_AUTOPOLSTATE	_DD_MAKEMASK1(3)

#define M_CSR12_RXAUIACT	_DD_MAKEMASK1(8)
#define M_CSR12_RX10BASETACT	_DD_MAKEMASK1(9)
#define M_CSR12_NLPDETECT	_DD_MAKEMASK1(10)
#define M_CSR12_TXREMFAULT	_DD_MAKEMASK1(11)

#define S_CSR12_AUTONEGARBIT	12
#define M_CSR12_AUTONEGARBIT	_DD_MAKEMASK(3,S_CSR12_AUTONEGARBIT)
#define V_CSR12_AUTONEGARBIT(x) _DD_MAKEVALUE(x,S_CSR12_AUTONEGARBIT)
#define G_CSR12_AUTONEGARBIT(x) _DD_GETVALUE(x,S_CSR12_AUTONEGARBIT,M_CSR12_AUTONEGARBIT)

#define M_CSR12_LINKPARTNEG	_DD_MAKEMASK1(15)

#define S_CSR12_LINKPARTCODE	16
#define M_CSR12_LINKPARTCODE	_DD_MAKEMASK(16,S_CSR12_LINKPARTCODE)
#define V_CSR12_LINKPARTCODE(x) _DD_MAKEVALUE(x,S_CSR12_LINKPARTCODE)
#define G_CSR12_LINKPARTCODE(x) _DD_GETVALUE(x,S_CSR12_LINKPARTCODE,M_CSR12_LINKPARTCODE)


/* CSR12:  SIA Status register (21041, also 31:12, 3:3 as for 21143) */

#define M_CSR12_NETCONNERR	_DD_MAKEMASK1(1)
#define M_CSR12_LINKFAIL	_DD_MAKEMASK1(2)
#define M_CSR12_SELPORTACT	_DD_MAKEMASK1(8)
#define M_CSR12_NONSELPORTACT	_DD_MAKEMASK1(9)
#define M_CSR12_AUTONEGRESTART	_DD_MAKEMASK1(10)
#define M_CSR12_UNSTABLENLP	_DD_MAKEMASK1(11)


/* CSR12: General Purpose Port register (21140) */

#define S_CSR12_DATA		0
#define M_CSR12_DATA		_DD_MAKEMASK(8,S_CSR12_DATA)
#define V_CSR12_DATA		_DD_MAKEVALUE(x,S_CSR12_DATA,M_CSR12_DATA)
#define G_CSR12_DATA(x)		_DD_GETVALUE(x,S_CSR12_DATA,M_CSR12_DATA)

#define M_CSR12_CONTROL		_DD_MAKEMASK1(8)


/* CSR13:  SIA Mode 0 register (21143 and 21041) */

#define M_CSR13_CONN_NOT_RESET	_DD_MAKEMASK1(0)
#define M_CSR13_CONN_CSR_AUTO	_DD_MAKEMAKS1(2)   /* 21041 only */
#define M_CSR13_CONN_AUI_10BT	_DD_MAKEMASK1(3)


/* CSR14:  SIA Mode 1 register (21143 and 21041) */

#define M_CSR14_ENCODER		_DD_MAKEMASK1(0)
#define M_CSR14_LOOPBACK	_DD_MAKEMASK1(1)
#define M_CSR14_DRIVER		_DD_MAKEMASK1(2)
#define M_CSR14_LINKPULSE	_DD_MAKEMASK1(3)

#define S_CSR14_COMPENSATE	4
#define M_CSR14_COMPENSATE	_DD_MAKEMASK(2,S_CSR14_COMPENSATE)
#define V_CSR15_COMPENSATE(x)   _DD_MAKEVALUE(x,S_CSR15_COMPENSATE)
#define G_CSR15_COMPENSATE(x)   _DD_GETVALUE(x,S_CSR15_COMPENSATE,M_CSR15_COMPENSATE)

#define M_CSR14_HALFDUPLEX10BASET _DD_MAKEMASK1(6)
#define M_CSR14_AUTONEGOTIATE	_DD_MAKEMASK1(7)
#define M_CSR14_RXSQUELCH	_DD_MAKEMASK1(8)
#define M_CSR14_COLLSQUELCH	_DD_MAKEMASK1(9)
#define M_CSR14_COLLDETECT	_DD_MAKEMASK1(10)
#define M_CSR14_SIGQUALGEN	_DD_MAKEMASK1(11)
#define M_CSR14_LINKTEST	_DD_MAKEMASK1(12)
#define M_CSR14_AUTOPOLARITY	_DD_MAKEMASK1(13)
#define M_CSR14_SETPOLARITY	_DD_MAKEMASK1(14)
#define M_CSR14_10BASETAUIAUTO	_DD_MAKEMASK1(15)
#define M_CSR14_100BASETHALFDUP	_DD_MAKEMASK1(16)  /* not 21041 */
#define M_CSR14_100BASETFULLDUP	_DD_MAKEMASK1(17)  /* not 21041 */
#define M_CSR14_100BASET4	_DD_MAKEMASK1(18)  /* not 21041 */

#define M_CSR14_10BT_HD		0x7F3F
#define M_CSR14_10BT_FD		0x7F3D	


/* CSR15:  SIA Mode 2 register (21143 and 21041) */

#define M_CSR15_GP_JABBERDIS	_DD_MAKEMASK1(0)   /* 21041 only */
#define M_CSR15_GP_HOSTUNJAB	_DD_MAKEMASK1(1)
#define M_CSR15_GP_JABBERCLK	_DD_MAKEMASK1(2)
#define M_CSR15_GP_AUIBNC	_DD_MAKEMASK1(3)
#define M_CSR15_GP_RXWATCHDIS	_DD_MAKEMASK1(4)
#define M_CSR15_GP_RXWATCHREL	_DD_MAKEMASK1(5)

/* (CSR15: 21143 only) */

#define S_CSR15_GP_GPDATA	16
#define M_CSR15_GP_GPDATA	_DD_MAKEMASK(4,S_CSR15_GP_GPDATA)
#define V_CSR15_GP_GPDATA(x)    _DD_MAKEVALUE(x,S_CSR15_GP_GPDATA)
#define G_CSR15_GP_GPDATA(x)    _DD_GETVALUE(x,S_CSR15_GP_GPDATA,M_CSR15_GP_GPDATA)

#define M_CSR15_GP_LED0		_DD_MAKEMASK1(20)
#define M_CSR15_GP_LED1		_DD_MAKEMASK1(21)
#define M_CSR15_GP_LED2		_DD_MAKEMASK1(22)
#define M_CSR15_GP_LED3		_DD_MAKEMASK1(23)
#define M_CSR15_GP_INTPORT0	_DD_MAKEMASK1(24)
#define M_CSR15_GP_INTPORT1	_DD_MAKEMASK1(25)
#define M_CSR15_GP_RXMATCH	_DD_MAKEMASK1(26)
#define M_CSR15_GP_CONTROLWRITE	_DD_MAKEMASK1(27)
#define M_CSR15_GP_GPINT0	_DD_MAKEMASK1(28)
#define M_CSR15_GP_GPINT1	_DD_MAKEMASK1(29)
#define M_CSR15_GP_RXMATCHINT	_DD_MAKEMASK1(30)

#define M_CSR15_DEFAULT_VALUE		0x00050008	
#define M_CSR15_CONFIG_GEPS_LEDS	0x08af0000

/* (CSR15: 21041 only) */

#define M_CSR15_GP_LED1ENB	_DD_MAKEMASK1(6)
#define M_CSR15_GP_LED1VALUE	_DD_MAKEMASK1(7)
#define M_CSR15_GP_TSTCLK	_DD_MAKEMASK1(8)
#define M_CSR15_GP_FORCEUNSQ	_DD_MAKEMASK1(9)
#define M_CSR15_GP_FORCEFAIL	_DD_MAKEMASK1(10)
#define M_CSR15_GP_LEDSTRDIS	_DD_MAKEMASK1(11)
#define M_CSR15_GP_PLLTEST	_DD_MAKEMASK1(12)
#define M_CSR15_GP_FORCERXLOW	_DD_MAKEMASK1(13)
#define M_CSR15_GP_LED2ENB	_DD_MAKEMASK1(14)
#define M_CSR15_GP_LED2VALUE	_DD_MAKEMASK1(15)


/* CSR15: Watchdog Timer register (21140) */

#define M_CSR15_WT_JABBER	_DD_MAKEMASK1(0)
#define M_CSR15_WT_HOSTUNJAB	_DD_MAKEMASK1(1)
#define M_CSR15_WT_JABBERCLK	_DD_MAKEMASK1(2)
#define M_CSR15_WT_RXWATCHDIS	_DD_MAKEMASK1(4)
#define M_CSR15_WT_RXWATCHREL	_DD_MAKEMASK1(5)


/*  *********************************************************************
    *  Receive Descriptors
    ********************************************************************* */

#define M_RDES0_OWNSYS          0
#define M_RDES0_OWNADAP         _DD_MAKEMASK1(31)

#define S_RDES0_FRAMELEN	16
#define M_RDES0_FRAMELEN        _DD_MAKEMASK(14,S_RDES0_FRAMELEN)
#define V_RDES0_FRAMELEN(x)     _DD_MAKEVALUE(x,S_RDES0_FRAMELEN)
#define G_RDES0_FRAMELEN(x)     _DD_GETVALUE(x,S_RDES0_FRAMELEN,M_RDES0_FRAMELEN)

#define M_RDES0_ZERO		_DD_MAKEMASK1(0)
#define M_RDES0_OVFL		_DD_MAKEMAKS1(0)   /* 21041 only */
#define M_RDES0_CRCERR          _DD_MAKEMASK1(1)
#define M_RDES0_DRIBBLE         _DD_MAKEMASK1(2)
#define M_RDES0_MIIERROR	_DD_MAKEMASK1(3)   /* not 21041 */
#define M_RDES0_WDOGTIMER       _DD_MAKEMASK1(4)
#define M_RDES0_FRAMETYPE       _DD_MAKEMASK1(5)
#define M_RDES0_COLLSEEN        _DD_MAKEMASK1(6)
#define M_RDES0_FRAMETOOLONG    _DD_MAKEMASK1(7)
#define M_RDES0_LASTDES         _DD_MAKEMASK1(8)
#define M_RDES0_FIRSTDES        _DD_MAKEMASK1(9)
#define M_RDES0_MCASTFRAME      _DD_MAKEMASK1(10)
#define M_RDES0_RUNTFRAME       _DD_MAKEMASK1(11)

#define S_RDES0_DATATYPE	12
#define M_RDES0_DATATYPE        _DD_MAKEMASK(2,S_RDES0_DATATYPE)
#define V_RDES0_DATATYPE(x)     _DD_MAKEVALUE(x,S_RDES0_DATATYPE)
#define G_RDES0_DATATYPE(x)     _DD_GETVALUE(x,S_RDES0_DATATYPE,M_RDES0_DATATYPE)

#define M_RDES0_ERROR		_DD_MAKEMASK1(14)
#define M_RDES0_ERRORSUM        _DD_MAKEMASK1(15)
#define M_RDES0_FILTFAIL	_DD_MAKEMASK1(30)  /* not 21041 */

#define S_RDES1_BUF1SIZE	0
#define M_RDES1_BUF1SIZE        _DD_MAKEMASK(11,S_TDES1_BUF1SIZE)
#define V_RDES1_BUF1SIZE(x)     _DD_MAKEVALUE(x,S_RDES1_BUF1SIZE)
#define G_RDES1_BUF1SIZE(x)     _DD_GETVALUE(x,S_RDES1_BUF1SIZE,M_RDES1_BUF1SIZE)

#define S_RDES1_BUF2SIZE	11
#define M_RDES1_BUF2SIZE        _DD_MAKEMASK(11,S_TDES2_BUF2SIZE)
#define V_RDES1_BUF2SIZE(x)     _DD_MAKEVALUE(x,S_RDES1_BUF2SIZE)
#define G_RDES1_BUF2SIZE(x)     _DD_GETVALUE(x,S_RDES1_BUF2SIZE,M_RDES1_BUF2SIZE)

#define M_RDES1_CHAINED         _DD_MAKEMASK1(24)
#define M_RDES1_ENDOFRING       _DD_MAKEMASK1(25)

#define M_RDES2_BUFADDR		0xFFFFFFFF
#define M_RDES3_BUFADDR		0xFFFFFFFF

/*  *********************************************************************
    *  Transmit Descriptors
    ********************************************************************* */

#define M_TDES0_OWNSYS          0
#define M_TDES0_OWNADAP         _DD_MAKEMASK1(31)

#define M_TDES0_DEFERRED        _DD_MAKEMASK1(0)
#define M_TDES0_UNDERFLOW       _DD_MAKEMASK1(1)
#define M_TDES0_LINK_FAIL       _DD_MAKEMASK1(2)

#define S_TDES0_COLLCOUNT	3
#define M_TDES0_COLLCOUNT	_DD_MAKEMASK(4,S_TDES0_COLLCOUNT)
#define V_TDES0_COLLCOUNT(x)    _DD_MAKEVALUE(x,S_TDES0_COLLCOUNT)
#define G_TDES0_COLLCOUNT(x)    _DD_GETVALUE(x,S_TDES0_COLLCOUNT,M_TDES0_COLLCOUNT)

#define M_TDES0_HEARTBEAT_FAIL           _DD_MAKEMASK1(7)
#define M_TDES0_EXCESSIVE_COLLISIONS     _DD_MAKEMASK1(8)
#define M_TDES0_LATE_COLLISION           _DD_MAKEMASK1(9)
#define M_TDES0_NO_CARRIER               _DD_MAKEMASK1(10)
#define M_TDES0_LOSS_OF_CARRIER          _DD_MAKEMASK1(11)
#define M_TDES0_TX_JABBER_TIMEOUT        _DD_MAKEMASK1(14)
#define M_TDES0_ERROR_SUMMARY            _DD_MAKEMASK1(15)
#define M_TDES0_OWN_BIT                  _DD_MAKEMASK1(31)

#define S_TDES1_BUF1SIZE	0
#define M_TDES1_BUF1SIZE        _DD_MAKEMASK(11,S_TDES1_BUF1SIZE)
#define V_TDES1_BUF1SIZE(x)     _DD_MAKEVALUE(x,S_TDES1_BUF1SIZE)
#define G_TDES1_BUF1SIZE(x)     _DD_GETVALUE(x,S_TDES1_BUF1SIZE,M_TDES1_BUF1SIZE)

#define S_TDES1_BUF2SIZE	11
#define M_TDES1_BUF2SIZE        _DD_MAKEMASK(11,S_TDES2_BUF2SIZE)
#define V_TDES1_BUF2SIZE(x)     _DD_MAKEVALUE(x,S_TDES1_BUF2SIZE)
#define G_TDES1_BUF2SIZE(x)     _DD_GETVALUE(x,S_TDES1_BUF2SIZE,M_TDES1_BUF2SIZE)

#define M_TDES1_FT0             _DD_MAKEMASK1(22)
#define M_TDES1_NOPADDING       _DD_MAKEMASK1(23)
#define M_TDES1_CHAINED      	_DD_MAKEMASK1(24)
#define M_TDES1_ENDOFRING       _DD_MAKEMASK1(25)
#define M_TDES1_NOADDCRC        _DD_MAKEMASK1(26)
#define M_TDES1_SETUP           _DD_MAKEMASK1(27)
#define M_TDES1_FT1             _DD_MAKEMASK1(28)
#define M_TDES1_FIRSTSEG        _DD_MAKEMASK1(29)
#define M_TDES1_LASTSEG         _DD_MAKEMASK1(30)
#define M_TDES1_INTERRUPT  	_DD_MAKEMASK1(31)

#define M_TDES2_BUFADDR		0xFFFFFFFF
#define M_TDES3_BUFADDR		0xFFFFFFFF


/* CAM  */

#define CAM_HASH_THRESHOLD          14
#define CAM_PERFECT_ENTRIES         16

#define CAM_SETUP_BUFFER_SIZE       192

#endif /* _DC21143_H_ */