1 /**************************************************************************
3 * Copyright (c) 2000-2002 Alacritech, Inc. All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials provided
15 * with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * The views and conclusions contained in the software and documentation
31 * are those of the authors and should not be interpreted as representing
32 * official policies, either expressed or implied, of Alacritech, Inc.
34 **************************************************************************/
39 * This header file contains definitions that are common to our hardware.
44 #define PCI_VENDOR_ID_ALACRITECH 0x139A
45 #define SLIC_1GB_DEVICE_ID 0x0005
46 #define SLIC_2GB_DEVICE_ID 0x0007 /*Oasis Device ID */
48 #define SLIC_1GB_CICADA_SUBSYS_ID 0x0008
50 #define SLIC_NBR_MACS 4
52 #define SLIC_RCVBUF_SIZE 2048
53 #define SLIC_RCVBUF_HEADSIZE 34
54 #define SLIC_RCVBUF_TAILSIZE 0
55 #define SLIC_RCVBUF_DATASIZE (SLIC_RCVBUF_SIZE - (SLIC_RCVBUF_HEADSIZE +\
56 SLIC_RCVBUF_TAILSIZE))
58 #define VGBSTAT_XPERR 0x40000000
59 #define VGBSTAT_XERRSHFT 25
60 #define VGBSTAT_XCSERR 0x23
61 #define VGBSTAT_XUFLOW 0x22
62 #define VGBSTAT_XHLEN 0x20
63 #define VGBSTAT_NETERR 0x01000000
64 #define VGBSTAT_NERRSHFT 16
65 #define VGBSTAT_NERRMSK 0x1ff
66 #define VGBSTAT_NCSERR 0x103
67 #define VGBSTAT_NUFLOW 0x102
68 #define VGBSTAT_NHLEN 0x100
69 #define VGBSTAT_LNKERR 0x00000080
70 #define VGBSTAT_LERRMSK 0xff
71 #define VGBSTAT_LDEARLY 0x86
72 #define VGBSTAT_LBOFLO 0x85
73 #define VGBSTAT_LCODERR 0x84
74 #define VGBSTAT_LDBLNBL 0x83
75 #define VGBSTAT_LCRCERR 0x82
76 #define VGBSTAT_LOFLO 0x81
77 #define VGBSTAT_LUFLO 0x80
78 #define IRHDDR_FLEN_MSK 0x0000ffff
79 #define IRHDDR_SVALID 0x80000000
80 #define IRHDDR_ERR 0x10000000
81 #define VRHSTAT_802OE 0x80000000
82 #define VRHSTAT_TPOFLO 0x10000000
83 #define VRHSTATB_802UE 0x80000000
84 #define VRHSTATB_RCVE 0x40000000
85 #define VRHSTATB_BUFF 0x20000000
86 #define VRHSTATB_CARRE 0x08000000
87 #define VRHSTATB_LONGE 0x02000000
88 #define VRHSTATB_PREA 0x01000000
89 #define VRHSTATB_CRC 0x00800000
90 #define VRHSTATB_DRBL 0x00400000
91 #define VRHSTATB_CODE 0x00200000
92 #define VRHSTATB_TPCSUM 0x00100000
93 #define VRHSTATB_TPHLEN 0x00080000
94 #define VRHSTATB_IPCSUM 0x00040000
95 #define VRHSTATB_IPLERR 0x00020000
96 #define VRHSTATB_IPHERR 0x00010000
97 #define SLIC_MAX64_BCNT 23
98 #define SLIC_MAX32_BCNT 26
99 #define IHCMD_XMT_REQ 0x01
100 #define IHFLG_IFSHFT 2
101 #define SLIC_RSPBUF_SIZE 32
103 #define SLIC_RESET_MAGIC 0xDEAD
104 #define ICR_INT_OFF 0
106 #define ICR_INT_MASK 2
108 #define ISR_ERR 0x80000000
109 #define ISR_RCV 0x40000000
110 #define ISR_CMD 0x20000000
111 #define ISR_IO 0x60000000
112 #define ISR_UPC 0x10000000
113 #define ISR_LEVENT 0x08000000
114 #define ISR_RMISS 0x02000000
115 #define ISR_UPCERR 0x01000000
116 #define ISR_XDROP 0x00800000
117 #define ISR_UPCBSY 0x00020000
118 #define ISR_EVMSK 0xffff0000
119 #define ISR_PINGMASK 0x00700000
120 #define ISR_PINGDSMASK 0x00710000
121 #define ISR_UPCMASK 0x11000000
122 #define SLIC_WCS_START 0x80000000
123 #define SLIC_WCS_COMPARE 0x40000000
124 #define SLIC_RCVWCS_BEGIN 0x40000000
125 #define SLIC_RCVWCS_FINISH 0x80000000
126 #define SLIC_PM_MAXPATTERNS 6
127 #define SLIC_PM_PATTERNSIZE 128
128 #define SLIC_PMCAPS_WAKEONLAN 0x00000001
129 #define MIICR_REG_PCR 0x00000000
130 #define MIICR_REG_4 0x00040000
131 #define MIICR_REG_9 0x00090000
132 #define MIICR_REG_16 0x00100000
133 #define PCR_RESET 0x8000
134 #define PCR_POWERDOWN 0x0800
135 #define PCR_SPEED_100 0x2000
136 #define PCR_SPEED_1000 0x0040
137 #define PCR_AUTONEG 0x1000
138 #define PCR_AUTONEG_RST 0x0200
139 #define PCR_DUPLEX_FULL 0x0100
140 #define PSR_LINKUP 0x0004
142 #define PAR_ADV100FD 0x0100
143 #define PAR_ADV100HD 0x0080
144 #define PAR_ADV10FD 0x0040
145 #define PAR_ADV10HD 0x0020
146 #define PAR_ASYMPAUSE 0x0C00
147 #define PAR_802_3 0x0001
149 #define PAR_ADV1000XFD 0x0020
150 #define PAR_ADV1000XHD 0x0040
151 #define PAR_ASYMPAUSE_FIBER 0x0180
153 #define PGC_ADV1000FD 0x0200
154 #define PGC_ADV1000HD 0x0100
155 #define SEEQ_LINKFAIL 0x4000
156 #define SEEQ_SPEED 0x0080
157 #define SEEQ_DUPLEX 0x0040
158 #define TDK_DUPLEX 0x0800
159 #define TDK_SPEED 0x0400
160 #define MRV_REG16_XOVERON 0x0068
161 #define MRV_REG16_XOVEROFF 0x0008
162 #define MRV_SPEED_1000 0x8000
163 #define MRV_SPEED_100 0x4000
164 #define MRV_SPEED_10 0x0000
165 #define MRV_FULLDUPLEX 0x2000
166 #define MRV_LINKUP 0x0400
168 #define GIG_LINKUP 0x0001
169 #define GIG_FULLDUPLEX 0x0002
170 #define GIG_SPEED_MASK 0x000C
171 #define GIG_SPEED_1000 0x0008
172 #define GIG_SPEED_100 0x0004
173 #define GIG_SPEED_10 0x0000
175 #define MCR_RESET 0x80000000
176 #define MCR_CRCEN 0x40000000
177 #define MCR_FULLD 0x10000000
178 #define MCR_PAD 0x02000000
179 #define MCR_RETRYLATE 0x01000000
180 #define MCR_BOL_SHIFT 21
181 #define MCR_IPG1_SHIFT 14
182 #define MCR_IPG2_SHIFT 7
183 #define MCR_IPG3_SHIFT 0
184 #define GMCR_RESET 0x80000000
185 #define GMCR_GBIT 0x20000000
186 #define GMCR_FULLD 0x10000000
187 #define GMCR_GAPBB_SHIFT 14
188 #define GMCR_GAPR1_SHIFT 7
189 #define GMCR_GAPR2_SHIFT 0
190 #define GMCR_GAPBB_1000 0x60
191 #define GMCR_GAPR1_1000 0x2C
192 #define GMCR_GAPR2_1000 0x40
193 #define GMCR_GAPBB_100 0x70
194 #define GMCR_GAPR1_100 0x2C
195 #define GMCR_GAPR2_100 0x40
196 #define XCR_RESET 0x80000000
197 #define XCR_XMTEN 0x40000000
198 #define XCR_PAUSEEN 0x20000000
199 #define XCR_LOADRNG 0x10000000
200 #define RCR_RESET 0x80000000
201 #define RCR_RCVEN 0x40000000
202 #define RCR_RCVALL 0x20000000
203 #define RCR_RCVBAD 0x10000000
204 #define RCR_CTLEN 0x08000000
205 #define RCR_ADDRAEN 0x02000000
206 #define GXCR_RESET 0x80000000
207 #define GXCR_XMTEN 0x40000000
208 #define GXCR_PAUSEEN 0x20000000
209 #define GRCR_RESET 0x80000000
210 #define GRCR_RCVEN 0x40000000
211 #define GRCR_RCVALL 0x20000000
212 #define GRCR_RCVBAD 0x10000000
213 #define GRCR_CTLEN 0x08000000
214 #define GRCR_ADDRAEN 0x02000000
215 #define GRCR_HASHSIZE_SHIFT 17
216 #define GRCR_HASHSIZE 14
218 #define SLIC_EEPROM_ID 0xA5A5
219 #define SLIC_SRAM_SIZE2GB (64 * 1024)
220 #define SLIC_SRAM_SIZE1GB (32 * 1024)
221 #define SLIC_HOSTID_DEFAULT 0xFFFF /* uninitialized hostid */
222 #define SLIC_NBR_MACS 4
239 unsigned char pad1
[6];
248 unsigned char data
[SLIC_RCVBUF_DATASIZE
];
251 struct slic_hddr_wds
{
270 #define frame_status14 u0.hdrs_14port.frame_status
271 #define frame_status_b14 u0.hdrs_14port.frame_status_b
272 #define frame_statusGB u0.hdrs_gbit.frame_status
274 struct slic_host64sg
{
280 struct slic_host64_cmd
{
283 unsigned char command
;
292 struct slic_host64sg bufs
[SLIC_MAX64_BCNT
];
307 u32 slic_reset
; /* Reset Register */
310 u32 slic_icr
; /* Interrupt Control Register */
312 #define SLIC_ICR 0x0008
314 u32 slic_isp
; /* Interrupt status pointer */
316 #define SLIC_ISP 0x0010
318 u32 slic_isr
; /* Interrupt status */
320 #define SLIC_ISR 0x0018
322 u32 slic_hbar
; /* Header buffer address reg */
324 /* 31-8 - phy addr of set of contiguous hdr buffers
325 7-0 - number of buffers passed
326 Buffers are 256 bytes long on 256-byte boundaries. */
327 #define SLIC_HBAR 0x0020
328 #define SLIC_HBAR_CNT_MSK 0x000000FF
330 u32 slic_dbar
; /* Data buffer handle & address reg */
333 /* 4 sets of registers; Buffers are 2K bytes long 2 per 4K page. */
334 #define SLIC_DBAR 0x0028
335 #define SLIC_DBAR_SIZE 2048
337 u32 slic_cbar
; /* Xmt Cmd buf addr regs.*/
338 /* 1 per XMT interface
339 31-5 - phy addr of host command buffer
340 4-0 - length of cmd in multiples of 32 bytes
341 Buffers are 32 bytes up to 512 bytes long */
342 #define SLIC_CBAR 0x0030
343 #define SLIC_CBAR_LEN_MSK 0x0000001F
344 #define SLIC_CBAR_ALIGN 0x00000020
346 u32 slic_wcs
; /* write control store*/
347 #define SLIC_WCS 0x0034
348 #define SLIC_WCS_START 0x80000000 /*Start the SLIC (Jump to WCS)*/
349 #define SLIC_WCS_COMPARE 0x40000000 /* Compare with value in WCS*/
351 u32 slic_rbar
; /* Response buffer address reg.*/
353 /*31-8 - phy addr of set of contiguous response buffers
354 7-0 - number of buffers passed
355 Buffers are 32 bytes long on 32-byte boundaries.*/
356 #define SLIC_RBAR 0x0038
357 #define SLIC_RBAR_CNT_MSK 0x000000FF
358 #define SLIC_RBAR_SIZE 32
360 u32 slic_stats
; /* read statistics (UPR) */
362 #define SLIC_RSTAT 0x0040
364 u32 slic_rlsr
; /* read link status */
366 #define SLIC_LSTAT 0x0048
368 u32 slic_wmcfg
; /* Write Mac Config */
370 #define SLIC_WMCFG 0x0050
372 u32 slic_wphy
; /* Write phy register */
374 #define SLIC_WPHY 0x0058
376 u32 slic_rcbar
; /*Rcv Cmd buf addr reg*/
378 #define SLIC_RCBAR 0x0060
380 u32 slic_rconfig
; /* Read SLIC Config*/
382 #define SLIC_RCONFIG 0x0068
384 u32 slic_intagg
; /* Interrupt aggregation time*/
386 #define SLIC_INTAGG 0x0070
388 u32 slic_wxcfg
; /* Write XMIT config reg*/
390 #define SLIC_WXCFG 0x0078
392 u32 slic_wrcfg
; /* Write RCV config reg*/
394 #define SLIC_WRCFG 0x0080
396 u32 slic_wraddral
; /* Write rcv addr a low*/
398 #define SLIC_WRADDRAL 0x0088
400 u32 slic_wraddrah
; /* Write rcv addr a high*/
402 #define SLIC_WRADDRAH 0x0090
404 u32 slic_wraddrbl
; /* Write rcv addr b low*/
406 #define SLIC_WRADDRBL 0x0098
408 u32 slic_wraddrbh
; /* Write rcv addr b high*/
410 #define SLIC_WRADDRBH 0x00a0
412 u32 slic_mcastlow
; /* Low bits of mcast mask*/
414 #define SLIC_MCASTLOW 0x00a8
416 u32 slic_mcasthigh
; /* High bits of mcast mask*/
418 #define SLIC_MCASTHIGH 0x00b0
420 u32 slic_ping
; /* Ping the card*/
422 #define SLIC_PING 0x00b8
424 u32 slic_dump_cmd
; /* Dump command */
426 #define SLIC_DUMP_CMD 0x00c0
428 u32 slic_dump_data
; /* Dump data pointer */
430 #define SLIC_DUMP_DATA 0x00c8
432 u32 slic_pcistatus
; /* Read card's pci_status register */
434 #define SLIC_PCISTATUS 0x00d0
436 u32 slic_wrhostid
; /* Write hostid field */
438 #define SLIC_WRHOSTID 0x00d8
439 #define SLIC_RDHOSTID_1GB 0x1554
440 #define SLIC_RDHOSTID_2GB 0x1554
442 u32 slic_low_power
; /* Put card in a low power state */
444 #define SLIC_LOW_POWER 0x00e0
446 u32 slic_quiesce
; /* force slic into quiescent state
449 #define SLIC_QUIESCE 0x00e8
451 u32 slic_reset_iface
; /* reset interface queues */
453 #define SLIC_RESET_IFACE 0x00f0
455 u32 slic_addr_upper
; /* Bits 63-32 for host i/f addrs */
457 #define SLIC_ADDR_UPPER 0x00f8 /*Register is only written when it has changed*/
459 u32 slic_hbar64
; /* 64 bit Header buffer address reg */
461 #define SLIC_HBAR64 0x0100
463 u32 slic_dbar64
; /* 64 bit Data buffer handle & address reg */
465 #define SLIC_DBAR64 0x0108
467 u32 slic_cbar64
; /* 64 bit Xmt Cmd buf addr regs. */
469 #define SLIC_CBAR64 0x0110
471 u32 slic_rbar64
; /* 64 bit Response buffer address reg.*/
473 #define SLIC_RBAR64 0x0118
475 u32 slic_rcbar64
; /* 64 bit Rcv Cmd buf addr reg*/
477 #define SLIC_RCBAR64 0x0120
479 u32 slic_stats64
; /*read statistics (64 bit UPR)*/
481 #define SLIC_RSTAT64 0x0128
483 u32 slic_rcv_wcs
; /*Download Gigabit RCV sequencer ucode*/
485 #define SLIC_RCV_WCS 0x0130
486 #define SLIC_RCVWCS_BEGIN 0x40000000
487 #define SLIC_RCVWCS_FINISH 0x80000000
489 u32 slic_wrvlanid
; /* Write VlanId field */
491 #define SLIC_WRVLANID 0x0138
493 u32 slic_read_xf_info
; /* Read Transformer info */
495 #define SLIC_READ_XF_INFO 0x0140
497 u32 slic_write_xf_info
; /* Write Transformer info */
499 #define SLIC_WRITE_XF_INFO 0x0148
501 u32 RSVD1
; /* TOE Only */
504 u32 RSVD2
; /* TOE Only */
507 u32 RSVD3
; /* TOE Only */
510 u32 RSVD4
; /* TOE Only */
513 u32 slic_ticks_per_sec
; /* Write card ticks per second */
515 #define SLIC_TICKS_PER_SEC 0x0170
532 struct inicpm_wakepattern
{
534 unsigned char pattern
[SLIC_PM_PATTERNSIZE
];
535 unsigned char mask
[SLIC_PM_PATTERNSIZE
];
538 struct inicpm_state
{
542 u32 wake_magicpacket
;
543 u32 wake_framepattern
;
544 struct inicpm_wakepattern wakepattern
[SLIC_PM_MAXPATTERNS
];
547 struct slicpm_packet_pattern
{
556 enum slicpm_power_state
{
557 slicpm_state_unspecified
= 0,
565 struct slicpm_wakeup_capabilities
{
566 enum slicpm_power_state min_magic_packet_wakeup
;
567 enum slicpm_power_state min_pattern_wakeup
;
568 enum slicpm_power_state min_link_change_wakeup
;
571 struct slic_pnp_capabilities
{
573 struct slicpm_wakeup_capabilities wakeup_capabilities
;
582 u32 xmit_other_error
;
583 u32 xmit_excess_collisions
;
601 u64 xmit_other_error
;
602 u64 xmit_excess_collisions
;
617 struct xmt_stats xmt100
;
618 struct rcv_stats rcv100
;
621 struct xmt_statsgb xmtGB
;
622 struct rcv_statsgb rcvGB
;
627 #define xmit_tcp_segs100 u.stats_100.xmt100.xmit_tcp_segs
628 #define xmit_tcp_bytes100 u.stats_100.xmt100.xmit_tcp_bytes
629 #define xmit_bytes100 u.stats_100.xmt100.xmit_bytes
630 #define xmit_collisions100 u.stats_100.xmt100.xmit_collisions
631 #define xmit_unicasts100 u.stats_100.xmt100.xmit_unicasts
632 #define xmit_other_error100 u.stats_100.xmt100.xmit_other_error
633 #define xmit_excess_collisions100 u.stats_100.xmt100.xmit_excess_collisions
634 #define rcv_tcp_segs100 u.stats_100.rcv100.rcv_tcp_segs
635 #define rcv_tcp_bytes100 u.stats_100.rcv100.rcv_tcp_bytes
636 #define rcv_bytes100 u.stats_100.rcv100.rcv_bytes
637 #define rcv_unicasts100 u.stats_100.rcv100.rcv_unicasts
638 #define rcv_other_error100 u.stats_100.rcv100.rcv_other_error
639 #define rcv_drops100 u.stats_100.rcv100.rcv_drops
640 #define xmit_tcp_segs_gb u.stats_GB.xmtGB.xmit_tcp_segs
641 #define xmit_tcp_bytes_gb u.stats_GB.xmtGB.xmit_tcp_bytes
642 #define xmit_bytes_gb u.stats_GB.xmtGB.xmit_bytes
643 #define xmit_collisions_gb u.stats_GB.xmtGB.xmit_collisions
644 #define xmit_unicasts_gb u.stats_GB.xmtGB.xmit_unicasts
645 #define xmit_other_error_gb u.stats_GB.xmtGB.xmit_other_error
646 #define xmit_excess_collisions_gb u.stats_GB.xmtGB.xmit_excess_collisions
648 #define rcv_tcp_segs_gb u.stats_GB.rcvGB.rcv_tcp_segs
649 #define rcv_tcp_bytes_gb u.stats_GB.rcvGB.rcv_tcp_bytes
650 #define rcv_bytes_gb u.stats_GB.rcvGB.rcv_bytes
651 #define rcv_unicasts_gb u.stats_GB.rcvGB.rcv_unicasts
652 #define rcv_other_error_gb u.stats_GB.rcvGB.rcv_other_error
653 #define rcv_drops_gb u.stats_GB.rcvGB.rcv_drops
655 struct slic_config_mac
{
656 unsigned char macaddrA
[6];
659 #define ATK_FRU_FORMAT 0x00
660 #define VENDOR1_FRU_FORMAT 0x01
661 #define VENDOR2_FRU_FORMAT 0x02
662 #define VENDOR3_FRU_FORMAT 0x03
663 #define VENDOR4_FRU_FORMAT 0x04
664 #define NO_FRU_FORMAT 0xFF
667 unsigned char assembly
[6];
668 unsigned char revision
[2];
669 unsigned char serial
[14];
670 unsigned char pad
[3];
674 unsigned char commodity
;
675 unsigned char assembly
[4];
676 unsigned char revision
[2];
677 unsigned char supplier
[2];
678 unsigned char date
[2];
679 unsigned char sequence
[3];
680 unsigned char pad
[13];
684 unsigned char part
[8];
685 unsigned char supplier
[5];
686 unsigned char date
[3];
687 unsigned char sequence
[4];
688 unsigned char pad
[7];
692 unsigned char assembly
[6];
693 unsigned char revision
[2];
694 unsigned char serial
[14];
695 unsigned char pad
[3];
699 unsigned char number
[8];
700 unsigned char part
[8];
701 unsigned char version
[8];
702 unsigned char pad
[3];
706 struct vendor1_fru vendor1_fru
;
707 struct vendor2_fru vendor2_fru
;
708 struct vendor3_fru vendor3_fru
;
709 struct vendor4_fru vendor4_fru
;
713 SLIC EEPROM structure for Mojave
716 ushort Id
; /* 00 EEPROM/FLASH Magic code 'A5A5'*/
717 ushort EecodeSize
; /* 01 Size of EEPROM Codes (bytes * 4)*/
718 ushort FlashSize
; /* 02 Flash size */
719 ushort EepromSize
; /* 03 EEPROM Size */
720 ushort VendorId
; /* 04 Vendor ID */
721 ushort DeviceId
; /* 05 Device ID */
722 unsigned char RevisionId
; /* 06 Revision ID */
723 unsigned char ClassCode
[3]; /* 07 Class Code */
724 unsigned char DbgIntPin
; /* 08 Debug Interrupt pin */
725 unsigned char NetIntPin0
; /* Network Interrupt Pin */
726 unsigned char MinGrant
; /* 09 Minimum grant */
727 unsigned char MaxLat
; /* Maximum Latency */
728 ushort PciStatus
; /* 10 PCI Status */
729 ushort SubSysVId
; /* 11 Subsystem Vendor Id */
730 ushort SubSysId
; /* 12 Subsystem ID */
731 ushort DbgDevId
; /* 13 Debug Device Id */
732 ushort DramRomFn
; /* 14 Dram/Rom function */
733 ushort DSize2Pci
; /* 15 DRAM size to PCI (bytes * 64K) */
734 ushort RSize2Pci
; /* 16 ROM extension size to PCI (bytes * 4k) */
735 unsigned char NetIntPin1
;/* 17 Network Interface Pin 1
736 (simba/leone only) */
737 unsigned char NetIntPin2
; /*Network Interface Pin 2 (simba/leone only)*/
739 unsigned char NetIntPin3
;/*18 Network Interface Pin 3
741 unsigned char FreeTime
;/*FreeTime setting (leone/mojave only) */
743 unsigned char TBIctl
; /* 10-bit interface control (Mojave only) */
744 ushort DramSize
; /* 19 DRAM size (bytes * 64k) */
747 /* Mac Interface Specific portions */
748 struct slic_config_mac MacInfo
[SLIC_NBR_MACS
];
749 } mac
; /* MAC access for all boards */
751 /* use above struct for MAC access */
752 struct slic_config_mac pad
[SLIC_NBR_MACS
- 1];
753 ushort DeviceId2
; /* Device ID for 2nd
755 unsigned char IntPin2
; /* Interrupt pin for
757 unsigned char ClassCode2
[3]; /* Class Code for 2nd
759 } mojave
; /* 2nd function access for gigabit board */
761 ushort CfgByte6
; /* Config Byte 6 */
762 ushort PMECapab
; /* Power Mgment capabilities */
763 ushort NwClkCtrls
; /* NetworkClockControls */
764 unsigned char FruFormat
; /* Alacritech FRU format type */
765 struct atk_fru AtkFru
; /* Alacritech FRU information */
766 unsigned char OemFruFormat
; /* optional OEM FRU format type */
767 union oemfru OemFru
; /* optional OEM FRU information */
768 unsigned char Pad
[4]; /* Pad to 128 bytes - includes 2 cksum bytes
769 *(if OEM FRU info exists) and two unusable
770 * bytes at the end */
773 /* SLIC EEPROM structure for Oasis */
774 struct oslic_eeprom
{
775 ushort Id
; /* 00 EEPROM/FLASH Magic code 'A5A5' */
776 ushort EecodeSize
; /* 01 Size of EEPROM Codes (bytes * 4)*/
777 ushort FlashConfig0
; /* 02 Flash Config for SPI device 0 */
778 ushort FlashConfig1
; /* 03 Flash Config for SPI device 1 */
779 ushort VendorId
; /* 04 Vendor ID */
780 ushort DeviceId
; /* 05 Device ID (function 0) */
781 unsigned char RevisionId
; /* 06 Revision ID */
782 unsigned char ClassCode
[3]; /* 07 Class Code for PCI function 0 */
783 unsigned char IntPin1
; /* 08 Interrupt pin for PCI function 1*/
784 unsigned char ClassCode2
[3]; /* 09 Class Code for PCI function 1 */
785 unsigned char IntPin2
; /* 10 Interrupt pin for PCI function 2*/
786 unsigned char IntPin0
; /* Interrupt pin for PCI function 0*/
787 unsigned char MinGrant
; /* 11 Minimum grant */
788 unsigned char MaxLat
; /* Maximum Latency */
789 ushort SubSysVId
; /* 12 Subsystem Vendor Id */
790 ushort SubSysId
; /* 13 Subsystem ID */
791 ushort FlashSize
; /* 14 Flash size (bytes / 4K) */
792 ushort DSize2Pci
; /* 15 DRAM size to PCI (bytes / 64K) */
793 ushort RSize2Pci
; /* 16 Flash (ROM extension) size to
795 ushort DeviceId1
; /* 17 Device Id (function 1) */
796 ushort DeviceId2
; /* 18 Device Id (function 2) */
797 ushort CfgByte6
; /* 19 Device Status Config Bytes 6-7 */
798 ushort PMECapab
; /* 20 Power Mgment capabilities */
799 unsigned char MSICapab
; /* 21 MSI capabilities */
800 unsigned char ClockDivider
; /* Clock divider */
801 ushort PciStatusLow
; /* 22 PCI Status bits 15:0 */
802 ushort PciStatusHigh
; /* 23 PCI Status bits 31:16 */
803 ushort DramConfigLow
; /* 24 DRAM Configuration bits 15:0 */
804 ushort DramConfigHigh
; /* 25 DRAM Configuration bits 31:16 */
805 ushort DramSize
; /* 26 DRAM size (bytes / 64K) */
806 ushort GpioTbiCtl
;/* 27 GPIO/TBI controls for functions 1/0 */
807 ushort EepromSize
; /* 28 EEPROM Size */
808 struct slic_config_mac MacInfo
[2]; /* 29 MAC addresses (2 ports) */
809 unsigned char FruFormat
; /* 35 Alacritech FRU format type */
810 struct atk_fru AtkFru
; /* Alacritech FRU information */
811 unsigned char OemFruFormat
; /* optional OEM FRU format type */
812 union oemfru OemFru
; /* optional OEM FRU information */
813 unsigned char Pad
[4]; /* Pad to 128 bytes - includes 2 checksum bytes
814 * (if OEM FRU info exists) and two unusable
819 #define MAX_EECODE_SIZE sizeof(struct slic_eeprom)
820 #define MIN_EECODE_SIZE 0x62 /* code size without optional OEM FRU stuff */
822 /* SLIC CONFIG structure
824 This structure lives in the CARD structure and is valid for all
825 board types. It is filled in from the appropriate EEPROM structure
826 by SlicGetConfigData().
829 bool EepromValid
; /* Valid EEPROM flag (checksum good?) */
830 ushort DramSize
; /* DRAM size (bytes / 64K) */
831 struct slic_config_mac MacInfo
[SLIC_NBR_MACS
]; /* MAC addresses */
832 unsigned char FruFormat
; /* Alacritech FRU format type */
833 struct atk_fru AtkFru
; /* Alacritech FRU information */
834 unsigned char OemFruFormat
; /* optional OEM FRU format type */
836 struct vendor1_fru vendor1_fru
;
837 struct vendor2_fru vendor2_fru
;
838 struct vendor3_fru vendor3_fru
;
839 struct vendor4_fru vendor4_fru
;