|
|
1.1 ! root 1: /* $Id: i825x6reg.h,v 1.1 2004/05/04 01:17:27 fredette Exp $ */ ! 2: ! 3: /* ic/i825x6reg.h - register definitions for Intel 82586/82596 emulation: */ ! 4: ! 5: /* ! 6: * Copyright (c) 2004 Matt Fredette ! 7: * All rights reserved. ! 8: * ! 9: * Redistribution and use in source and binary forms, with or without ! 10: * modification, are permitted provided that the following conditions ! 11: * are met: ! 12: * 1. Redistributions of source code must retain the above copyright ! 13: * notice, this list of conditions and the following disclaimer. ! 14: * 2. Redistributions in binary form must reproduce the above copyright ! 15: * notice, this list of conditions and the following disclaimer in the ! 16: * documentation and/or other materials provided with the distribution. ! 17: * 3. All advertising materials mentioning features or use of this software ! 18: * must display the following acknowledgement: ! 19: * This product includes software developed by Matt Fredette. ! 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 AUTHOR ``AS IS'' AND ANY EXPRESS OR ! 24: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! 25: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ! 26: * 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 OR ! 29: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ! 31: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ! 32: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ! 33: * POSSIBILITY OF SUCH DAMAGE. ! 34: */ ! 35: ! 36: #ifndef _TME_I825X6REG_H ! 37: #define _TME_I825X6REG_H ! 38: ! 39: #include <tme/common.h> ! 40: _TME_RCSID("$Id: i825x6reg.h,v 1.1 2004/05/04 01:17:27 fredette Exp $"); ! 41: ! 42: /* macros: */ ! 43: ! 44: /* the SCP address: */ ! 45: #define TME_I825X6_SCP_ADDRESS (0x00fffff4) ! 46: ! 47: /* the SCP: */ ! 48: #define TME_I825X6_SCP_SYSBUS (2) ! 49: #define TME_I825X6_SCP_SYSBUS_MODE_MASK (0x06) ! 50: #define TME_I825X6_SCP_SYSBUS_MODE_82586 (0x00) ! 51: #define TME_I825X6_SCP_SYSBUS_MODE_32S (0x02) ! 52: #define TME_I825X6_SCP_SYSBUS_MODE_LINEAR (0x04) ! 53: #define TME_I825X6_SCP_SYSBUS_BE (0x80) ! 54: #define TME_I825X6_SCP_ISCP_ADDRESS (8) ! 55: #define TME_I825X6_SCP_SIZE (12) ! 56: ! 57: /* the ISCP: */ ! 58: #define TME_I825X6_ISCP_BUSY (0) ! 59: #define TME_I82586_ISCP_SCB_OFFSET (2) ! 60: #define TME_I82586_ISCP_SCB_BASE (4) ! 61: #define TME_I825X6_ISCP_SIZE (8) ! 62: ! 63: /* the common SCB offsets: */ ! 64: #define TME_I825X6_SCB_STAT_CUS_RUS_T (0) ! 65: #define TME_I825X6_SCB_ACK_CUC_R_RUC (2) ! 66: ! 67: /* the i82586 and 32-bit segmented i82596 Command Block List and Receive Frame Area SCB offsets: */ ! 68: #define TME_I82586_SCB_CBL_OFFSET (4) ! 69: #define TME_I82586_SCB_RFA_OFFSET (6) ! 70: ! 71: /* the i82586 error counter SCB offsets: */ ! 72: #define TME_I82586_SCB_ERRORS_CRC (8) ! 73: #define TME_I82586_SCB_ERRORS_ALIGN (10) ! 74: #define TME_I82586_SCB_ERRORS_RESOURCE (12) ! 75: #define TME_I82586_SCB_ERRORS_OVERRUN (14) ! 76: ! 77: /* the i82586 SCB size: */ ! 78: #define TME_I82586_SCB_SIZE (16) ! 79: ! 80: /* the SCB Status bits: */ ! 81: #define TME_I825X6_SCB_STAT_MASK (0xf000) ! 82: #define TME_I825X6_SCB_STAT_CX (0x8000) ! 83: #define TME_I825X6_SCB_STAT_FR (0x4000) ! 84: #define TME_I825X6_SCB_STAT_CNA (0x2000) ! 85: #define TME_I825X6_SCB_STAT_RNR (0x1000) ! 86: ! 87: /* the SCB Command Unit Status field: */ ! 88: #define TME_I825X6_SCB_CUS_MASK (0x0700) ! 89: #define TME_I825X6_SCB_CUS_IDLE (0x0000) ! 90: #define TME_I825X6_SCB_CUS_SUSPENDED (0x0100) ! 91: #define TME_I825X6_SCB_CUS_ACTIVE (0x0200) ! 92: ! 93: /* the SCB Receive Unit Status: */ ! 94: #define TME_I82586_SCB_RUS_MASK (0x0070) ! 95: #define TME_I825X6_SCB_RUS_READY (0x0040) ! 96: #define TME_I825X6_SCB_RUS_ERESOURCE (0x0020) ! 97: #define TME_I825X6_SCB_RUS_SUSPENDED (0x0010) ! 98: #define TME_I825X6_SCB_RUS_IDLE (0x0000) ! 99: ! 100: /* the SCB Command Unit Command field: */ ! 101: #define TME_I825X6_SCB_CUC_MASK (0x0700) ! 102: #define TME_I825X6_SCB_CUC_NOP (0x0000) ! 103: #define TME_I825X6_SCB_CUC_START (0x0100) ! 104: #define TME_I825X6_SCB_CUC_RESUME (0x0200) ! 105: #define TME_I825X6_SCB_CUC_SUSPEND (0x0300) ! 106: #define TME_I825X6_SCB_CUC_ABORT (0x0400) ! 107: ! 108: /* the SCB Reset bit: */ ! 109: #define TME_I825X6_SCB_RESET (0x0080) ! 110: ! 111: /* the SCB Receive Unit Command field: */ ! 112: #define TME_I825X6_SCB_RUC_MASK (0x0070) ! 113: #define TME_I825X6_SCB_RUC_NOP (0x0000) ! 114: #define TME_I825X6_SCB_RUC_START (0x0010) ! 115: #define TME_I825X6_SCB_RUC_RESUME (0x0020) ! 116: #define TME_I825X6_SCB_RUC_SUSPEND (0x0030) ! 117: #define TME_I825X6_SCB_RUC_ABORT (0x0040) ! 118: ! 119: /* the i825x6 Command Block, Receive Frame Descriptor, and Receive ! 120: Buffer Descriptor flags: */ ! 121: #define TME_I825X6_FLAG_EL (0x8000) ! 122: #define TME_I825X6_FLAG_S (0x4000) ! 123: #define TME_I825X6_FLAG_C (0x8000) ! 124: #define TME_I825X6_FLAG_B (0x4000) ! 125: #define TME_I825X6_FLAG_OK (0x2000) ! 126: ! 127: /* the i825x6 Command Block: */ ! 128: #define TME_I825X6_CB_C_B_OK_A (0) ! 129: #define TME_I825X6_CB_A (0x1000) ! 130: #define TME_I825X6_CB_EL_S_I_CMD (2) ! 131: #define TME_I825X6_CB_I (0x2000) ! 132: #define TME_I825X6_CB_CMD_MASK (0x0007) ! 133: #define TME_I825X6_CB_CMD_NOP (0x0000) ! 134: #define TME_I825X6_CB_CMD_SETUP_IA (0x0001) ! 135: #define TME_I825X6_CB_CMD_CONFIGURE (0x0002) ! 136: #define TME_I825X6_CB_CMD_SETUP_MC (0x0003) ! 137: #define TME_I825X6_CB_CMD_TRANSMIT (0x0004) ! 138: #define TME_I825X6_CB_CMD_TDR (0x0005) ! 139: #define TME_I825X6_CB_CMD_DUMP (0x0006) ! 140: #define TME_I825X6_CB_CMD_DIAGNOSE (0x0007) ! 141: ! 142: /* the i82586 and 32-bit segmented i82596 Command Block: */ ! 143: #define TME_I82586_CB_LINK_OFFSET (4) ! 144: #define TME_I82586_CB_X (6) ! 145: ! 146: /* the i82586 and 32-bit segmented i82596 Transmit Command Block Transmit Buffer field: */ ! 147: #define TME_I82586_TCB_TBD_OFFSET (6) ! 148: ! 149: /* the i82586 Transmit Command Block: */ ! 150: #define TME_I825X6_TCB_STATUS_MASK (0x0ff0) ! 151: #define TME_I825X6_TCB_STATUS_UNDERRUN (0x0100) ! 152: #define TME_I82586_TCB_ADDR_DEST (8) ! 153: #define TME_I82586_TCB_LENGTH (14) ! 154: #define TME_I82585_TCB_SIZE (16) ! 155: ! 156: /* the i82586 and 32-bit segmented i82586 Transmit Buffer: */ ! 157: #define TME_I82586_TBD_EOF_SIZE (0) ! 158: #define TME_I82586_TBD_EOF (0x8000) ! 159: #define TME_I82586_TBD_SIZE_MASK (0x7fff) ! 160: #define TME_I82586_TBD_TBD_OFFSET (2) ! 161: #define TME_I82586_TBD_TB_ADDRESS (4) ! 162: ! 163: /* the i82586 and 32-bit segmented i82596 TDR result field: */ ! 164: #define TME_I82586_TDR_STATUS_OK (0x8000) ! 165: ! 166: /* the i825x6 Receive Frame Descriptor: */ ! 167: #define TME_I825X6_RFD_C_B_OK_STATUS (0) ! 168: #define TME_I825X6_RFD_STATUS_RNR (0x0200) ! 169: #define TME_I825X6_RFD_EL_S_SF (2) ! 170: #define TME_I82596_RFD_SF (0x0008) ! 171: ! 172: /* the i82586 and 32-bit segmented i82596 Receive Frame Descriptor: */ ! 173: #define TME_I82586_RFD_LINK_OFFSET (4) ! 174: #define TME_I82586_RFD_RBD_OFFSET (6) ! 175: ! 176: /* the i82586 Receive Frame Descriptor: */ ! 177: #define TME_I82586_RFD_RBD_ETH_HEADER (6) ! 178: ! 179: /* the i825x6 Receive Buffer Descriptor: */ ! 180: #define TME_I825X6_RBD_EOF_F_ACT_COUNT (0) ! 181: #define TME_I825X6_RBD_EOF (0x8000) ! 182: #define TME_I825X6_RBD_F (0x4000) ! 183: #define TME_I825X6_RBD_ACT_COUNT_MASK (0x3fff) ! 184: ! 185: /* the i82586 and 32-bit segmented i82596 Receive Buffer Descriptor: */ ! 186: #define TME_I82586_RBD_RBD_OFFSET (2) ! 187: #define TME_I82586_RBD_RB_ADDRESS (4) ! 188: #define TME_I82586_RBD_EL_P_SIZE (8) ! 189: #define TME_I825X6_RBD_EL (0x8000) ! 190: #define TME_I82596_RBD_P (0x4000) ! 191: #define TME_I825X6_RBD_SIZE_MASK (0x3fff) ! 192: ! 193: #endif /* !_TME_I825X6REG_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.