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
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
|
/* $NetBSD: if_sipreg.h,v 1.21 2020/03/08 02:44:12 thorpej Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Jason R. Thorpe.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/*-
* Copyright (c) 1999 Network Computer, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of Network Computer, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY NETWORK COMPUTER, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _DEV_PCI_IF_SIPREG_H_
#define _DEV_PCI_IF_SIPREG_H_
/*
* Register description for the Silicon Integrated Systems SiS 900,
* SiS 7016, National Semiconductor DP83815 10/100, and National
* Semiconduction DP83820 10/100/1000 PCI Ethernet controller.
*
* Written by Jason R. Thorpe for Network Computer, Inc.
*/
/*
* Transmit FIFO size. Used to compute the transmit drain threshold.
*
* On the SiS 900, the transmit FIFO is arranged as a 512 32-bit memory
* array.
*
* On the DP83820, we have an 8KB transmit FIFO.
*/
#define DP83820_SIP_TXFIFO_SIZE 8192
#define OTHER_SIP_TXFIFO_SIZE (512 * 4)
/*
* The SiS900 uses a single descriptor format for both transmit
* and receive descriptor chains.
*
* Note the DP83820 can use 64-bit DMA addresses for link and bufptr.
* Note also that the buffer pointer and command/status words are in
* the opposite order on the DP83820 to facilitate 64-bit DMA addresses.
*
* For transmit, buffers need not be aligned. For receive, buffers
* must be aligned to 4-byte (8-byte on DP83820) boundaries.
*/
#define SIP_DESC_LINK 0 /* link to next descriptor */
#define SIP_DESC_CMDSTS 1 /* ccommand/status */
#define SIP_DESC_BUFPTR 2 /* pointer to DMA segment */
#define GSIP_DESC_LINK 0
#define GSIP_DESC_BUFPTR 1
#define GSIP_DESC_CMDSTS 2
#define GSIP_DESC_EXTSTS 3 /* extended status */
#define GSIP64_DESC_LINK_LO 0
#define GSIP64_DESC_LINK_HI 1
#define GSIP64_DESC_BUFPTR_LO 2
#define GSIP64_DESC_BUFPTR_HI 3
#define GSIP64_DESC_CMDSTS 4
#define GSIP64_DESC_EXTSTS 5
#define SIP_NDESC_WORDS 6
struct sip_desc {
uint32_t sipd_words[SIP_NDESC_WORDS];
};
/*
* CMDSTS bits common to transmit and receive.
*/
#define CMDSTS_OWN 0x80000000 /* owned by consumer */
#define CMDSTS_MORE 0x40000000 /* more descriptors */
#define CMDSTS_INTR 0x20000000 /* interrupt when ownership changes */
#define CMDSTS_SUPCRC 0x10000000 /* suppress CRC */
#define CMDSTS_OK 0x08000000 /* packet ok */
#define DP83820_CMDSTS_SIZE_MASK 0x0000ffff /* packet size */
#define OTHER_CMDSTS_SIZE_MASK 0x000007ff /* packet size */
#define CMDSTS_SIZE(sc, x) ((x) & sc->sc_bits.b_cmdsts_size_mask)
/*
* CMDSTS bits for transmit.
*/
#define CMDSTS_Tx_TXA 0x04000000 /* transmit abort */
#define CMDSTS_Tx_TFU 0x02000000 /* transmit FIFO underrun */
#define CMDSTS_Tx_CRS 0x01000000 /* carrier sense lost */
#define CMDSTS_Tx_TD 0x00800000 /* transmit deferred */
#define CMDSTS_Tx_ED 0x00400000 /* excessive deferral */
#define CMDSTS_Tx_OWC 0x00200000 /* out of window collision */
#define CMDSTS_Tx_EC 0x00100000 /* excessive collisions */
#define CMDSTS_Tx_CCNT 0x000f0000 /* collision count */
#define CMDSTS_COLLISIONS(x) (((x) & CMDSTS_Tx_CCNT) >> 16)
/*
* CMDSTS bits for receive.
*/
#define CMDSTS_Rx_RXA 0x04000000 /* receive abort */
#define CMDSTS_Rx_RXO 0x02000000 /* receive overrun */
#define CMDSTS_Rx_DEST 0x01800000 /* destination class */
#define CMDSTS_Rx_LONG 0x00400000 /* packet too long */
#define CMDSTS_Rx_RUNT 0x00200000 /* runt packet */
#define CMDSTS_Rx_ISE 0x00100000 /* invalid symbol error */
#define CMDSTS_Rx_CRCE 0x00080000 /* CRC error */
#define CMDSTS_Rx_FAE 0x00040000 /* frame alignment error */
#define CMDSTS_Rx_LBP 0x00020000 /* loopback packet */
/* #ifdef DP83820 */
#define CMDSTS_Rx_IRL 0x00010000 /* in-range length error */
/* #else */
#define CMDSTS_Rx_COL 0x00010000 /* collision activity */
/* #endif DP83820 */
#define CMDSTS_Rx_DEST_REJ 0x00000000 /* packet rejected */
#define CMDSTS_Rx_DEST_STA 0x00800000 /* matched station address */
#define CMDSTS_Rx_DEST_MUL 0x01000000 /* multicast address */
#define CMDSTS_Rx_DEST_BRD 0x01800000 /* broadcast address */
/*
* EXTSTS bits.
*/
#define EXTSTS_Rx_UDPERR 0x00400000 /* UDP checksum error */
#define EXTSTS_UDPPKT 0x00200000 /* perform UDP checksum */
#define EXTSTS_Rx_TCPERR 0x00100000 /* TCP checksum error */
#define EXTSTS_TCPPKT 0x00080000 /* perform TCP checksum */
#define EXTSTS_Rx_IPERR 0x00040000 /* IP header checksum error */
#define EXTSTS_IPPKT 0x00020000 /* perform IP header checksum */
#define EXTSTS_VPKT 0x00010000 /* insert VLAN tag */
#define EXTSTS_VTCI 0x0000ffff /* VLAN tag control information */
/*
* PCI Configuration space registers.
*/
#define SIP_PCI_CFGIOA (PCI_MAPREG_START + 0x00)
#define SIP_PCI_CFGMA (PCI_MAPREG_START + 0x04)
/* DP83820 only */
#define SIP_PCI_CFGMA1 (PCI_MAPREG_START + 0x08)
#define SIP_PCI_CFGEROMA 0x30 /* expansion ROM address */
#define SIP_PCI_CFGPMC 0x40 /* power management cap. */
#define SIP_PCI_CFGPMCSR 0x44 /* power management ctl. */
/*
* MAC Operation Registers
*/
#define SIP_CR 0x00 /* command register */
/* DP83820 only */
#define CR_RXPRI3 0x00010000 /* Rx priority queue select */
#define CR_RXPRI2 0x00008000 /* Rx priority queue select */
#define CR_RXPRI1 0x00004000 /* Rx priority queue select */
#define CR_RXPRI0 0x00002000 /* Rx priority queue select */
#define CR_TXPRI3 0x00001000 /* Tx priority queue select */
#define CR_TXPRI2 0x00000800 /* Tx priority queue select */
#define CR_TXPRI1 0x00000400 /* Tx priority queue select */
#define CR_TXPRI0 0x00000200 /* Tx priority queue select */
#define CR_RLD 0x00000400 /* reload from NVRAM */
#define CR_RST 0x00000100 /* software reset */
#define CR_SWI 0x00000080 /* software interrupt */
#define CR_RXR 0x00000020 /* receiver reset */
#define CR_TXR 0x00000010 /* transmit reset */
#define CR_RXD 0x00000008 /* receiver disable */
#define CR_RXE 0x00000004 /* receiver enable */
#define CR_TXD 0x00000002 /* transmit disable */
#define CR_TXE 0x00000001 /* transmit enable */
#define SIP_CFG 0x04 /* configuration register */
#define CFG_LNKSTS 0x80000000 /* link status (83815) */
/* #ifdef DP83820 */
#define CFG_SPEED1000 0x40000000 /* 1000Mb/s input pin */
#define CFG83820_SPEED100 0x20000000 /* 100Mb/s input pin */
#define CFG_DUPSTS 0x10000000 /* full-duplex status */
#define CFG_TBI_EN 0x01000000 /* ten-bit interface enable */
#define CFG_MODE_1000 0x00400000 /* 1000Mb/s mode enable */
#define CFG_PINT_DUP 0x00100000 /* interrupt on PHY DUP change */
#define CFG_PINT_LNK 0x00080000 /* interrupt on PHY LNK change */
#define CFG_PINT_SPD 0x00040000 /* interrupt on PHY SPD change */
#define CFG_TMRTEST 0x00020000 /* timer test mode */
#define CFG_MRM_DIS 0x00010000 /* MRM disable */
#define CFG_MWI_DIS 0x00008000 /* MWI disable */
#define CFG_T64ADDR 0x00004000 /* target 64-bit addressing enable */
#define CFG_PCI64_DET 0x00002000 /* 64-bit PCI bus detected */
#define CFG_DATA64_EN 0x00001000 /* 64-bit data enable */
#define CFG_M64ADDR 0x00000800 /* master 64-bit addressing enable */
/* #else */
#define CFG83815_SPEED100 0x40000000 /* 100Mb/s (83815) */
#define CFG_FDUP 0x20000000 /* full duplex (83815) */
#define CFG_POL 0x10000000 /* 10Mb/s polarity (83815) */
#define CFG_ANEG_DN 0x08000000 /* autonegotiation done (83815) */
#define CFG_PHY_CFG 0x00fc0000 /* PHY configuration (83815) */
#define CFG_PINT_ACEN 0x00020000 /* PHY interrupt auto clear (83815) */
#define CFG_PAUSE_ADV 0x00010000 /* pause advertise (83815) */
#define CFG_ANEG_SEL 0x0000e000 /* autonegotiation select (83815) */
/* #endif DP83820 */
#define CFG_PHY_RST 0x00000400 /* PHY reset (83815) */
#define CFG_PHY_DIS 0x00000200 /* PHY disable (83815) */
/* #ifdef DP83820 */
#define CFG_EXTSTS_EN 0x00000100 /* extended status enable */
/* #else */
#define CFG_EUPHCOMP 0x00000100 /* 83810 descriptor compat (83815) */
/* #endif DP83820 */
#define CFG_EDBMASTEN 0x00002000 /* 635,900B ?? from linux driver */
#define CFG_RNDCNT 0x00000400 /* 635,900B ?? from linux driver */
#define CFG_FAIRBO 0x00000200 /* 635,900B ?? from linux driver */
#define CFG_REQALG 0x00000080 /* PCI bus request alg. */
#define CFG_SB 0x00000040 /* single backoff */
#define CFG_POW 0x00000020 /* program out of window timer */
#define CFG_EXD 0x00000010 /* excessive defferal timer disable */
#define CFG_PESEL 0x00000008 /* parity error detection action */
/* #ifdef DP83820 */
#define CFG_BROM_DIS 0x00000004 /* boot ROM disable */
#define CFG_EXT_125 0x00000002 /* external 125MHz reference select */
/* #endif DP83820 */
#define CFG_BEM 0x00000001 /* big-endian mode */
#define SIP_EROMAR 0x08 /* EEPROM access register */
#define EROMAR_REQ 0x00000400 /* SiS 96x specific */
#define EROMAR_DONE 0x00000200 /* SiS 96x specific */
#define EROMAR_GNT 0x00000100 /* SiS 96x specific */
#define EROMAR_MDC 0x00000040 /* MII clock */
#define EROMAR_MDDIR 0x00000020 /* MII direction (1 == MAC->PHY) */
#define EROMAR_MDIO 0x00000010 /* MII data */
#define EROMAR_EECS 0x00000008 /* chip select */
#define EROMAR_EESK 0x00000004 /* clock */
#define EROMAR_EEDO 0x00000002 /* data out */
#define EROMAR_EEDI 0x00000001 /* data in */
#define SIP_PTSCR 0x0c /* PCI test control register */
#define PTSCR_RBIST_RST 0x00002000 /* SRAM BIST reset */
#define PTSCR_RBIST_EN 0x00000400 /* SRAM BIST enable */
#define PTSCR_RBIST_DONE 0x00000200 /* SRAM BIST done */
#define PTSCR_RBIST_RX1FAIL 0x00000100 /* Rx status FIFO BIST fail */
#define PTSCR_RBIST_RX0FAIL 0x00000080 /* Rx data FIFO BIST fail */
#define PTSCR_RBIST_TX0FAIL 0x00000020 /* Tx data FIFO BIST fail */
#define PTSCR_RBIST_HFFAIL 0x00000010 /* hash filter BIST fail */
#define PTSCR_RBIST_RXFAIL 0x00000008 /* Rx filter BIST failed */
#define PTSCR_EELOAD_EN 0x00000004 /* EEPROM load initiate */
#define PTSCR_EEBIST_EN 0x00000002 /* EEPROM BIST enable */
#define PTSCR_EEBIST_FAIL 0x00000001 /* EEPROM BIST failed */
#define PTSCR_DIS_TEST 0x40000000 /* discard timer test mode */
#define PTSCR_EROM_TACC 0x0f000000 /* boot rom access time */
#define PTSCR_TRRAMADR 0x001ff000 /* TX/RX RAM address */
#define PTSCR_BMTEN 0x00000200 /* bus master test enable */
#define PTSCR_RRTMEN 0x00000080 /* receive RAM test mode enable */
#define PTSCR_TRTMEN 0x00000040 /* transmit RAM test mode enable */
#define PTSCR_SRTMEN 0x00000020 /* status RAM test mode enable */
#define PTSCR_SRAMADR 0x0000001f /* status RAM address */
#define SIP_ISR 0x10 /* interrupt status register */
/* DP83820 only */
#define ISR_TXDESC3 0x40000000 /* Tx queue 3 */
#define ISR_TXDESC2 0x20000000 /* Tx queue 2 */
#define ISR_TXDESC1 0x10000000 /* Tx queue 1 */
#define ISR_TXDESC0 0x08000000 /* Tx queue 0 */
#define ISR_RXDESC3 0x04000000 /* Rx queue 3 */
#define ISR_RXDESC2 0x02000000 /* Rx queue 2 */
#define ISR_RXDESC1 0x01000000 /* Rx queue 1 */
#define ISR_RXDESC0 0x00800000 /* Rx queue 0 */
/* non-DP83820 only */
#define ISR_WAKEEVT 0x10000000 /* wake up event */
#if 0
#ifdef DP83820
#define ISR_TXRCMP 0x00400000 /* transmit reset complete */
#define ISR_RXRCMP 0x00200000 /* receive reset complete */
#define ISR_DPERR 0x00100000 /* detected parity error */
#define ISR_SSERR 0x00080000 /* signalled system error */
#define ISR_RMABT 0x00040000 /* received master abort */
#define ISR_RTABT 0x00020000 /* received target abort */
#else
#define ISR_TXRCMP 0x02000000 /* transmit reset complete */
#define ISR_RXRCMP 0x01000000 /* receive reset complete */
#define ISR_DPERR 0x00800000 /* detected parity error */
#define ISR_SSERR 0x00400000 /* signalled system error */
#define ISR_RMABT 0x00200000 /* received master abort */
#define ISR_RTABT 0x00100000 /* received target abort */
#endif /* DP83820 */
#endif /* 0 */
/* SiS 900 only */
#define ISR_PAUSE_END 0x08000000 /* end of transmission pause */
#define ISR_PAUSE_ST 0x04000000 /* start of transmission pause */
#define ISR_RXSOVR 0x00010000 /* Rx status FIFO overrun */
#define ISR_HIBERR 0x00008000 /* high bits error set */
/* DP83820 only */
#define ISR_PHY 0x00004000 /* PHY interrupt */
#define ISR_PME 0x00002000 /* power management event */
#define ISR_SWI 0x00001000 /* software interrupt */
/* DP83820 only */
#define ISR_MIB 0x00000800 /* MIB service */
#define ISR_TXURN 0x00000400 /* Tx underrun */
#define ISR_TXIDLE 0x00000200 /* Tx idle */
#define ISR_TXERR 0x00000100 /* Tx error */
#define ISR_TXDESC 0x00000080 /* Tx descriptor interrupt */
#define ISR_TXOK 0x00000040 /* Tx okay */
#define ISR_RXORN 0x00000020 /* Rx overrun */
#define ISR_RXIDLE 0x00000010 /* Rx idle */
#define ISR_RXEARLY 0x00000008 /* Rx early */
#define ISR_RXERR 0x00000004 /* Rx error */
#define ISR_RXDESC 0x00000002 /* Rx descriptor interrupt */
#define ISR_RXOK 0x00000001 /* Rx okay */
#define SIP_IMR 0x14 /* interrupt mask register */
/* See bits in SIP_ISR */
#define SIP_IER 0x18 /* interrupt enable register */
#define IER_IE 0x00000001 /* master interrupt enable */
/* #ifdef DP83820 */
#define SIP_IHR 0x1c /* interrupt hold-off register */
#define IHR_IHCTL 0x00000100 /* interrupt hold-off control */
#define IHR_IH 0x000000ff /* interrupt hold-off timer (100us) */
/* #else */
#define SIP_ENPHY 0x1c /* enhanced PHY access register */
#define ENPHY_PHYDATA 0xffff0000 /* PHY data */
#define ENPHY_DATA_SHIFT 16
#define ENPHY_PHYADDR 0x0000f800 /* PHY number (7016 only) */
#define ENPHY_PHYADDR_SHIFT 11
#define ENPHY_REGADDR 0x000007c0 /* PHY register */
#define ENPHY_REGADDR_SHIFT 6
#define ENPHY_RWCMD 0x00000020 /* 1 == read, 0 == write */
#define ENPHY_ACCESS 0x00000010 /* PHY access enable */
/* #endif DP83820 */
#define SIP_TXDP 0x20 /* transmit descriptor pointer reg */
/* DP83820 only */
#define SIP_TXDP_HI 0x24 /* transmit descriptor pointer (high) reg */
#define DP83820_SIP_TXCFG 0x28 /* transmit configuration register */
#define OTHER_SIP_TXCFG 0x24 /* transmit configuration register */
#define TXCFG_CSI 0x80000000 /* carrier sense ignore */
#define TXCFG_HBI 0x40000000 /* heartbeat ignore */
#define TXCFG_MLB 0x20000000 /* MAC loopback */
#define TXCFG_ATP 0x10000000 /* automatic transmit padding */
#define TXCFG_MXDMA 0x00700000 /* max DMA burst size */
/* DP83820 only */
#define TXCFG_ECRETRY 0x008000000 /* excessive collision retry enable */
#define TXCFG_BRST_DIS 0x00080000 /* 1000Mb/s burst disable */
/* DP83820 only */
#define TXCFG_MXDMA_1024 0x00000000 /* 1024 bytes */
#if 0
#ifdef DP83820
#define TXCFG_MXDMA_8 0x00100000 /* 8 bytes */
#define TXCFG_MXDMA_16 0x00200000 /* 16 bytes */
#define TXCFG_MXDMA_32 0x00300000 /* 32 bytes */
#define TXCFG_MXDMA_64 0x00400000 /* 64 bytes */
#define TXCFG_MXDMA_128 0x00500000 /* 128 bytes */
#define TXCFG_MXDMA_256 0x00600000 /* 256 bytes */
#define TXCFG_MXDMA_512 0x00700000 /* 512 bytes */
#define TXCFG_FLTH_MASK 0x0000ff00 /* Fx fill threshold */
#define TXCFG_DRTH_MASK 0x000000ff /* Tx drain threshold */
#else
#define TXCFG_MXDMA_512 0x00000000 /* 512 bytes */
#define TXCFG_MXDMA_8 0x00200000 /* 8 bytes */
#define TXCFG_MXDMA_16 0x00300000 /* 16 bytes */
#define TXCFG_MXDMA_32 0x00400000 /* 32 bytes */
#define TXCFG_MXDMA_64 0x00500000 /* 64 bytes */
#define TXCFG_MXDMA_128 0x00600000 /* 128 bytes */
#define TXCFG_MXDMA_256 0x00700000 /* 256 bytes */
#define TXCFG_FLTH_MASK 0x00003f00 /* Tx fill threshold */
#define TXCFG_DRTH_MASK 0x0000003f /* Tx drain threshold */
#endif /* DP83820 */
#endif /* 0 */
/* non-DP83820 only */
#define TXCFG_MXDMA_4 0x00100000 /* 4 bytes */
#define SIP_GPIOR 0x2c /* general purpose i/o register */
#define GPIOR_GP5_IN 0x00004000 /* GP 5 in */
#define GPIOR_GP4_IN 0x00002000 /* GP 4 in */
#define GPIOR_GP3_IN 0x00001000 /* GP 3 in */
#define GPIOR_GP2_IN 0x00000800 /* GP 2 in */
#define GPIOR_GP1_IN 0x00000400 /* GP 1 in */
#define GPIOR_GP5_OE 0x00000200 /* GP 5 out enable */
#define GPIOR_GP4_OE 0x00000100 /* GP 4 out enable */
#define GPIOR_GP3_OE 0x00000080 /* GP 3 out enable */
#define GPIOR_GP2_OE 0x00000040 /* GP 2 out enable */
#define GPIOR_GP1_OE 0x00000020 /* GP 1 out enable */
#define GPIOR_GP5_OUT 0x00000010 /* GP 5 out */
#define GPIOR_GP4_OUT 0x00000008 /* GP 4 out */
#define GPIOR_GP3_OUT 0x00000004 /* GP 3 out */
#define GPIOR_GP2_OUT 0x00000002 /* GP 2 out */
#define GPIOR_GP1_OUT 0x00000001 /* GP 1 out */
#define SIP_RXDP 0x30 /* receive descriptor pointer reg */
/* DP83820 only */
#define SIP_RXDP_HI 0x34 /* receive descriptor pointer (high) reg */
#define DP83820_SIP_RXCFG 0x38 /* receive configuration register */
#define OTHER_SIP_RXCFG 0x34 /* receive configuration register */
#define RXCFG_AEP 0x80000000 /* accept error packets */
#define RXCFG_ARP 0x40000000 /* accept runt packets */
/* DP83820 only */
#define RXCFG_STRIPCRC 0x20000000 /* strip CRC */
#define RXCFG_ATX 0x10000000 /* accept transmit packets */
#define RXCFG_ALP 0x08000000 /* accept long packets */
/* DP83820 only */
#define RXCFG_AIRL 0x04000000 /* accept in-range length err packets */
#define RXCFG_MXDMA 0x00700000 /* max DMA burst size */
/* DP83820 only */
#define RXCFG_MXDMA_1024 0x00000000 /* 1024 bytes */
#if 0
#ifdef DP83820
#define RXCFG_MXDMA_8 0x00100000 /* 8 bytes */
#define RXCFG_MXDMA_16 0x00200000 /* 16 bytes */
#define RXCFG_MXDMA_32 0x00300000 /* 32 bytes */
#define RXCFG_MXDMA_64 0x00400000 /* 64 bytes */
#define RXCFG_MXDMA_128 0x00500000 /* 128 bytes */
#define RXCFG_MXDMA_256 0x00600000 /* 256 bytes */
#define RXCFG_MXDMA_512 0x00700000 /* 512 bytes */
#else
#define RXCFG_MXDMA_512 0x00000000 /* 512 bytes */
#define RXCFG_MXDMA_8 0x00200000 /* 8 bytes */
#define RXCFG_MXDMA_16 0x00300000 /* 16 bytes */
#define RXCFG_MXDMA_32 0x00400000 /* 32 bytes */
#define RXCFG_MXDMA_64 0x00500000 /* 64 bytes */
#define RXCFG_MXDMA_128 0x00600000 /* 128 bytes */
#define RXCFG_MXDMA_256 0x00700000 /* 256 bytes */
#endif /* DP83820 */
#endif /* 0 */
/* non-DP83820 only */
#define RXCFG_MXDMA_4 0x00100000 /* 4 bytes */
#define RXCFG_DRTH_MASK 0x0000003e
/* DP83820 only */
#define SIP_PQCR 0x3c /* priority queueing control register */
#define PQCR_RXPQ_4 0x0000000c /* 4 Rx queues */
#define PQCR_RXPQ_3 0x00000008 /* 3 Rx queues */
#define PQCR_RXPQ_2 0x00000004 /* 2 Rx queues */
#define PQCR_TXFAIR 0x00000002 /* Tx fairness enable */
#define PQCR_TXPQEN 0x00000001 /* Tx priority queueing enable */
/* DP83815 only */
#define SIP83815_NS_CCSR 0x3c /* CLKRUN control/status register (83815) */
#define CCSR_PMESTS 0x00008000 /* PME status */
#define CCSR_PMEEN 0x00000100 /* PME enable */
#define CCSR_CLKRUN_EN 0x00000001 /* clkrun enable */
/* SiS 900 only */
#define SIP_FLOWCTL 0x38 /* flow control register */
#define FLOWCTL_PAUSE 0x00000002 /* PAUSE flag */
#define FLOWCTL_FLOWEN 0x00000001 /* enable flow control */
#define SIP_NS_WCSR 0x40 /* WoL control/status register (83815/83820) */
#define SIP_NS_PCR 0x44 /* pause control/status reg (83815/83820) */
#define PCR_PSEN 0x80000000 /* pause enable */
#define PCR_PS_MCAST 0x40000000 /* pause on multicast */
#define PCR_PS_DA 0x20000000 /* pause on DA */
#define PCR_PS_ACT 0x10000000 /* pause active */
#define PCR_PS_RCVD 0x08000000 /* pause packet received */
/* #ifdef DP83820 */
#define PCR_PS_STHI_8 0x03000000 /* Status FIFO Hi Threshold (8packets) */
#define PCR_PS_STHI_4 0x02000000 /* Status FIFO Hi Threshold (4packets) */
#define PCR_PS_STHI_2 0x01000000 /* Status FIFO Hi Threshold (2packets) */
#define PCR_PS_STHI_0 0x00000000 /* Status FIFO Hi Threshold (disable) */
#define PCR_PS_STLO_8 0x00c00000 /* Status FIFO Lo Threshold (8packets) */
#define PCR_PS_STLO_4 0x00800000 /* Status FIFO Lo Threshold (4packets) */
#define PCR_PS_STLO_2 0x00400000 /* Status FIFO Lo Threshold (2packets) */
#define PCR_PS_STLO_0 0x00000000 /* Status FIFO Lo Threshold (disable) */
#define PCR_PS_FFHI_8 0x00300000 /* Data FIFO Hi Threshold (8Kbyte) */
#define PCR_PS_FFHI_4 0x00200000 /* Data FIFO Hi Threshold (4Kbyte) */
#define PCR_PS_FFHI_2 0x00100000 /* Data FIFO Hi Threshold (2Kbyte) */
#define PCR_PS_FFHI_0 0x00000000 /* Data FIFO Hi Threshold (disable) */
#define PCR_PS_FFLO_8 0x000c0000 /* Data FIFO Lo Threshold (8Kbyte) */
#define PCR_PS_FFLO_4 0x00080000 /* Data FIFO Lo Threshold (4Kbyte) */
#define PCR_PS_FFLO_2 0x00040000 /* Data FIFO Lo Threshold (2Kbyte) */
#define PCR_PS_FFLO_0 0x00000000 /* Data FIFO Lo Threshold (disable) */
#define PCR_PS_TX 0x00020000 /* Transmit PAUSE frame manually */
/* #else */
#define PCR_PSNEG 0x00200000 /* Pause Negoticated (83815) */
#define PCR_MLD_EN 0x00010000 /* Manual Load Enable (83815) */
/* #endif DP83820 */
#define PCR_PAUSE_CNT_MASK 0x0000ffff /* pause count mask */
#define PCR_PAUSE_CNT 65535 /* pause count (512bit-time) */
#define SIP_RFCR 0x48 /* receive filter control register */
#define RFCR_RFEN 0x80000000 /* Rx filter enable */
#define RFCR_AAB 0x40000000 /* accept all broadcast */
#define RFCR_AAM 0x20000000 /* accept all multicast */
#define RFCR_AAP 0x10000000 /* accept all physical */
#define RFCR_APM 0x08000000 /* accept perfect match (83815) */
#define RFCR_APAT 0x07800000 /* accept pattern match (83815) */
#define RFCR_AARP 0x00400000 /* accept ARP (83815) */
#define RFCR_MHEN 0x00200000 /* multicast hash enable (83815) */
#define RFCR_UHEN 0x00100000 /* unicast hash enable (83815) */
#define RFCR_ULM 0x00080000 /* U/L bit mask (83815) */
#define RFCR_NS_RFADDR 0x000003ff /* Rx filter ext reg address (83815) */
#define RFCR_RFADDR 0x000f0000 /* Rx filter address */
#define RFCR_RFADDR_NODE0 0x00000000 /* node address 1, 0 */
#define RFCR_RFADDR_NODE2 0x00010000 /* node address 3, 2 */
#define RFCR_RFADDR_NODE4 0x00020000 /* node address 5, 4 */
#define RFCR_RFADDR_MC0 0x00040000 /* multicast hash word 0 */
#define RFCR_RFADDR_MC1 0x00050000 /* multicast hash word 1 */
#define RFCR_RFADDR_MC2 0x00060000 /* multicast hash word 2 */
#define RFCR_RFADDR_MC3 0x00070000 /* multicast hash word 3 */
#define RFCR_RFADDR_MC4 0x00080000 /* multicast hash word 4 */
#define RFCR_RFADDR_MC5 0x00090000 /* multicast hash word 5 */
#define RFCR_RFADDR_MC6 0x000a0000 /* multicast hash word 6 */
#define RFCR_RFADDR_MC7 0x000b0000 /* multicast hash word 7 */
/* For SiS900B and 635/735 only */
#define RFCR_RFADDR_MC8 0x000c0000 /* multicast hash word 8 */
#define RFCR_RFADDR_MC9 0x000d0000 /* multicast hash word 9 */
#define RFCR_RFADDR_MC10 0x000e0000 /* multicast hash word 10 */
#define RFCR_RFADDR_MC11 0x000f0000 /* multicast hash word 11 */
#define RFCR_RFADDR_MC12 0x00100000 /* multicast hash word 12 */
#define RFCR_RFADDR_MC13 0x00110000 /* multicast hash word 13 */
#define RFCR_RFADDR_MC14 0x00120000 /* multicast hash word 14 */
#define RFCR_RFADDR_MC15 0x00130000 /* multicast hash word 15 */
#define RFCR_NS_RFADDR_PMATCH0 0x0000 /* perfect match octets 1-0 */
#define RFCR_NS_RFADDR_PMATCH2 0x0002 /* perfect match octets 3-2 */
#define RFCR_NS_RFADDR_PMATCH4 0x0004 /* perfect match octets 5-4 */
#define RFCR_NS_RFADDR_PCOUNT 0x0006 /* pattern count */
/* DP83820 only */
#define RFCR_NS_RFADDR_PCOUNT2 0x0008 /* pattern count 2, 3 */
#define RFCR_NS_RFADDR_SOPAS0 0x000a /* SecureOn 0, 1 */
#define RFCR_NS_RFADDR_SOPAS2 0x000c /* SecureOn 2, 3 */
#define RFCR_NS_RFADDR_SOPAS4 0x000e /* SecureOn 4, 5 */
#define RFCR_NS_RFADDR_PATMEM 0x0200 /* pattern memory */
#define DP83820_RFCR_NS_RFADDR_FILTMEM 0x0100 /* hash memory */
#define OTHER_RFCR_NS_RFADDR_FILTMEM 0x0200 /* filter memory (hash/pattern) */
#define SIP_RFDR 0x4c /* receive filter data register */
#define RFDR_BMASK 0x00030000 /* byte mask (83815) */
#define RFDR_DATA 0x0000ffff /* data bits */
#define SIP_NS_BRAR 0x50 /* boot rom address (83815) */
#define BRAR_AUTOINC 0x80000000 /* autoincrement */
#define BRAR_ADDR 0x0000ffff /* address */
#define SIP_NS_BRDR 0x54 /* boot rom data (83815) */
#define SIP_NS_SRR 0x58 /* silicon revision register (83815) */
/* #ifdef DP83820 */
#define SRR_REV_B 0x00000103
/* #else */
#define SRR_REV_A 0x00000101
#define SRR_REV_B_1 0x00000200
#define SRR_REV_B_2 0x00000201
#define SRR_REV_B_3 0x00000203
#define SRR_REV_C_1 0x00000300
#define SRR_REV_C_2 0x00000302
/* #endif DP83820 */
#define SIP_NS_MIBC 0x5c /* mib control register (83815) */
#define MIBC_MIBS 0x00000008 /* mib counter strobe */
#define MIBC_ACLR 0x00000004 /* clear all counters */
#define MIBC_FRZ 0x00000002 /* freeze all counters */
#define MIBC_WRN 0x00000001 /* warning test indicator */
#define SIP_NS_MIB(mibreg) /* mib data registers (83815) */ \
(0x60 + (mibreg))
#define MIB_RXErroredPkts 0x00
#define MIB_RXFCSErrors 0x04
#define MIB_RXMsdPktErrors 0x08
#define MIB_RXFAErrors 0x0c
#define MIB_RXSymbolErrors 0x10
#define MIB_RXFrameTooLong 0x14
/* #ifdef DP83820 */
#define MIB_RXIRLErrors 0x18
#define MIB_RXBadOpcodes 0x1c
#define MIB_RXPauseFrames 0x20
#define MIB_TXPauseFrames 0x24
#define MIB_TXSQEErrors 0x28
/* #else */
#define MIB_RXTXSQEErrors 0x18
/* #endif DP83820 */
/* 83815 only */
#define SIP_NS_PHY(miireg) /* PHY registers (83815) */ \
(0x80 + ((miireg) << 2))
/* #ifdef DP83820 */
#define SIP_TXDP1 0xa0 /* transmit descriptor pointer (pri 1) */
#define SIP_TXDP2 0xa4 /* transmit descriptor pointer (pri 2) */
#define SIP_TXDP3 0xa8 /* transmit descriptor pointer (pri 3) */
#define SIP_RXDP1 0xb0 /* receive descriptor pointer (pri 1) */
#define SIP_RXDP2 0xb4 /* receive descriptor pointer (pri 2) */
#define SIP_RXDP3 0xb8 /* receive descriptor pointer (pri 3) */
#define SIP_VRCR 0xbc /* VLAN/IP receive control register */
#define VRCR_RUDPE 0x00000080 /* reject UDP checksum errors */
#define VRCR_RTCPE 0x00000040 /* reject TCP checksum errors */
#define VRCR_RIPE 0x00000020 /* reject IP checksum errors */
#define VRCR_IPEN 0x00000010 /* IP checksum enable */
#define VRCR_DUTF 0x00000008 /* discard untagged frames */
#define VRCR_DVTF 0x00000004 /* discard VLAN tagged frames */
#define VRCR_VTREN 0x00000002 /* VLAN tag removal enable */
#define VRCR_VTDEN 0x00000001 /* VLAN tag detection enable */
#define SIP_VTCR 0xc0 /* VLAN/IP transmit control register */
#define VTCR_PPCHK 0x00000008 /* per-packet checksum generation */
#define VTCR_GCHK 0x00000004 /* global checksum generation */
#define VTCR_VPPTI 0x00000002 /* VLAN per-packet tag insertion */
#define VTCR_VGTI 0x00000001 /* VLAN global tag insertion */
#define SIP_VDR 0xc4 /* VLAN data register */
#define VDR_VTCI 0xffff0000 /* VLAN tag control information */
#define VDR_VTYPE 0x0000ffff /* VLAN type field */
#define SIP83820_NS_CCSR 0xcc /* CLKRUN control/status register (83820) */
#if 0
#define CCSR_PMESTS 0x00008000 /* PME status */
#define CCSR_PMEEN 0x00000100 /* PME enable */
#define CCSR_CLKRUN_EN 0x00000001 /* clkrun enable */
#endif
#define SIP_TBICR 0xe0 /* TBI control register */
#define TBICR_MR_LOOPBACK 0x00004000 /* TBI PCS loopback enable */
#define TBICR_MR_AN_ENABLE 0x00001000 /* TBI autonegotiation enable */
#define TBICR_MR_RESTART_AN 0x00000200 /* restart TBI autoneogtiation */
#define SIP_TBISR 0xe4 /* TBI status register */
#define TBISR_MR_LINK_STATUS 0x00000020 /* TBI link status */
#define TBISR_MR_AN_COMPLETE 0x00000004 /* TBI autonegotiation complete */
#define SIP_TANAR 0xe8 /* TBI autoneg adv. register */
#define TANAR_NP 0x00008000 /* next page exchange required */
#define TANAR_RF2 0x00002000 /* remote fault 2 */
#define TANAR_RF1 0x00001000 /* remote fault 1 */
#define TANAR_PS2 0x00000100 /* pause encoding 2 */
#define TANAR_PS1 0x00000080 /* pause encoding 1 */
#define TANAR_HALF_DUP 0x00000040 /* adv. half duplex */
#define TANAR_FULL_DUP 0x00000020 /* adv. full duplex */
#define SIP_TANLPAR 0xec /* TBI autoneg link partner ability register */
/* See TANAR bits */
#define SIP_TANER 0xf0 /* TBI autoneg expansion register */
#define TANER_NPA 0x00000004 /* we support next page function */
#define TANER_PR 0x00000002 /* page received from link partner */
#define SIP_TESR 0xf4 /* TBI extended status register */
#define TESR_1000FDX 0x00008000 /* we support 1000base FDX */
#define TESR_1000HDX 0x00004000 /* we support 1000base HDX */
/* #else */
#define SIP_PMCTL 0xb0 /* power management control register */
#define PMCTL_GATECLK 0x80000000 /* gate dual clock enable */
#define PMCTL_WAKEALL 0x40000000 /* wake on all Rx OK */
#define PMCTL_FRM3ACS 0x04000000 /* 3rd wake-up frame access */
#define PMCTL_FRM2ACS 0x02000000 /* 2nd wake-up frame access */
#define PMCTL_FRM1ACS 0x01000000 /* 1st wake-up frame access */
#define PMCTL_FRM3EN 0x00400000 /* 3rd wake-up frame match enable */
#define PMCTL_FRM2EN 0x00200000 /* 2nd wake-up frame match enable */
#define PMCTL_FRM1EN 0x00100000 /* 1st wake-up frame match enable */
#define PMCTL_ALGORITHM 0x00000800 /* Magic Packet match algorithm */
#define PMCTL_MAGICPKT 0x00000400 /* Magic Packet match enable */
#define PMCTL_LINKON 0x00000002 /* link on monitor enable */
#define PMCTL_LINKLOSS 0x00000001 /* link loss monitor enable */
#define SIP_PMEVT 0xb4 /* power management wake-up evnt reg */
#define PMEVT_ALLFRMMAT 0x40000000 /* receive packet ok */
#define PMEVT_FRM3MAT 0x04000000 /* match 3rd wake-up frame */
#define PMEVT_FRM2MAT 0x02000000 /* match 2nd wake-up frame */
#define PMEVT_FRM1MAT 0x01000000 /* match 1st wake-up frame */
#define PMEVT_MAGICPKT 0x00000400 /* Magic Packet */
#define PMEVT_ONEVT 0x00000002 /* link on event */
#define PMEVT_LOSSEVT 0x00000001 /* link loss event */
#define SIP_WAKECRC 0xbc /* wake-up frame CRC register */
#define SIP_WAKEMASK0 0xc0 /* wake-up frame mask registers */
#define SIP_WAKEMASK1 0xc4
#define SIP_WAKEMASK2 0xc8
#define SIP_WAKEMASK3 0xcc
#define SIP_WAKEMASK4 0xe0
#define SIP_WAKEMASK5 0xe4
#define SIP_WAKEMASK6 0xe8
#define SIP_WAKEMASK7 0xec
/* #endif DP83820 */
/*
* Revision codes for the SiS 630 chipset built-in Ethernet.
*/
#define SIS_REV_900B 0x03
#define SIS_REV_630E 0x81
#define SIS_REV_630S 0x82
#define SIS_REV_630EA1 0x83
#define SIS_REV_630ET 0x84
#define SIS_REV_635 0x90 /* same for 735 (745?) */
#define SIS_REV_960 0x91
/*
* MII operations for recent SiS chipsets
*/
#define SIS_MII_STARTDELIM 0x01
#define SIS_MII_READOP 0x02
#define SIS_MII_WRITEOP 0x01
#define SIS_MII_TURNAROUND 0x02
/*
* Serial EEPROM opcodes, including the start bit.
*/
#define SIP_EEPROM_OPC_ERASE 0x04
#define SIP_EEPROM_OPC_WRITE 0x05
#define SIP_EEPROM_OPC_READ 0x06
/*
* Serial EEPROM address map (byte address) for the SiS900.
*/
#define SIP_EEPROM_SIGNATURE 0x00 /* SiS 900 signature */
#define SIP_EEPROM_MASK 0x02 /* `enable' mask */
#define SIP_EEPROM_VENDOR_ID 0x04 /* PCI vendor ID */
#define SIP_EEPROM_DEVICE_ID 0x06 /* PCI device ID */
#define SIP_EEPROM_SUBVENDOR_ID 0x08 /* PCI subvendor ID */
#define SIP_EEPROM_SUBSYSTEM_ID 0x0a /* PCI subsystem ID */
#define SIP_EEPROM_PMC 0x0c /* PCI power management capabilities */
#define SIP_EEPROM_reserved 0x0e /* reserved */
#define SIP_EEPROM_ETHERNET_ID0 0x10 /* Ethernet address 0, 1 */
#define SIP_EEPROM_ETHERNET_ID1 0x12 /* Ethernet address 2, 3 */
#define SIP_EEPROM_ETHERNET_ID2 0x14 /* Ethernet address 4, 5 */
#define SIP_EEPROM_CHECKSUM 0x16 /* checksum */
/*
* Serial EEPROM data (byte addresses) for the DP83815.
*/
#define SIP_DP83815_EEPROM_CHECKSUM 0x16 /* checksum */
#define SIP_DP83815_EEPROM_LENGTH 0x18 /* length of EEPROM data */
/*
* Serial EEPROM data (byte addresses) for the DP83820.
*/
#define SIP_DP83820_EEPROM_SUBSYSTEM_ID 0x00 /* PCI subsystem ID */
#define SIP_DP83820_EEPROM_SUBVENDOR_ID 0x02 /* PCI subvendor ID */
#define SIP_DP83820_EEPROM_CFGINT 0x04 /* PCI INT [31:16] */
#define SIP_DP83820_EEPROM_CONFIG0 0x06 /* configuration word 0 */
#define SIP_DP83820_EEPROM_CONFIG1 0x08 /* configuration word 1 */
#define SIP_DP83820_EEPROM_CONFIG2 0x0a /* configuration word 2 */
#define SIP_DP83820_EEPROM_CONFIG3 0x0c /* configuration word 3 */
#define SIP_DP83820_EEPROM_SOPAS0 0x0e /* SecureOn [47:32] */
#define SIP_DP83820_EEPROM_SOPAS1 0x10 /* SecureOn [31:16] */
#define SIP_DP83820_EEPROM_SOPAS2 0x12 /* SecureOn [15:0] */
#define SIP_DP83820_EEPROM_PMATCH0 0x14 /* MAC [47:32] */
#define SIP_DP83820_EEPROM_PMATCH1 0x16 /* MAC [31:16] */
#define SIP_DP83820_EEPROM_PMATCH2 0x18 /* MAC [15:0] */
#define SIP_DP83820_EEPROM_CHECKSUM 0x1a /* checksum */
#define SIP_DP83820_EEPROM_LENGTH 0x1c /* length of EEPROM data */
#define DP83820_CONFIG2_CFG_EXT_125 (1U << 0)
#define DP83820_CONFIG2_CFG_M64ADDR (1U << 1)
#define DP83820_CONFIG2_CFG_DATA64_EN (1U << 2)
#define DP83820_CONFIG2_CFG_T64ADDR (1U << 3)
#define DP83820_CONFIG2_CFG_MWI_DIS (1U << 4)
#define DP83820_CONFIG2_CFG_MRM_DIS (1U << 5)
#define DP83820_CONFIG2_CFG_MODE_1000 (1U << 7)
#define DP83820_CONFIG2_CFG_TBI_EN (1U << 9)
#endif /* _DEV_PCI_IF_SIPREG_H_ */
|