Annotation of sys/dev/ic/i82595reg.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: i82595reg.h,v 1.3 2003/10/21 18:58:49 jmc Exp $ */
2: /* $NetBSD: i82595reg.h,v 1.1 1996/05/06 21:36:51 is Exp $ */
3:
4: /*
5: * Copyright (c) 1996, Ignatios Souvatzis.
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. All advertising materials mentioning features or use of this software
17: * must display the following acknowledgement:
18: * This product includes software developed by Ignatios Souvatzis
19: * for the NetBSD project.
20: * 4. The name of the author may not be used to endorse or promote products
21: * derived from this software without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
27: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33: * SUCH DAMAGE.
34: */
35:
36: /*
37: * Intel 82595 Ethernet chip register, bit, and structure definitions.
38: *
39: * Written by is with reference to Intel's i82595FX data sheet, with some
40: * clarification coming from looking at the Clarkson Packet Driver code for this
41: * chip written by Russ Nelson and others;
42: *
43: * and
44: *
45: * configuration EEPROM layout. Written with reference to Intels
46: * public "LAN595 Hardware and Software Specifications" document.
47: */
48:
49: /* registers */
50:
51: /* bank0 */
52:
53: #define COMMAND_REG 0 /* available in any bank */
54:
55: #define MC_SETUP_CMD 0x03
56: #define XMT_CMD 0x04
57: #define TDR_CMD 0x05
58: #define DUMP_CMD 0x06
59: #define DIAG_CMD 0x07
60: #define RCV_ENABLE_CMD 0x08
61: #define RCV_DISABLE_CMD 0x0a
62: #define RCV_STOP_CMD 0x0b
63: #define RESET_CMD 0x0e
64: #define TRISTATE_CMD 0x16
65: #define NO_TRISTATE_CMD 0x17
66: #define POWER_DOWN_CMD 0x18
67: #define SLEEP_MODE_CMD 0x19
68: #define NEGOTIATE_CMD 0x1a
69: #define RESUME_XMT_CMD 0x1c
70: #define SEL_RESET_CMD 0x1e
71: #define BANK_SEL(n) (n<<6) /* 0, 1, 2 */
72:
73: #define STATUS_REG 1
74:
75: #define RX_STP_INT 0x01
76: #define RX_INT 0x02
77: #define TX_INT 0x04
78: #define EXEC_INT 0x08
79: #define EXEC_STATUS 0x30
80:
81: #define ID_REG 2
82:
83: #define ID_REG_MASK 0x2c
84: #define ID_REG_SIG 0x24
85: #define R_ROBIN_BITS 0xc0
86: #define R_ROBIN_SHIFT 6
87: #define AUTO_ENABLE 0x10
88:
89: #define INT_MASK_REG 3
90:
91: #define RX_STOP_BIT 0x01
92: #define RX_BIT 0x02
93: #define TX_BIT 0x04
94: #define EXEC_BIT 0x08
95: #define ALL_INTS 0x0f
96:
97: #define RCV_START_LOW 4
98: #define RCV_START_HIGH 5
99:
100: #define RCV_STOP_LOW 6
101: #define RCV_STOP_HIGH 7
102:
103: #define XMT_ADDR_REG 0x0a
104: #define HOST_ADDR_REG 0x0c
105: #define MEM_PORT_REG 0x0e
106:
107: /* -------------------- bank1 -------------------- */
108:
109: #define REG1 1
110:
111: #define WORD_WIDTH 0x02
112: #define INT_ENABLE 0x80
113:
114: #define INT_NO_REG 2
115:
116: #define RCV_LOWER_LIMIT_REG 8
117: #define RCV_UPPER_LIMIT_REG 9
118:
119: #define XMT_LOWER_LIMIT_REG 10
120: #define XMT_UPPER_LIMIT_REG 11
121:
122: /* bank2 */
123:
124: /* reg1, apparently */
125:
126: #define XMT_CHAIN_INT 0x20 /* interrupt at end of xmt chain */
127: #define XMT_CHAIN_ERRSTOP 0x40 /* int at end of chain even if err */
128: #define RCV_DISCARD_BAD 0x80 /* Throw bad frames away and continue */
129:
130: #define RECV_MODES_REG 2
131:
132: #define PROMISC_MODE 0x01
133: #define NO_RX_CRC 0x04
134: #define NO_ADD_INS 0x10
135: #define MULTI_IA 0x20
136:
137: #define MATCH_ID (NO_ADD_INS | NO_RX_CRC | 0x02)
138: #define MATCH_ALL (NO_ADD_INS | NO_RX_CRC | 0x01)
139: #define MATCH_BRDCST (NO_ADD_INS | NO_RX_CRC)
140:
141: #define MEDIA_SELECT 3
142:
143: #define TPE_BIT 0x04
144: #define BNC_BIT 0x20
145: #define TEST_MODE_MASK 0x3f
146:
147: #define I_ADD(n) (n+4) /* 0..5 -> 4..9 */
148:
149: #define EEPROM_REG 10
150:
151: #define EEDO 8
152: #define EEDI 4
153: #define EECS 2
154: #define EESK 1
155:
156: /*
157: * EEPROM layout. Written with reference to Intels public "LAN595 Hardware and
158: * Software Specifications" document.
159: */
160:
161: #define EEPPW0 0
162: #define EEPP_BusWidth 0x0004
163: #define EEPP_FlashAdrs 0x0038
164: #define EEPP_FLASHTRANSFORM {-1, -1, 0xC8000, 0xCC000, 0xD0000, \
165: 0xD4000, 0xD8000, 0xDC000}
166: #define EEPP_AutoIO 0x0040
167: #define EEPP_IOMapping 0xfc00
168:
169: #define EEPPW1 1
170: #define EEPP_Int 0x0007
171: #define EEPP_INTMAP {3, 5, 9, 10, 11, -1, -1, -1}
172: #define EEPP_RINTMAP {0xff, 0xff, 0x02, 0x00, 0xff, 0x01, 0xff, \
173: 0xff, 0xff, 0x02, 0x03, 0x04 }
174:
175: #define EEPP_LinkInteg 0x0008
176: #define EEPP_PolarCorr 0x0010
177: #define EEPP_AuiTpe 0x0020
178: #define EEPP_Jabber 0x0040
179: #define EEPP_AutoPort 0x0080
180: #define EEPP_SmOut 0x0100
181: #define EEPP_BootFls 0x0200
182: #define EEPP_DramSize 0x1000
183: #define EEPP_AltReady 0x2000
184:
185: #define EEPPEther2 2
186: #define EEPPEther1 3
187: #define EEPPEther0 4
188:
189: #define EEPPEther2a 0x3c
190: #define EEPPEther1a 0x3d
191: #define EEPPEther0a 0x3e
192:
193: #define EEPPW5 5
194: #define EEPP_BncTpe 0x0001
195: #define EEPP_RomSlct 0x0006 /* none, NetWare, NDIS, rsrvd. */
196: #define EEPP_NumConn 0x0008 /* 0=2, 1=3 */
197:
198: #define EEPW6 6
199: #define EEPP_BoardRev 0x00FF
200:
201: #define EEPP_LENGTH 0x40
202: #define EEPP_CHKSUM 0xBABA /* Intel claim 0x0, but this seems to be wrong */
203:
204: #define I595_XMT_HDRLEN 8
205:
206: #define CMD_MASK 0x001f
207: #define TX_DONE 0x0080
208: #define CHAIN 0x8000
209:
210: #define XMT_STATUS 0x02
211: #define XMT_CHAIN 0x04
212: #define XMT_COUNT 0x06
213:
214: #define I595_RCV_HDRLEN 8
215:
216: #define RCV_DONE 0x0008
217: #define RX_OK 0x2000
218: #define RX_ERR 0x0d81
219:
220:
CVSweb