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

Annotation of sys/dev/ic/elink3reg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: elink3reg.h,v 1.15 2005/02/17 18:07:36 jfb Exp $      */
                      2: /*     $NetBSD: elink3reg.h,v 1.13 1997/04/27 09:42:34 veego Exp $     */
                      3:
                      4: /*
                      5:  * Copyright (c) 1995 Herb Peyerl <hpeyerl@beer.org>
                      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 Herb Peyerl.
                     19:  * 4. The name of Herb Peyerl may not be used to endorse or promote products
                     20:  *    derived from this software without specific prior written permission.
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     23:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     24:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     25:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     26:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     27:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     31:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     32:  *
                     33:  */
                     34:
                     35: /*
                     36:  * These define the EEPROM data structure.  They are used in the probe
                     37:  * function to verify the existence of the adapter after having sent
                     38:  * the ID_Sequence.
                     39:  *
                     40:  * There are others but only the ones we use are defined here.
                     41:  */
                     42: #define EEPROM_NODE_ADDR_0     0x0     /* Word */
                     43: #define EEPROM_NODE_ADDR_1     0x1     /* Word */
                     44: #define EEPROM_NODE_ADDR_2     0x2     /* Word */
                     45: #define EEPROM_PROD_ID         0x3     /* 0x9[0-f]50 */
                     46: #define EEPROM_MFG_ID          0x7     /* 0x6d50 */
                     47: #define EEPROM_ADDR_CFG                0x8     /* Base addr */
                     48: #define EEPROM_RESOURCE_CFG    0x9     /* IRQ. Bits 12-15 */
                     49: #define        EEPROM_OEM_ADDR0        0xa
                     50: #define EEPROM_PNP             0x13    /* PNP mode and such? */
                     51:
                     52: /*
                     53:  * These are the registers for the 3Com 3c509 and their bit patterns when
                     54:  * applicable.  They have been taken out of the "EtherLink III Parallel
                     55:  * Tasking EISA and ISA Technical Reference" "Beta Draft 10/30/92" manual
                     56:  * from 3com.
                     57:  */
                     58: #define EP_COMMAND             0x0e    /* Write. BASE+0x0e is always a command reg. */
                     59: #define EP_STATUS              0x0e    /* Read. BASE+0x0e is always status reg. */
                     60: #define EP_WINDOW              0x0f    /* Read. BASE+0x0f is always window reg. */
                     61:
                     62: /*
                     63:  * Window 0 registers. Setup.
                     64:  */
                     65:        /* Write */
                     66: #define EP_W0_EEPROM_DATA      0x0c
                     67: #define EP_W0_EEPROM_COMMAND   0x0a
                     68: #define EP_W0_RESOURCE_CFG     0x08
                     69: #define EP_W0_ADDRESS_CFG      0x06
                     70: #define EP_W0_CONFIG_CTRL      0x04
                     71:        /* Read */
                     72: #define EP_W0_PRODUCT_ID       0x02
                     73: #define EP_W0_MFG_ID           0x00
                     74:
                     75: /*
                     76:  * Window 1 registers. Operating Set.
                     77:  */
                     78:        /* Write */
                     79: #define EP_W1_TX_PIO_WR_2      0x02
                     80: #define EP_W1_TX_PIO_WR_1      0x00
                     81:        /* Read */
                     82: #define EP_W1_FREE_TX          0x0c
                     83: #define EP_W1_TX_STATUS                0x0b    /* byte */
                     84: #define EP_W1_TIMER            0x0a    /* byte */
                     85: #define EP_W1_RX_STATUS                0x08
                     86: #define EP_W1_RX_PIO_RD_2      0x02
                     87: #define EP_W1_RX_PIO_RD_1      0x00
                     88:
                     89: /* Special registers used by the RoadRunner.  These are used to program
                     90:  * a FIFO buffer to reduce the PCMCIA->PCI bridge latency during PIO.
                     91:  */
                     92: #define EP_W1_RUNNER_RDCTL     0x16
                     93: #define EP_W1_RUNNER_WRCTL     0x1c
                     94:
                     95: /*
                     96:  * Window 2 registers. Station Address Setup/Read
                     97:  */
                     98:        /* Read/Write */
                     99: #define EP_W2_RECVMASK_0       0x06
                    100: #define EP_W2_ADDR_5           0x05
                    101: #define EP_W2_ADDR_4           0x04
                    102: #define EP_W2_ADDR_3           0x03
                    103: #define EP_W2_ADDR_2           0x02
                    104: #define EP_W2_ADDR_1           0x01
                    105: #define EP_W2_ADDR_0           0x00
                    106:
                    107: /*
                    108:  * Window 3 registers.  FIFO Management.
                    109:  */
                    110:        /* Read */
                    111: #define EP_W3_FREE_TX          0x0c
                    112: #define EP_W3_FREE_RX          0x0a
                    113:        /* Read/Write, at least on busmastering cards. */
                    114: #define EP_W3_INTERNAL_CONFIG  0x00    /* 32 bits */
                    115: #define EP_W3_OTHER_INT                0x04    /*  8 bits */
                    116: #define EP_W3_PIO_RESERVED     0x05    /*  8 bits */
                    117: #define EP_W3_MAC_CONTROL      0x06    /* 16 bits */
                    118: #define EP_W3_RESET_OPTIONS    0x08    /* 16 bits */
                    119:
                    120: /*
                    121:  * Window 4 registers. Diagnostics.
                    122:  */
                    123:        /* Read/Write */
                    124: #define EP_W4_MEDIA_TYPE       0x0a
                    125: #define EP_W4_CTRLR_STATUS     0x08
                    126: #define EP_W4_NET_DIAG         0x06
                    127: #define EP_W4_FIFO_DIAG                0x04
                    128: #define EP_W4_HOST_DIAG                0x02
                    129: #define EP_W4_TX_DIAG          0x00
                    130:
                    131: /*
                    132:  * Window 4 offset 8 is the PHY Management register on the
                    133:  * 3c90x.
                    134:  */
                    135: #define EP_W4_BOOM_PHYSMGMT    0x08
                    136: #define PHYSMGMT_CLK           0x0001
                    137: #define PHYSMGMT_DATA          0x0002
                    138: #define PHYSMGMT_DIR           0x0004
                    139:
                    140: /*
                    141:  * Window 5 Registers.  Results and Internal status.
                    142:  */
                    143:        /* Read */
                    144: #define EP_W5_READ_0_MASK      0x0c
                    145: #define EP_W5_INTR_MASK                0x0a
                    146: #define EP_W5_RX_FILTER                0x08
                    147: #define EP_W5_RX_EARLY_THRESH  0x06
                    148: #define EP_W5_TX_AVAIL_THRESH  0x02
                    149: #define EP_W5_TX_START_THRESH  0x00
                    150:
                    151: /*
                    152:  * Window 6 registers. Statistics.
                    153:  */
                    154:        /* Read/Write */
                    155: #define TX_TOTAL_OK            0x0c
                    156: #define RX_TOTAL_OK            0x0a
                    157: #define TX_DEFERRALS           0x08
                    158: #define RX_FRAMES_OK           0x07
                    159: #define TX_FRAMES_OK           0x06
                    160: #define RX_OVERRUNS            0x05
                    161: #define TX_COLLISIONS          0x04
                    162: #define TX_AFTER_1_COLLISION   0x03
                    163: #define TX_AFTER_X_COLLISIONS  0x02
                    164: #define TX_NO_SQE              0x01
                    165: #define TX_CD_LOST             0x00
                    166:
                    167: /*
                    168:  * Window 7 registers.
                    169:  * Address and length for a single bus-master DMA transfer.
                    170:  */
                    171: #define EP_W7_MASTER_ADDDRES   0x00
                    172: #define EP_W7_RX_ERROR         0x04
                    173: #define EP_W7_MASTER_LEN       0x06
                    174: #define EP_W7_RX_STATUS                0x08
                    175: #define EP_W7_TIMER            0x0a
                    176: #define EP_W7_TX_STATUS                0x0b
                    177: #define EP_W7_MASTER_STATUS    0x0c
                    178:
                    179: /*
                    180:  * Window 7 registers.
                    181:  * Address and length for a single bus-master DMA transfer.
                    182:  */
                    183: #define EP_W7_MASTER_ADDDRES   0x00
                    184: #define EP_W7_RX_ERROR         0x04
                    185: #define EP_W7_MASTER_LEN       0x06
                    186: #define EP_W7_RX_STATUS                0x08
                    187: #define EP_W7_TIMER            0x0a
                    188: #define EP_W7_TX_STATUS                0x0b
                    189: #define EP_W7_MASTER_STATUS    0x0c
                    190:
                    191: /*
                    192:  * Register definitions.
                    193:  */
                    194:
                    195: /*
                    196:  * Command register. All windows.
                    197:  *
                    198:  * 16 bit register.
                    199:  *     15-11:  5-bit code for command to be executed.
                    200:  *     10-0:   11-bit arg if any. For commands with no args;
                    201:  *           this can be set to anything.
                    202:  */
                    203: #define GLOBAL_RESET           (u_short) 0x0000   /* Wait at least 1ms after issuing */
                    204: #define WINDOW_SELECT          (u_short) (0x1<<11)
                    205: #define START_TRANSCEIVER      (u_short) (0x2<<11) /* Read ADDR_CFG reg to determine
                    206:                                                      whether this is needed. If so;
                    207:                                                      wait 800 uSec before using trans-
                    208:                                                      ceiver. */
                    209: #define RX_DISABLE             (u_short) (0x3<<11) /* state disabled on power-up */
                    210: #define RX_ENABLE              (u_short) (0x4<<11)
                    211: #define RX_RESET               (u_short) (0x5<<11)
                    212: #define RX_DISCARD_TOP_PACK    (u_short) (0x8<<11)
                    213: #define TX_ENABLE              (u_short) (0x9<<11)
                    214: #define TX_DISABLE             (u_short) (0xa<<11)
                    215: #define TX_RESET               (u_short) (0xb<<11)
                    216: #define REQ_INTR               (u_short) (0xc<<11)
                    217:
                    218: /*
                    219:  * The following C_* acknowledge the various interrupts.
                    220:  * Some of them don't do anything.  See the manual.
                    221:  */
                    222: #define ACK_INTR               (u_short) (0x6800)
                    223: #      define C_INTR_LATCH     (u_short) (ACK_INTR|0x01)
                    224: #      define C_CARD_FAILURE   (u_short) (ACK_INTR|0x02)
                    225: #      define C_TX_COMPLETE    (u_short) (ACK_INTR|0x04)
                    226: #      define C_TX_AVAIL       (u_short) (ACK_INTR|0x08)
                    227: #      define C_RX_COMPLETE    (u_short) (ACK_INTR|0x10)
                    228: #      define C_RX_EARLY       (u_short) (ACK_INTR|0x20)
                    229: #      define C_INT_RQD                (u_short) (ACK_INTR|0x40)
                    230: #      define C_UPD_STATS      (u_short) (ACK_INTR|0x80)
                    231:
                    232: #define SET_INTR_MASK          (u_short) (0x0e<<11)
                    233:
                    234: /* busmastering-cards only? */
                    235: #define STATUS_ENABLE          (u_short) (0x0f<<11)
                    236:
                    237: #define SET_RD_0_MASK          (u_short) (0x0f<<11)
                    238:
                    239: #define SET_RX_FILTER          (u_short) (0x10<<11)
                    240: #      define FIL_INDIVIDUAL   (u_short) (0x01)
                    241: #      define FIL_MULTICAST    (u_short) (0x02)
                    242: #      define FIL_BRDCST       (u_short) (0x04)
                    243: #      define FIL_PROMISC      (u_short) (0x08)
                    244:
                    245: #define SET_RX_EARLY_THRESH    (u_short) (0x11<<11)
                    246: #define SET_TX_AVAIL_THRESH    (u_short) (0x12<<11)
                    247: #define SET_TX_START_THRESH    (u_short) (0x13<<11)
                    248: #define START_DMA              (u_short) (0x14<<11)    /* busmaster-only */
                    249: #  define START_DMA_TX         (START_DMA | 0x0))      /* busmaster-only */
                    250: #  define START_DMA_RX         (START_DMA | 0x1)       /* busmaster-only */
                    251: #define STATS_ENABLE           (u_short) (0x15<<11)
                    252: #define STATS_DISABLE          (u_short) (0x16<<11)
                    253: #define STOP_TRANSCEIVER       (u_short) (0x17<<11)
                    254:
                    255: /* Only on adapters that support power management: */
                    256: #define POWERUP                        (u_short) (0x1b<<11)
                    257: #define POWERDOWN              (u_short) (0x1c<<11)
                    258: #define POWERAUTO              (u_short) (0x1d<<11)
                    259:
                    260: /*
                    261:  * Command parameter that disables threshold interrupts
                    262:  *   PIO (3c509) cards use 2044.  The fifo word-oriented and 2044--2047 work.
                    263:  *  "busmastering" cards need 8188.
                    264:  * The implicit two-bit upshift done by busmastering cards means
                    265:  * a value of 2047 disables threshold interrupts on both.
                    266:  */
                    267: #define EP_THRESH_DISABLE      2047
                    268:
                    269: /*
                    270:  * Status register. All windows.
                    271:  *
                    272:  *     15-13:  Window number(0-7).
                    273:  *     12:     Command_in_progress.
                    274:  *     11:     reserved / DMA in progress on busmaster cards.
                    275:  *     10:     reserved.
                    276:  *     9:      reserved.
                    277:  *     8:      reserved / DMA done on busmaster cards.
                    278:  *     7:      Update Statistics.
                    279:  *     6:      Interrupt Requested.
                    280:  *     5:      RX Early.
                    281:  *     4:      RX Complete.
                    282:  *     3:      TX Available.
                    283:  *     2:      TX Complete.
                    284:  *     1:      Adapter Failure.
                    285:  *     0:      Interrupt Latch.
                    286:  */
                    287: #define S_INTR_LATCH           (u_short) (0x0001)
                    288: #define S_CARD_FAILURE         (u_short) (0x0002)
                    289: #define S_TX_COMPLETE          (u_short) (0x0004)
                    290: #define S_TX_AVAIL             (u_short) (0x0008)
                    291: #define S_RX_COMPLETE          (u_short) (0x0010)
                    292: #define S_RX_EARLY             (u_short) (0x0020)
                    293: #define S_INT_RQD              (u_short) (0x0040)
                    294: #define S_UPD_STATS            (u_short) (0x0080)
                    295: #define S_DMA_DONE             (u_short) (0x0100)      /* DMA cards only */
                    296: #define S_DOWN_COMPLETE                (u_short) (0x0200)      /* DMA cards only */
                    297: #define S_UP_COMPLETE          (u_short) (0x0400)      /* DMA cards only */
                    298: #define S_DMA_IN_PROGRESS      (u_short) (0x0800)      /* DMA cards only */
                    299: #define S_COMMAND_IN_PROGRESS  (u_short) (0x1000)
                    300:
                    301: /*
                    302:  * FIFO Registers.  RX Status.
                    303:  *
                    304:  *     15:     Incomplete or FIFO empty.
                    305:  *     14:     1: Error in RX Packet   0: Incomplete or no error.
                    306:  *     14-11:  Type of error. [14-11]
                    307:  *           1000 = Overrun.
                    308:  *           1011 = Run Packet Error.
                    309:  *           1100 = Alignment Error.
                    310:  *           1101 = CRC Error.
                    311:  *           1001 = Oversize Packet Error (>1514 bytes)
                    312:  *           0010 = Dribble Bits.
                    313:  *           (all other error codes, no errors.)
                    314:  *
                    315:  *     10-0:   RX Bytes (0-1514)
                    316:  */
                    317: #define ERR_INCOMPLETE  (u_short) (0x8000)
                    318: #define ERR_RX         (u_short) (0x4000)
                    319: #define ERR_MASK       (u_short) (0x7800)
                    320: #define ERR_OVERRUN    (u_short) (0x4000)
                    321: #define ERR_RUNT       (u_short) (0x5800)
                    322: #define ERR_ALIGNMENT  (u_short) (0x6000)
                    323: #define ERR_CRC                (u_short) (0x6800)
                    324: #define ERR_OVERSIZE   (u_short) (0x4800)
                    325: #define ERR_DRIBBLE    (u_short) (0x1000)
                    326:
                    327: /*
                    328:  * TX Status
                    329:  *
                    330:  *   Reports the transmit status of a completed transmission. Writing this
                    331:  *   register pops the transmit completion stack.
                    332:  *
                    333:  *   Window 1/Port 0x0b.
                    334:  *
                    335:  *     7:      Complete
                    336:  *     6:      Interrupt on successful transmission requested.
                    337:  *     5:      Jabber Error (TP Only, TX Reset required. )
                    338:  *     4:      Underrun (TX Reset required. )
                    339:  *     3:      Maximum Collisions.
                    340:  *     2:      TX Status Overflow.
                    341:  *     1-0:    Undefined.
                    342:  *
                    343:  */
                    344: #define TXS_COMPLETE           0x80
                    345: #define TXS_INTR_REQ           0x40
                    346: #define TXS_JABBER             0x20
                    347: #define TXS_UNDERRUN           0x10
                    348: #define TXS_MAX_COLLISION      0x08
                    349: #define TXS_STATUS_OVERFLOW    0x04
                    350:
                    351: /*
                    352:  * RX status
                    353:  *   Window 1/Port 0x08.
                    354:  */
                    355: #define RX_BYTES_MASK                  (u_short) (0x07ff)
                    356:
                    357: /*
                    358:  * Internal Config and MAC control (Window 3)
                    359:  * Window 3 / Port 0: 32-bit internal config register:
                    360:  * bits  0-2:    fifo buffer ram  size
                    361:  *         3:    ram width (word/byte)     (ro)
                    362:  *       4-5:    ram speed
                    363:  *       6-7:    rom size
                    364:  *      8-15:   reserved
                    365:  *
                    366:  *     16-17:   ram split (5:3, 3:1, or 1:1).
                    367:  *     18-19:   reserved
                    368:  *     20-22:   selected media type
                    369:  *        21:   unused
                    370:  *        24:  (nonvolatile) driver should autoselect media
                    371:  *     25-31: reserved
                    372:  *
                    373:  * The low-order 16 bits should generally not be changed by software.
                    374:  * Offsets defined for two 16-bit words, to help out 16-bit busses.
                    375:  */
                    376: #define        CONFIG_RAMSIZE          (u_short) 0x0007
                    377: #define        CONFIG_RAMSIZE_SHIFT    (u_short)      0
                    378:
                    379: #define        CONFIG_RAMWIDTH         (u_short) 0x0008
                    380: #define        CONFIG_RAMWIDTH_SHIFT   (u_short)      3
                    381:
                    382: #define        CONFIG_RAMSPEED         (u_short) 0x0030
                    383: #define        CONFIG_RAMSPEED_SHIFT   (u_short)      4
                    384: #define        CONFIG_ROMSIZE          (u_short) 0x00c0
                    385: #define        CONFIG_ROMSIZE_SHIFT    (u_short)      6
                    386:
                    387: /* Window 3/port 2 */
                    388: #define        CONFIG_RAMSPLIT         (u_short) 0x0003
                    389: #define        CONFIG_RAMSPLIT_SHIFT   (u_short)      0
                    390: #define        CONFIG_MEDIAMASK        (u_short) 0x0070
                    391: #define        CONFIG_MEDIAMASK_SHIFT  (u_short)      4
                    392:
                    393: /*
                    394:  * MAC_CONTROL (Window 3)
                    395:  */
                    396: #define MAC_CONTROL_FDX                0x20    /* full-duplex mode */
                    397:
                    398: /* Active media in EP_W3_RESET_OPTIONS mediamask bits */
                    399:
                    400: #define EPMEDIA_10BASE_T               (u_short)   0x00
                    401: #define EPMEDIA_AUI                    (u_short)   0x01
                    402: #define EPMEDIA_RESV1                  (u_short)   0x02
                    403: #define EPMEDIA_10BASE_2               (u_short)   0x03
                    404: #define EPMEDIA_100BASE_TX             (u_short)   0x04
                    405: #define EPMEDIA_100BASE_FX             (u_short)   0x05
                    406: #define EPMEDIA_MII                    (u_short)   0x06
                    407: #define EPMEDIA_100BASE_T4             (u_short)   0x07
                    408:
                    409:
                    410: #define        CONFIG_AUTOSELECT       (u_short) 0x0100
                    411: #define        CONFIG_AUTOSELECT_SHIFT (u_short)      8
                    412:
                    413: /*
                    414:  * RESET_OPTIONS (Window 4, on Demon/Vortex/Boomerang only)
                    415:  * also mapped to PCI configuration space on PCI adaptors.
                    416:  *
                    417:  * (same register as  Vortex EP_W3_RESET_OPTIONS, mapped to pci-config space)
                    418:  */
                    419: #define EP_PCI_100BASE_T4              (1<<0)
                    420: #define EP_PCI_100BASE_TX              (1<<1)
                    421: #define EP_PCI_100BASE_FX              (1<<2)
                    422: #define EP_PCI_10BASE_T                        (1<<3)
                    423: # define EP_PCI_UTP                    EP_PCI_10BASE_T
                    424: #define EP_PCI_BNC                     (1<<4)
                    425: #define EP_PCI_AUI                     (1<<5)
                    426: #define EP_PCI_100BASE_MII             (1<<6)
                    427: #define EP_PCI_INTERNAL_VCO            (1<<8)
                    428:
                    429: #define EP_RUNNER_MII_RESET            0x4000
                    430: #define EP_RUNNER_ENABLE_MII           0x8000
                    431:
                    432: /*
                    433:  * FIFO Status (Window 4)
                    434:  *
                    435:  *   Supports FIFO diagnostics
                    436:  *
                    437:  *   Window 4/Port 0x04.1
                    438:  *
                    439:  *     15:     1=RX receiving (RO). Set when a packet is being received
                    440:  *             into the RX FIFO.
                    441:  *     14:     Reserved
                    442:  *     13:     1=RX underrun (RO). Generates Adapter Failure interrupt.
                    443:  *             Requires RX Reset or Global Reset command to recover.
                    444:  *             It is generated when you read past the end of a packet -
                    445:  *             reading past what has been received so far will give bad
                    446:  *             data.
                    447:  *     12:     1=RX status overrun (RO). Set when there are already 8
                    448:  *             packets in the RX FIFO. While this bit is set, no additional
                    449:  *             packets are received. Requires no action on the part of
                    450:  *             the host. The condition is cleared once a packet has been
                    451:  *             read out of the RX FIFO.
                    452:  *     11:     1=RX overrun (RO). Set when the RX FIFO is full (there
                    453:  *             may not be an overrun packet yet). While this bit is set,
                    454:  *             no additional packets will be received (some additional
                    455:  *             bytes can still be pending between the wire and the RX
                    456:  *             FIFO). Requires no action on the part of the host. The
                    457:  *             condition is cleared once a few bytes have been read out
                    458:  *             from the RX FIFO.
                    459:  *     10:     1=TX overrun (RO). Generates adapter failure interrupt.
                    460:  *             Requires TX Reset or Global Reset command to recover.
                    461:  *             Disables Transmitter.
                    462:  *     9-8:    Unassigned.
                    463:  *     7-0:    Built in self test bits for the RX and TX FIFO's.
                    464:  */
                    465: #define        FIFOS_RX_RECEIVING      (u_short) 0x8000
                    466: #define        FIFOS_RX_UNDERRUN       (u_short) 0x2000
                    467: #define        FIFOS_RX_STATUS_OVERRUN (u_short) 0x1000
                    468: #define        FIFOS_RX_OVERRUN        (u_short) 0x0800
                    469: #define        FIFOS_TX_OVERRUN        (u_short) 0x0400
                    470:
                    471: /*
                    472:  * ISA/eisa CONFIG_CNTRL media-present bits.
                    473:  */
                    474: #define EP_W0_CC_AUI                   (1<<13)
                    475: #define EP_W0_CC_BNC                   (1<<12)
                    476: #define EP_W0_CC_UTP                   (1<<9)
                    477:
                    478:
                    479: /* EEPROM state flags/commands */
                    480: #define EEPROM_BUSY                    (1<<15)
                    481: #define EEPROM_TST_MODE                        (1<<14)
                    482: #define READ_EEPROM                    (1<<7)
                    483:
                    484: /* For the RoadRunner chips... */
                    485: #define WRITE_EEPROM_RR                        0x100
                    486: #define READ_EEPROM_RR                 0x200
                    487: #define ERASE_EEPROM_RR                        0x300
                    488:
                    489: /* window 4, MEDIA_STATUS bits */
                    490: #define SQE_ENABLE                     0x08    /* Enables SQE on AUI ports */
                    491: #define JABBER_GUARD_ENABLE            0x40
                    492: #define LINKBEAT_ENABLE                        0x80
                    493: #define ENABLE_UTP                     (JABBER_GUARD_ENABLE|LINKBEAT_ENABLE)
                    494: #define DISABLE_UTP                    0x0
                    495: #define LINKBEAT_DETECT                        0x800
                    496: #define MEDIA_LED                      0x0001  /* Link LED for 3C589E */
                    497:
                    498: /*
                    499:  * ep_connectors softc media-preset bitflags
                    500:  */
                    501: #define EPC_AUI                                0x01
                    502: #define EPC_BNC                                0x02
                    503: #define EPC_RESERVED                   0x04
                    504: #define EPC_UTP                                0x08
                    505: #define        EPC_100TX                       0x10
                    506: #define        EPC_100FX                       0x20
                    507: #define        EPC_MII                         0x40
                    508: #define        EPC_100T4                       0x80
                    509:
                    510: /*
                    511:  * Misc defines for various things.
                    512:  */
                    513: #define TAG_ADAPTER                    0xd0
                    514: #define ACTIVATE_ADAPTER_TO_CONFIG     0xff
                    515: #define ENABLE_DRQ_IRQ                 0x0001
                    516: #define MFG_ID                         0x506d  /* `TCM' */
                    517: #define PROD_ID_3C509                  0x5090  /* 509[0-f] */
                    518: #define GO_WINDOW(x)                   bus_space_write_2(sc->sc_iot, \
                    519:                                sc->sc_ioh, EP_COMMAND, WINDOW_SELECT|x)
                    520:
                    521: /* Used to probe for large-packet support. */
                    522: #define EP_LARGEWIN_PROBE              EP_THRESH_DISABLE
                    523: #define EP_LARGEWIN_MASK               0xffc

CVSweb