|
|
1.1 ! root 1: /* wereg.h */ ! 2: /* ! 3: Copyright (C) 1992 Ross Biro ! 4: ! 5: This program is free software; you can redistribute it and/or modify ! 6: it under the terms of the GNU General Public License as published by ! 7: the Free Software Foundation; either version 1, or (at your option) ! 8: any later version. ! 9: ! 10: This program is distributed in the hope that it will be useful, ! 11: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 13: GNU General Public License for more details. ! 14: ! 15: You should have received a copy of the GNU General Public License ! 16: along with this program; if not, write to the Free Software ! 17: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! 18: ! 19: The Author may be reached as [email protected] or ! 20: C/O Department of Mathematics; Stanford University; Stanford, CA 94305 ! 21: */ ! 22: /* This is based on if_wereg.h from bsd386 */ ! 23: ! 24: /* Uncomment the next line if you are having troubles with your ! 25: 8 bit card being recognized as 16 bit. */ ! 26: /* #define FORCE_8BIT */ ! 27: ! 28: struct wd_ring ! 29: { ! 30: unsigned char status; /* status */ ! 31: /* format of status ! 32: bit ! 33: 0 packet ok ! 34: 1 crc error ! 35: 2 frame alignment error ! 36: 3 fifo overrun ! 37: */ ! 38: #define STRECVD 0xf1 ! 39: unsigned char next; /* pointer to next packet. */ ! 40: unsigned short count; /*packet lenght in bytes + 4 */ ! 41: }; ! 42: ! 43: /* Format of command register. ! 44: bits ! 45: 0 stop ! 46: 1 start ! 47: 2 transmit packet ! 48: 3-5 Remote DMA command ! 49: 6-7 Page Select */ ! 50: ! 51: #define CSTOP 0x1 ! 52: #define CSTART 0x2 ! 53: #define CTRANS 0x4 ! 54: #define CRDMA 0x38 ! 55: #define CRDMA_SHIFT 3 ! 56: #define CPAGE 0xc0 ! 57: #define CPAGE_SHIFT 6 ! 58: ! 59: #define CPAGE1 0x40 ! 60: ! 61: ! 62: #define CPAGE1 0x40 ! 63: ! 64: /* interrupt status defenitions ! 65: bits ! 66: 0 Recv. ! 67: 1 Transmit ! 68: 2 RcvErr ! 69: 3 Transmit Err ! 70: 4 Overwrite warning ! 71: 5 Counter overflow ! 72: 6 Remote DMA complete ! 73: 7 Reset Status */ ! 74: ! 75: #define IRCV 0x1 ! 76: #define ITRS 0x2 ! 77: #define IRCE 0x4 ! 78: #define ITRE 0x8 ! 79: #define IOVER 0x10 ! 80: #define ICOUNTERS 0x20 ! 81: #define IDMA 0x40 ! 82: #define IRESET 0x80 ! 83: #define IOVER 0x10 ! 84: #define ICOUNTERS 0x20 ! 85: #define IDMA 0x40 ! 86: #define IRESET 0x80 ! 87: ! 88: /* transmit status format ! 89: bits ! 90: 0 Packet transmitted ok. ! 91: 1 Non Deferred transmition ! 92: 2 Transmit collied ! 93: 3 Transmit aborted ! 94: 4 Carrier Sense Lost ! 95: 5 Fifo Underrun ! 96: 6 CD Heartbeat ! 97: 7 Out of Window Collision */ ! 98: ! 99: #define TROK 0x1 ! 100: #define TRAB 0x4 ! 101: ! 102: /* Some ID stuff */ ! 103: #define WD_ID1 0x03 ! 104: #define WD_ID2 0x05 ! 105: #define WD_CHECK 0xff ! 106: #define WD_PAGE 256 /* page size in bytes. */ ! 107: #define WD_TXBS 6 /* size of transmit buffer in pages. */ ! 108: #define WD_MAX_PAGES 32 /* Number of pages off ram on card (8k) */ ! 109: #define WD_NIC 16 /* i/o base offset to NIC */ ! 110: ! 111: /* Some configuration stuff. */ ! 112: /* where the memory is mapped in. */ ! 113: #define WD_MEM (dev->mem_start) ! 114: #define WD_BUFFEND (dev->mem_end) ! 115: #define WD_MEMSIZE (WD_BUFFEND-WD_MEM) ! 116: #define WD_BASE (dev->base_addr) ! 117: ! 118: #define TRANS_MASK 0xa ! 119: #define RECV_MASK 0x5 ! 120: #define WD_DCONFIG 0x48 ! 121: #define WD_RCONFIG 0x4 ! 122: #define WD_MCONFIG 0x20 ! 123: #define WD_TCONFIG 0x0 ! 124: #define WD_IMEM (((WD_MEM>>13) & 0x3f)|0x40) ! 125: ! 126: /* WD registers. */ ! 127: #define WD_ROM (WD_BASE+8) ! 128: #define WD_CTL (WD_BASE+0) ! 129: ! 130: /* WD NIC register offsets */ ! 131: #define WD_COMM (WD_BASE+WD_NIC+0x00) /* command register */ ! 132: #define WD_PSTRT (WD_BASE+WD_NIC+0x01) /* page start register */ ! 133: #define WD_PSTOP (WD_BASE+WD_NIC+0x02) /* page stop register */ ! 134: #define WD_BNDR (WD_BASE+WD_NIC+0x03) /* Boundary Pointer */ ! 135: #define WD_TRST (WD_BASE+WD_NIC+0x04) /* Transmit Status */ ! 136: #define WD_TRPG (WD_BASE+WD_NIC+0x04) /* Transmit Page */ ! 137: #define WD_TB0 (WD_BASE+WD_NIC+0x05) /* Transmit byte count, low */ ! 138: #define WD_TB1 (WD_BASE+WD_NIC+0x06) /* Transmit byte count, high */ ! 139: #define WD_ISR (WD_BASE+WD_NIC+0x07) /* Interrupt status register */ ! 140: #define WD_RBY0 (WD_BASE+WD_NIC+0x0a) /* remote byte count low. */ ! 141: #define WD_RBY1 (WD_BASE+WD_NIC+0x0b) /* remote byte count high. */ ! 142: #define WD_RCC (WD_BASE+WD_NIC+0x0c) /* receive configuration */ ! 143: #define WD_TRC (WD_BASE+WD_NIC+0x0d) /* transmit configuration */ ! 144: #define WD_DCR (WD_BASE+WD_NIC+0x0e) /* data configuration */ ! 145: #define WD_IMR (WD_BASE+WD_NIC+0x0f) /* Interrupt Mask register. */ ! 146: #define WD_PAR0 (WD_BASE+WD_NIC+0x01) ! 147: #define WD_CUR (WD_BASE+WD_NIC+0x07) ! 148: #define WD_MAR0 (WD_BASE+WD_NIC+0x08) ! 149: ! 150: /* rth additions */ ! 151: ! 152: #define EN_CMD (WD_BASE+0) ! 153: #define EN_REG1 (WD_BASE+1) ! 154: #define EN_REG5 (WD_BASE+5) ! 155: #define EN_SAPROM (WD_BASE+8) ! 156: #define EN_REGE (WD_BASE+0x0e) ! 157: #define EN_OFFSET 16 ! 158: ! 159: /* WD Commands for EN_CMD */ ! 160: #define EN_RESET ! 161: #define EN_MEMEN 0x40 ! 162: #define EN_MEM_MASK 0x3f ! 163: ! 164: /* WD Bus Register bits */ ! 165: #define BUS16 1 ! 166: ! 167: /* WD REG5 Commands */ ! 168: #define MEM16ENABLE 0x80 ! 169: #define LAN16ENABLE 0x40 ! 170: #define MEMMASK 0x1f ! 171: #define BIT19 0x1 ! 172: ! 173: /* Memory test pattern to use */ ! 174: #define TESTPATTERN 0x5a ! 175: ! 176: /* Western Digital Additional Registers */ ! 177: ! 178: /* National Semiconductor Definitions */ ! 179: ! 180: /* Page 0 */ ! 181: #define CR (WD_BASE+WD_NIC+0) /* RW - Command */ ! 182: #define CLDA0 (WD_BASE+WD_NIC+1) /* R - Current Local DMA Address 0 */ ! 183: #define PSTART (WD_BASE+WD_NIC+1) /* W - Page Start Register */ ! 184: #define CLDA1 (WD_BASE+WD_NIC+2) /* R - Current Local DMA Address 1 */ ! 185: #define PSTOP (WD_BASE+WD_NIC+2) /* W - Page Stop Register */ ! 186: #define BNRY (WD_BASE+WD_NIC+3) /* RW - Boundry Pointer */ ! 187: #define TSR (WD_BASE+WD_NIC+4) /* R - Transmit Status Register */ ! 188: #define TPSR (WD_BASE+WD_NIC+4) /* W - Transmit Page Start */ ! 189: #define NCR (WD_BASE+WD_NIC+5) /* R - Number of Collisions */ ! 190: #define TBCR0 (WD_BASE+WD_NIC+5) /* W - Transmit Byte Count 0 */ ! 191: #define FIFO (WD_BASE+WD_NIC+6) /* R - FIFO */ ! 192: #define TBCR1 (WD_BASE+WD_NIC+6) /* W - Transmit Byte Count 1 */ ! 193: #define ISR (WD_BASE+WD_NIC+7) /* RW - Interrupt Status Register */ ! 194: #define CRDA0 (WD_BASE+WD_NIC+8) /* R - Current Remote DMA Address 0 */ ! 195: #define RSAR0 (WD_BASE+WD_NIC+8) /* W - Remote Start Address 0 */ ! 196: #define CRDA1 (WD_BASE+WD_NIC+9) /* R - Current Remote DMA Address 1 */ ! 197: #define RSAR1 (WD_BASE+WD_NIC+9) /* W - Remote Start Address 1 */ ! 198: /* R - Reserved */ ! 199: #define RBCR0 (WD_BASE+WD_NIC+0x0a) /* W - Remote Byte Count 0 */ ! 200: /* R - Reserved */ ! 201: #define RBCR1 (WD_BASE+WD_NIC+0x0b) /* W - Remote Byte Count 1 */ ! 202: #define RSR (WD_BASE+WD_NIC+0x0c) /* R - Receive Status Register */ ! 203: #define RCR (WD_BASE+WD_NIC+0x0c) /* W - Receive Configuration */ ! 204: #define CNTR0 (WD_BASE+WD_NIC+0x0d) /* R - Frame Alignment Errors 0 */ ! 205: #define TCR (WD_BASE+WD_NIC+0x0d) /* W - Transmit Configuration */ ! 206: #define CNTR1 (WD_BASE+WD_NIC+0x0e) /* R - Frame Alignment Errors 1 */ ! 207: #define DCR (WD_BASE+WD_NIC+0x0e) /* W - Data Configuration */ ! 208: #define CNTR2 (WD_BASE+WD_NIC+0x0f) /* R - Missed Packet Errors */ ! 209: #define IMR (WD_BASE+WD_NIC+0x0f) /* W - Interrupt Mask Register */ ! 210: ! 211: /* Page 1 */ ! 212: /* RW - Command */ ! 213: #define PAR0 (WD_BASE+WD_NIC+0x01) /* RW - Physical Address 0 */ ! 214: #define PAR1 (WD_BASE+WD_NIC+0x02) /* RW - Physical Address 1 */ ! 215: #define PAR2 (WD_BASE+WD_NIC+0x03) /* RW - Physical Address 2 */ ! 216: #define PAR3 (WD_BASE+WD_NIC+0x04) /* RW - Physical Address 3 */ ! 217: #define PAR4 (WD_BASE+WD_NIC+0x04) /* RW - Physical Address 4 */ ! 218: #define PAR5 (WD_BASE+WD_NIC+0x05) /* RW - Physical Address 5 */ ! 219: #define PAR6 (WD_BASE+WD_NIC+0x06) /* RW - Physical Address 6 */ ! 220: #define CURR (WD_BASE+WD_NIC+0x07) /* RW - Current Page */ ! 221: #define MAR0 (WD_BASE+WD_NIC+0x08) /* RW - Multicast Address 0 */ ! 222: #define MAR1 (WD_BASE+WD_NIC+0x09) /* RW - Multicast Address 1 */ ! 223: #define MAR2 (WD_BASE+WD_NIC+0x0a) /* RW - Multicast Address 2 */ ! 224: #define MAR3 (WD_BASE+WD_NIC+0x0b) /* RW - Multicast Address 3 */ ! 225: #define MAR4 (WD_BASE+WD_NIC+0x0c) /* RW - Multicast Address 4 */ ! 226: #define MAR5 (WD_BASE+WD_NIC+0x0d) /* RW - Multicast Address 5 */ ! 227: #define MAR6 (WD_BASE+WD_NIC+0x0e) /* RW - Multicast Address 6 */ ! 228: #define MAR7 (WD_BASE+WD_NIC+0x0f) /* RW - Multicast Address 7 */ ! 229: ! 230: /* Page 2 */ ! 231: /* Page 2 Registers are RW opposite Page 0 */ ! 232: /* and should be used for diagnostic purposes only */ ! 233: ! 234: /* Command Register bits */ ! 235: #define STOP 1 /* In progress jobs finished, software reset */ ! 236: #define STA 2 /* Activate the NIC */ ! 237: #define TXP 4 /* Initiate TX packet */ ! 238: #define RD0 8 /* Remote DMA commands */ ! 239: #define RD1 0x10 ! 240: #define RD2 0x20 ! 241: #define PS0 0x40 /* Page Select */ ! 242: #define PS1 0x80 /* 00 = 0, 01 = 1, 10 = 2, 11 = reserved */ ! 243: ! 244: #define PAGE0 ~(PS0|PS1) /* Remember to AND this */ ! 245: #define PAGE1 PS0 /* these can be OR'd */ ! 246: #define PAGE2 PS1 ! 247: #define NO_DMA RD2 ! 248: ! 249: /* Interrupt Status Register bits */ ! 250: #define PRX 1 /* Packet received with no errors */ ! 251: #define PTX 2 /* Packet transmitted with no errors */ ! 252: #define RXE 4 /* Packet received with errors */ ! 253: #define TXE 8 /* Transmit aborted with errors */ ! 254: #define OVW 0x10 /* Overwrite warning */ ! 255: #define CNT 0x20 /* Counter overflow warning */ ! 256: #define RDC 0x40 /* Remote DMA complete */ ! 257: #define RST 0x80 /* Reset status - does not cause interrupts */ ! 258: ! 259: /* Interrupt Mask Register - 1 = enabled */ ! 260: #define PRXE 1 /* Packet received */ ! 261: #define PTXE 2 /* Packet transmitted */ ! 262: #define RXEE 4 /* Receive error */ ! 263: #define TXEE 8 /* Transmit error */ ! 264: #define OVWE 0x10 /* Overwrite error */ ! 265: #define CNTE 0x20 /* Counter overflow */ ! 266: #define RDCE 0x40 /* Remote DMA complete */ ! 267: ! 268: /* Data Configuration Register */ ! 269: #define WTS 1 /* Word Transfer 0 = byte, 1 = word */ ! 270: #define BOS 2 /* Byte Order 0 = 8086, 1 = 68000 */ ! 271: #define LAS 4 /* Long Address 0 = 16bit, 1 = 32 bit DMA */ ! 272: #define LS 8 /* Loopback = 0, 1 = Normal */ ! 273: #define AR 0x10 /* Autoinitialize = 1 DMA, 0 = software */ ! 274: #define FT0 0x20 /* FIFO Threshold (word mode /2 ) */ ! 275: #define FT1 0x40 /* 00 = 2, 01 = 4, 10 = 8, 11 = 12 bytes */ ! 276: ! 277: /* Transmit Configuration Register */ ! 278: #define CRCI 1 /* CRC inhibit = 1, append = 0 */ ! 279: #define LB0 2 /* Loopback control 00 = normal loopback */ ! 280: #define LB1 4 /* 01 = internal, 10 = external1, 11 = external2 */ ! 281: #define ATD 8 /* Auto Transmit Enable = 1 tx inhibit enabled */ ! 282: #define OFST 0x10 /* Collision offset 1 = modify to low priority mode */ ! 283: ! 284: /* Transmitter Status Register */ ! 285: #define PTXOK 1 /* Packet transmitted without error */ ! 286: /* reserved */ ! 287: #define COL 4 /* Transmit collided, check NCR for count */ ! 288: #define ABT 8 /* Transmit aborted - 16 tries */ ! 289: #define CRS 0x10 /* Carrier Sense lost */ ! 290: #define FU 0x20 /* FIFO underrun */ ! 291: #define CDH 0x40 /* CD Heartbeat failed */ ! 292: #define OWC 0x80 /* Out of window collision */ ! 293: ! 294: /* Receive configuration Register */ ! 295: #define SEP 1 /* Save error packets = 1 */ ! 296: #define ARUNT 2 /* Accept RUNT packets < 64 bytes */ ! 297: #define AB 4 /* Accept Broadcast packets */ ! 298: #define AM 8 /* Accept Multicast packets */ ! 299: #define PRO 0x10 /* Promiscuous mode */ ! 300: #define MON 0x20 /* Monitor mode */ ! 301: ! 302: /* Receive Status Register */ ! 303: #define PRX 1 /* Packet received without error */ ! 304: #define CRC 2 /* CRC error */ ! 305: #define FAE 4 /* Frame Alignment error */ ! 306: #define FO 8 /* FIFO overrun error */ ! 307: #define MPA 0x10 /* Missed packet */ ! 308: #define PHY 0x20 /* Physical = 0, Multicast/Broadcast = 1 */ ! 309: #define DIS 0x40 /* Receiver disabled (monitor mode) */ ! 310: #define DFR 0x80 /* Deferring - jabber on line */ ! 311: ! 312: ! 313: /* rth additions */ ! 314: ! 315: #define EN_CMD (WD_BASE+0) ! 316: #define EN_REG1 (WD_BASE+1) ! 317: #define EN_REG5 (WD_BASE+5) ! 318: #define EN_SAPROM (WD_BASE+8) ! 319: #define EN_REGE (WD_BASE+0x0e) ! 320: #define EN_OFFSET 16 ! 321: ! 322: /* WD Commands for EN_CMD */ ! 323: #define EN_RESET ! 324: #define EN_MEMEN 0x40 ! 325: #define EN_MEM_MASK 0x3f ! 326: ! 327: /* WD Bus Register bits */ ! 328: #define BUS16 1 ! 329: ! 330: /* WD REG5 Commands */ ! 331: #define MEM16ENABLE 0x80 ! 332: #define LAN16ENABLE 0x40 ! 333: #define MEMMASK 0x1f ! 334: #define BIT19 0x1 ! 335: ! 336: /* Memory test pattern to use */ ! 337: #define TESTPATTERN 0x5a ! 338: ! 339: /* Western Digital Additional Registers */ ! 340: ! 341: /* National Semiconductor Definitions */ ! 342: ! 343: /* Page 0 */ ! 344: #define CR (WD_BASE+WD_NIC+0) /* RW - Command */ ! 345: #define CLDA0 (WD_BASE+WD_NIC+1) /* R - Current Local DMA Address 0 */ ! 346: #define PSTART (WD_BASE+WD_NIC+1) /* W - Page Start Register */ ! 347: #define CLDA1 (WD_BASE+WD_NIC+2) /* R - Current Local DMA Address 1 */ ! 348: #define PSTOP (WD_BASE+WD_NIC+2) /* W - Page Stop Register */ ! 349: #define BNRY (WD_BASE+WD_NIC+3) /* RW - Boundry Pointer */ ! 350: #define TSR (WD_BASE+WD_NIC+4) /* R - Transmit Status Register */ ! 351: #define TPSR (WD_BASE+WD_NIC+4) /* W - Transmit Page Start */ ! 352: #define NCR (WD_BASE+WD_NIC+5) /* R - Number of Collisions */ ! 353: #define TBCR0 (WD_BASE+WD_NIC+5) /* W - Transmit Byte Count 0 */ ! 354: #define FIFO (WD_BASE+WD_NIC+6) /* R - FIFO */ ! 355: #define TBCR1 (WD_BASE+WD_NIC+6) /* W - Transmit Byte Count 1 */ ! 356: #define ISR (WD_BASE+WD_NIC+7) /* RW - Interrupt Status Register */ ! 357: #define CRDA0 (WD_BASE+WD_NIC+8) /* R - Current Remote DMA Address 0 */ ! 358: #define RSAR0 (WD_BASE+WD_NIC+8) /* W - Remote Start Address 0 */ ! 359: #define CRDA1 (WD_BASE+WD_NIC+9) /* R - Current Remote DMA Address 1 */ ! 360: #define RSAR1 (WD_BASE+WD_NIC+9) /* W - Remote Start Address 1 */ ! 361: /* R - Reserved */ ! 362: #define RBCR0 (WD_BASE+WD_NIC+0x0a) /* W - Remote Byte Count 0 */ ! 363: /* R - Reserved */ ! 364: #define RBCR1 (WD_BASE+WD_NIC+0x0b) /* W - Remote Byte Count 1 */ ! 365: #define RSR (WD_BASE+WD_NIC+0x0c) /* R - Receive Status Register */ ! 366: #define RCR (WD_BASE+WD_NIC+0x0c) /* W - Receive Configuration */ ! 367: #define CNTR0 (WD_BASE+WD_NIC+0x0d) /* R - Frame Alignment Errors 0 */ ! 368: #define TCR (WD_BASE+WD_NIC+0x0d) /* W - Transmit Configuration */ ! 369: #define CNTR1 (WD_BASE+WD_NIC+0x0e) /* R - Frame Alignment Errors 1 */ ! 370: #define DCR (WD_BASE+WD_NIC+0x0e) /* W - Data Configuration */ ! 371: #define CNTR2 (WD_BASE+WD_NIC+0x0f) /* R - Missed Packet Errors */ ! 372: #define IMR (WD_BASE+WD_NIC+0x0f) /* W - Interrupt Mask Register */ ! 373: ! 374: /* Page 1 */ ! 375: /* RW - Command */ ! 376: #define PAR0 (WD_BASE+WD_NIC+0x01) /* RW - Physical Address 0 */ ! 377: #define PAR1 (WD_BASE+WD_NIC+0x02) /* RW - Physical Address 1 */ ! 378: #define PAR2 (WD_BASE+WD_NIC+0x03) /* RW - Physical Address 2 */ ! 379: #define PAR3 (WD_BASE+WD_NIC+0x04) /* RW - Physical Address 3 */ ! 380: #define PAR4 (WD_BASE+WD_NIC+0x04) /* RW - Physical Address 4 */ ! 381: #define PAR5 (WD_BASE+WD_NIC+0x05) /* RW - Physical Address 5 */ ! 382: #define PAR6 (WD_BASE+WD_NIC+0x06) /* RW - Physical Address 6 */ ! 383: #define CURR (WD_BASE+WD_NIC+0x07) /* RW - Current Page */ ! 384: #define MAR0 (WD_BASE+WD_NIC+0x08) /* RW - Multicast Address 0 */ ! 385: #define MAR1 (WD_BASE+WD_NIC+0x09) /* RW - Multicast Address 1 */ ! 386: #define MAR2 (WD_BASE+WD_NIC+0x0a) /* RW - Multicast Address 2 */ ! 387: #define MAR3 (WD_BASE+WD_NIC+0x0b) /* RW - Multicast Address 3 */ ! 388: #define MAR4 (WD_BASE+WD_NIC+0x0c) /* RW - Multicast Address 4 */ ! 389: #define MAR5 (WD_BASE+WD_NIC+0x0d) /* RW - Multicast Address 5 */ ! 390: #define MAR6 (WD_BASE+WD_NIC+0x0e) /* RW - Multicast Address 6 */ ! 391: #define MAR7 (WD_BASE+WD_NIC+0x0f) /* RW - Multicast Address 7 */ ! 392: ! 393: /* Page 2 */ ! 394: /* Page 2 Registers are RW opposite Page 0 */ ! 395: /* and should be used for diagnostic purposes only */ ! 396: ! 397: /* Command Register bits */ ! 398: #define STOP 1 /* In progress jobs finished, software reset */ ! 399: #define STA 2 /* Activate the NIC */ ! 400: #define TXP 4 /* Initiate TX packet */ ! 401: #define RD0 8 /* Remote DMA commands */ ! 402: #define RD1 0x10 ! 403: #define RD2 0x20 ! 404: #define PS0 0x40 /* Page Select */ ! 405: #define PS1 0x80 /* 00 = 0, 01 = 1, 10 = 2, 11 = reserved */ ! 406: ! 407: #define PAGE0 ~(PS0|PS1) /* Remember to AND this */ ! 408: #define PAGE1 PS0 /* these can be OR'd */ ! 409: #define PAGE2 PS1 ! 410: #define NO_DMA RD2 ! 411: ! 412: /* Interrupt Status Register bits */ ! 413: #define PRX 1 /* Packet received with no errors */ ! 414: #define PTX 2 /* Packet transmitted with no errors */ ! 415: #define RXE 4 /* Packet received with errors */ ! 416: #define TXE 8 /* Transmit aborted with errors */ ! 417: #define OVW 0x10 /* Overwrite warning */ ! 418: #define CNT 0x20 /* Counter overflow warning */ ! 419: #define RDC 0x40 /* Remote DMA complete */ ! 420: #define RST 0x80 /* Reset status - does not cause interrupts */ ! 421: ! 422: /* Interrupt Mask Register - 1 = enabled */ ! 423: #define PRXE 1 /* Packet received */ ! 424: #define PTXE 2 /* Packet transmitted */ ! 425: #define RXEE 4 /* Receive error */ ! 426: #define TXEE 8 /* Transmit error */ ! 427: #define OVWE 0x10 /* Overwrite error */ ! 428: #define CNTE 0x20 /* Counter overflow */ ! 429: #define RDCE 0x40 /* Remote DMA complete */ ! 430: ! 431: /* Data Configuration Register */ ! 432: #define WTS 1 /* Word Transfer 0 = byte, 1 = word */ ! 433: #define BOS 2 /* Byte Order 0 = 8086, 1 = 68000 */ ! 434: #define LAS 4 /* Long Address 0 = 16bit, 1 = 32 bit DMA */ ! 435: #define LS 8 /* Loopback = 0, 1 = Normal */ ! 436: #define AR 0x10 /* Autoinitialize = 1 DMA, 0 = software */ ! 437: #define FT0 0x20 /* FIFO Threshold (word mode /2 ) */ ! 438: #define FT1 0x40 /* 00 = 2, 01 = 4, 10 = 8, 11 = 12 bytes */ ! 439: ! 440: /* Transmit Configuration Register */ ! 441: #define CRCI 1 /* CRC inhibit = 1, append = 0 */ ! 442: #define LB0 2 /* Loopback control 00 = normal loopback */ ! 443: #define LB1 4 /* 01 = internal, 10 = external1, 11 = external2 */ ! 444: #define ATD 8 /* Auto Transmit Enable = 1 tx inhibit enabled */ ! 445: #define OFST 0x10 /* Collision offset 1 = modify to low priority mode */ ! 446: ! 447: /* Transmitter Status Register */ ! 448: #define PTXOK 1 /* Packet transmitted without error */ ! 449: /* reserved */ ! 450: #define COL 4 /* Transmit collided, check NCR for count */ ! 451: #define ABT 8 /* Transmit aborted - 16 tries */ ! 452: #define CRS 0x10 /* Carrier Sense lost */ ! 453: #define FU 0x20 /* FIFO underrun */ ! 454: #define CDH 0x40 /* CD Heartbeat failed */ ! 455: #define OWC 0x80 /* Out of window collision */ ! 456: ! 457: /* Receive configuration Register */ ! 458: #define SEP 1 /* Save error packets = 1 */ ! 459: #define ARUNT 2 /* Accept RUNT packets < 64 bytes */ ! 460: #define AB 4 /* Accept Broadcast packets */ ! 461: #define AM 8 /* Accept Multicast packets */ ! 462: #define PRO 0x10 /* Promiscuous mode */ ! 463: #define MON 0x20 /* Monitor mode */ ! 464: ! 465: /* Receive Status Register */ ! 466: #define PRX 1 /* Packet received without error */ ! 467: #define CRC 2 /* CRC error */ ! 468: #define FAE 4 /* Frame Alignment error */ ! 469: #define FO 8 /* FIFO overrun error */ ! 470: #define MPA 0x10 /* Missed packet */ ! 471: #define PHY 0x20 /* Physical = 0, Multicast/Broadcast = 1 */ ! 472: #define DIS 0x40 /* Receiver disabled (monitor mode) */ ! 473: #define DFR 0x80 /* Deferring - jabber on line */ ! 474: ! 475: ! 476: ! 477: ! 478:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.