[BACK]Return to i82595reg.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

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