Annotation of sys/dev/ic/i82595reg.h, Revision 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