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

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

1.1       nbrk        1: /*     $OpenBSD: smc83c170reg.h,v 1.1 2005/05/10 01:16:32 brad Exp $   */
                      2: /*     $NetBSD: smc83c170reg.h,v 1.9 2003/11/08 16:08:13 tsutsui Exp $ */
                      3:
                      4: /*-
                      5:  * Copyright (c) 1998 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
                     10:  * NASA Ames Research Center.
                     11:  *
                     12:  * Redistribution and use in source and binary forms, with or without
                     13:  * modification, are permitted provided that the following conditions
                     14:  * are met:
                     15:  * 1. Redistributions of source code must retain the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer.
                     17:  * 2. Redistributions in binary form must reproduce the above copyright
                     18:  *    notice, this list of conditions and the following disclaimer in the
                     19:  *    documentation and/or other materials provided with the distribution.
                     20:  * 3. All advertising materials mentioning features or use of this software
                     21:  *    must display the following acknowledgement:
                     22:  *     This product includes software developed by the NetBSD
                     23:  *     Foundation, Inc. and its contributors.
                     24:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     25:  *    contributors may be used to endorse or promote products derived
                     26:  *    from this software without specific prior written permission.
                     27:  *
                     28:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     29:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     30:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     31:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     32:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     33:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     34:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     35:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     36:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     37:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     38:  * POSSIBILITY OF SUCH DAMAGE.
                     39:  */
                     40:
                     41: #ifndef _DEV_IC_SMC83C170REG_H_
                     42: #define        _DEV_IC_SMC83C170REG_H_
                     43:
                     44: /*
                     45:  * Register description for the Standard Microsystems Corp. 83C170
                     46:  * Ethernet PCI Integrated Controller (EPIC/100).
                     47:  */
                     48:
                     49: /*
                     50:  * EPIC transmit descriptor.  Must be 4-byte aligned.
                     51:  */
                     52: struct epic_txdesc {
                     53:        u_int32_t       et_txstatus;    /* transmit status; see below */
                     54:        u_int32_t       et_bufaddr;     /* buffer address */
                     55:        u_int32_t       et_control;     /* control word; see below */
                     56:        u_int32_t       et_nextdesc;    /* next descriptor pointer */
                     57: };
                     58:
                     59: /* et_txstatus */
                     60: #define        TXSTAT_TXLENGTH_SHIFT   16      /* TX length in higher 16bits */
                     61: #define        TXSTAT_TXLENGTH(x)      ((x) << TXSTAT_TXLENGTH_SHIFT)
                     62:
                     63: #define        ET_TXSTAT_OWNER         0x8000  /* NIC owns descriptor */
                     64: #define        ET_TXSTAT_COLLMASK      0x1f00  /* collisions */
                     65: #define        ET_TXSTAT_DEFERRING     0x0080  /* deferring due to jabber */
                     66: #define        ET_TXSTAT_OOWCOLL       0x0040  /* out of window collision */
                     67: #define        ET_TXSTAT_CDHB          0x0020  /* collision detect heartbeat */
                     68: #define        ET_TXSTAT_UNDERRUN      0x0010  /* DMA underrun */
                     69: #define        ET_TXSTAT_CARSENSELOST  0x0008  /* carrier lost */
                     70: #define        ET_TXSTAT_TXWITHCOLL    0x0004  /* encountered collisions during tx */
                     71: #define        ET_TXSTAT_NONDEFERRED   0x0002  /* transmitted without deferring */
                     72: #define        ET_TXSTAT_PACKETTX      0x0001  /* packet transmitted successfully */
                     73:
                     74: #define        TXSTAT_COLLISIONS(x)    (((x) & ET_TXSTAT_COLLMASK) >> 8)
                     75:
                     76: /* et_control */
                     77: #define        TXCTL_BUFLENGTH_MASK    0x0000ffff /* buf length in lower 16bits */
                     78: #define        TXCTL_BUFLENGTH(x)      ((x) & TXCTL_BUFLENGTH_MASK)
                     79:
                     80: #define        ET_TXCTL_LASTDESC       0x00100000 /* last descriptor in frame */
                     81: #define        ET_TXCTL_NOCRC          0x00080000 /* disable CRC generation */
                     82: #define        ET_TXCTL_IAF            0x00040000 /* interrupt after frame */
                     83: #define        ET_TXCTL_LFFORM         0x00020000 /* alternate fraglist format */
                     84: #define        ET_TXCTL_FRAGLIST       0x00010000 /* descriptor points to fraglist */
                     85:
                     86: /*
                     87:  * EPIC receive descriptor.  Must be 4-byte aligned.
                     88:  */
                     89: struct epic_rxdesc {
                     90:        u_int32_t       er_rxstatus;    /* receive status; see below */
                     91:        u_int32_t       er_bufaddr;     /* buffer address */
                     92:        u_int32_t       er_control;     /* control word; see below */
                     93:        u_int32_t       er_nextdesc;    /* next descriptor pointer */
                     94: };
                     95:
                     96: /* er_rxstatus */
                     97: #define        RXSTAT_RXLENGTH_SHIFT   16      /* TX length in higher 16bits */
                     98: #define        RXSTAT_RXLENGTH(x)      ((x) >> RXSTAT_RXLENGTH_SHIFT)
                     99:
                    100: #define        ER_RXSTAT_OWNER         0x8000  /* NIC owns descriptor */
                    101: #define        ER_RXSTAT_HDRCOPIED     0x4000  /* rx status posted after hdr copy */
                    102: #define        ER_RXSTAT_FRAGLISTERR   0x2000  /* ran out of frags to copy frame */
                    103: #define        ER_RXSTAT_NETSTATVALID  0x1000  /* length and status are valid */
                    104: #define        ER_RXSTAT_RCVRDIS       0x0040  /* receiver disabled */
                    105: #define        ER_RXSTAT_BCAST         0x0020  /* broadcast address recognized */
                    106: #define        ER_RXSTAT_MCAST         0x0010  /* multicast address recognized */
                    107: #define        ER_RXSTAT_MISSEDPKT     0x0008  /* missed packet */
                    108: #define        ER_RXSTAT_CRCERROR      0x0004  /* EPIC or MII asserted CRC error */
                    109: #define        ER_RXSTAT_ALIGNERROR    0x0002  /* frame not byte-aligned */
                    110: #define        ER_RXSTAT_PKTINTACT     0x0001  /* packet received without error */
                    111:
                    112: /* er_control */
                    113: #define        RXCTL_BUFLENGTH_MASK    0x0000ffff /* buf length in lower 16bits */
                    114: #define        RXCTL_BUFLENGTH(x)      ((x) & RXCTL_BUFLENGTH_MASK)
                    115:
                    116: #define        ER_RXCTL_HEADER         0x00040000 /* descriptor is for hdr copy */
                    117: #define        ER_RXCTL_LFFORM         0x00020000 /* alternate fraglist format */
                    118: #define        ER_RXCTL_FRAGLIST       0x00010000 /* descriptor points to fraglist */
                    119:
                    120: /*
                    121:  * This is not really part of the register description, but we need
                    122:  * to define the number of transmit fragments *somewhere*.
                    123:  */
                    124: #define        EPIC_NFRAGS             16      /* maximum number of frags in list */
                    125:
                    126: /*
                    127:  * EPIC fraglist descriptor.
                    128:  */
                    129: struct epic_fraglist {
                    130:        u_int32_t       ef_nfrags;      /* number of frags in list */
                    131:        struct {
                    132:                u_int32_t ef_addr;      /* address of frag */
                    133:                u_int32_t ef_length;    /* length of frag */
                    134:        } ef_frags[EPIC_NFRAGS];
                    135: };
                    136:
                    137: /*
                    138:  * EPIC control registers.
                    139:  */
                    140:
                    141: #define        EPIC_COMMAND            0x00 /* COMMAND */
                    142: #define        COMMAND_TXUGO           0x00000080      /* start tx after underrun */
                    143: #define        COMMAND_STOP_RDMA       0x00000040      /* stop rx dma */
                    144: #define        COMMAND_STOP_TDMA       0x00000020      /* stop tx dma */
                    145: #define        COMMAND_NEXTFRAME       0x00000010      /* move onto next rx frame */
                    146: #define        COMMAND_RXQUEUED        0x00000008      /* queue a rx descriptor */
                    147: #define        COMMAND_TXQUEUED        0x00000004      /* queue a tx descriptor */
                    148: #define        COMMAND_START_RX        0x00000002      /* start receiver */
                    149: #define        COMMAND_STOP_RX         0x00000001      /* stop receiver */
                    150:
                    151: #define        EPIC_INTSTAT            0x04 /* INTERRUPT STATUS */
                    152: #define        INTSTAT_PTA             0x08000000      /* PCI target abort */
                    153: #define        INTSTAT_PMA             0x04000000      /* PCI master abort */
                    154: #define        INTSTAT_APE             0x02000000      /* PCI address parity error */
                    155: #define        INTSTAT_DPE             0x01000000      /* PCI data parity error */
                    156: #define        INTSTAT_RSV             0x00800000      /* rx status valid */
                    157: #define        INTSTAT_RCTS            0x00400000      /* rx copy threshold status */
                    158: #define        INTSTAT_RBE             0x00200000      /* rx buffers empty */
                    159: #define        INTSTAT_TCIP            0x00100000      /* tx copy in progress */
                    160: #define        INTSTAT_RCIP            0x00080000      /* rx copy in progress */
                    161: #define        INTSTAT_TXIDLE          0x00040000      /* transmit idle */
                    162: #define        INTSTAT_RXIDLE          0x00020000      /* receive idle */
                    163: #define        INTSTAT_INT_ACTV        0x00010000      /* interrupt active */
                    164: #define        INTSTAT_GP2_INT         0x00008000      /* gpio2 low (PHY event) */
                    165: #define        INTSTAT_FATAL_INT       0x00001000      /* fatal error occurred */
                    166: #define        INTSTAT_RCT             0x00000800      /* rx copy threshold crossed */
                    167: #define        INTSTAT_PREI            0x00000400      /* preemptive interrupt */
                    168: #define        INTSTAT_CNT             0x00000200      /* counter overflow */
                    169: #define        INTSTAT_TXU             0x00000100      /* transmit underrun */
                    170: #define        INTSTAT_TQE             0x00000080      /* transmit queue empty */
                    171: #define        INTSTAT_TCC             0x00000040      /* transmit chain complete */
                    172: #define        INTSTAT_TXC             0x00000020      /* transmit complete */
                    173: #define        INTSTAT_RXE             0x00000010      /* receive error */
                    174: #define        INTSTAT_OVW             0x00000008      /* rx buffer overflow */
                    175: #define        INTSTAT_RQE             0x00000004      /* receive queue empty */
                    176: #define        INTSTAT_HCC             0x00000002      /* header copy complete */
                    177: #define        INTSTAT_RCC             0x00000001      /* receive copy complete */
                    178:
                    179: #define        EPIC_INTMASK            0x08 /* INTERRUPT MASK */
                    180:        /* Bits 0-15 enable the corresponding interrupt in INTSTAT. */
                    181:
                    182: #define        EPIC_GENCTL             0x0c /* GENERAL CONTROL */
                    183: #define        GENCTL_RESET_PHY        0x00004000      /* reset PHY */
                    184: #define        GENCTL_SOFT1            0x00002000      /* software use */
                    185: #define        GENCTL_SOFT0            0x00001000      /* software use */
                    186: #define        GENCTL_MEM_READ_CTL1    0x00000800      /* PCI memory control */
                    187: #define        GENCTL_MEM_READ_CTL0    0x00000400      /* (see below) */
                    188: #define        GENCTL_RX_FIFO_THRESH1  0x00000200      /* rx fifo thresh */
                    189: #define        GENCTL_RX_FIFO_THRESH0  0x00000100      /* (see below) */
                    190: #define        GENCTL_BIG_ENDIAN       0x00000020      /* big endian mode */
                    191: #define        GENCTL_ONECOPY          0x00000010      /* auto-NEXTFRAME */
                    192: #define        GENCTL_POWERDOWN        0x00000008      /* powersave sleep mode */
                    193: #define        GENCTL_SOFTINT          0x00000004      /* software-generated intr */
                    194: #define        GENCTL_INTENA           0x00000002      /* interrupt enable */
                    195: #define        GENCTL_SOFTRESET        0x00000001      /* initialize EPIC */
                    196:
                    197: /*
                    198:  * Explanation of MEMORY READ CONTROL:
                    199:  *
                    200:  * These bits control which PCI command the transmit DMA will use when
                    201:  * bursting data over the PCI bus.  When CTL1 is set, the transmit DMA
                    202:  * will use the PCI "memory read line" command.  When CTL0 is set, the
                    203:  * transmit DMA will use the PCI "memory read multiple" command.  When
                    204:  * neither bit is set, the transmit DMA will use the "memory read" command.
                    205:  * Use of "memory read line" or "memory read multiple" may enhance
                    206:  * performance on some systems.
                    207:  */
                    208:
                    209: /*
                    210:  * Explanation of RECEIVE FIFO THRESHOLD:
                    211:  *
                    212:  * Controls the level at which the PCI burst state machine begins to
                    213:  * empty the receive FIFO.  Default is "1/2 full" (0,1).
                    214:  *
                    215:  *     0,0     1/4 full        32 bytes
                    216:  *     0,1     1/2 full        64 bytes
                    217:  *     1,0     3/4 full        96 bytes
                    218:  *     1,1     full            128 bytes
                    219:  */
                    220:
                    221: #define        EPIC_NVCTL              0x10 /* NON-VOLATILE CONTROL */
                    222: #define        NVCTL_IPG_DLY_MASK      0x00000780      /* interpacket delay gap */
                    223: #define        NVCTL_CB_MODE           0x00000040      /* CardBus mode */
                    224: #define        NVCTL_GPIO2             0x00000020      /* general purpose i/o */
                    225: #define        NVCTL_GPIO1             0x00000010      /* ... */
                    226: #define        NVCTL_GPOE2             0x00000008      /* general purpose output ena */
                    227: #define        NVCTL_GPOE1             0x00000004      /* ... */
                    228: #define        NVCTL_CLKRUNSUPP        0x00000002      /* clock run supported */
                    229: #define        NVCTL_ENAMEMMAP         0x00000001      /* enable memory map */
                    230:
                    231: #define        NVCTL_IPG_DLY(x)        (((x) & NVCTL_IPG_DLY_MASK) >> 7)
                    232:
                    233: #define        EPIC_EECTL              0x14 /* EEPROM CONTROL */
                    234: #define        EECTL_EEPROMSIZE        0x00000040      /* eeprom size; see below */
                    235: #define        EECTL_EERDY             0x00000020      /* eeprom ready */
                    236: #define        EECTL_EEDO              0x00000010      /* eeprom data out (from) */
                    237: #define        EECTL_EEDI              0x00000008      /* eeprom data in (to) */
                    238: #define        EECTL_EESK              0x00000004      /* eeprom clock */
                    239: #define        EECTL_EECS              0x00000002      /* eeprom chip select */
                    240: #define        EECTL_ENABLE            0x00000001      /* eeprom enable */
                    241:
                    242: /*
                    243:  * Explanation of EEPROM SIZE:
                    244:  *
                    245:  * Indicates the size of the serial EEPROM:
                    246:  *
                    247:  *     1       16x16 or 64x16
                    248:  *     0       128x16 or 256x16
                    249:  */
                    250:
                    251: /*
                    252:  * Serial EEPROM opcodes, including start bit:
                    253:  */
                    254: #define        EPIC_EEPROM_OPC_WRITE   0x05
                    255: #define        EPIC_EEPROM_OPC_READ    0x06
                    256:
                    257: #define        EPIC_PBLCNT             0x18 /* PBLCNT */
                    258: #define        PBLCNT_MASK             0x0000003f      /* programmable burst length */
                    259:
                    260: #define        EPIC_TEST               0x1c /* TEST */
                    261: #define        TEST_CLOCKTEST          0x00000008
                    262:
                    263: #define        EPIC_CRCCNT             0x20 /* CRC ERROR COUNTER */
                    264: #define        CRCCNT_MASK             0x0000000f      /* crc errs since last read */
                    265:
                    266: #define        EPIC_ALICNT             0x24 /* FRAME ALIGNMENT ERROR COUNTER */
                    267: #define        ALICNT_MASK             0x0000000f      /* align errs since last read */
                    268:
                    269: #define        EPIC_MPCNT              0x28 /* MISSED PACKET COUNTER */
                    270: #define        MPCNT_MASK              0x0000000f      /* miss. pkts since last read */
                    271:
                    272: #define        EPIC_RXFIFO             0x2c
                    273:
                    274: #define        EPIC_MMCTL              0x30 /* MII MANAGEMENT INTERFACE CONTROL */
                    275: #define        MMCTL_PHY_ADDR_MASK     0x00003e00      /* phy address field */
                    276: #define        MMCTL_PHY_REG_ADDR_MASK 0x000001f0      /* phy register address field */
                    277: #define        MMCTL_RESPONDER         0x00000008      /* phy responder */
                    278: #define        MMCTL_WRITE             0x00000002      /* write to phy */
                    279: #define        MMCTL_READ              0x00000001      /* read from phy */
                    280:
                    281: #define        MMCTL_ARG(phy, reg, cmd)        (((phy) << 9) | ((reg) << 4) | (cmd))
                    282:
                    283: #define        EPIC_MMDATA             0x34 /* MII MANAGEMENT INTERFACE DATA */
                    284: #define        MMDATA_MASK             0x0000ffff      /* MII frame data */
                    285:
                    286: #define        EPIC_MIICFG             0x38 /* MII CONFIGURATION */
                    287: #define        MIICFG_ALTDIR           0x00000080      /* alternate direction */
                    288: #define        MIICFG_ALTDATA          0x00000040      /* alternate data */
                    289: #define        MIICFG_ALTCLOCK         0x00000020      /* alternate clock source */
                    290: #define        MIICFG_ENASER           0x00000010      /* enable serial manag intf */
                    291: #define        MIICFG_PHYPRESENT       0x00000008      /* phy present on MII */
                    292: #define        MIICFG_LINKSTATUS       0x00000004      /* 694 link status */
                    293: #define        MIICFG_ENABLE           0x00000002      /* enable 694 */
                    294: #define        MIICFG_SERMODEENA       0x00000001      /* serial mode enable */
                    295:
                    296: #define        EPIC_IPG                0x3c /* INTERPACKET GAP */
                    297: #define        IPG_INTERFRAME_MASK     0x00007f00      /* interframe gap time */
                    298: #define        IPG_INTERPKT_MASK       0x000000ff      /* interpacket gap time */
                    299:
                    300: #define        EPIC_LAN0               0x40 /* LAN ADDRESS */
                    301:
                    302: #define        EPIC_LAN1               0x44
                    303:
                    304: #define        EPIC_LAN2               0x48
                    305:
                    306: #define        LANn_MASK               0x0000ffff
                    307:
                    308: /*
                    309:  * Explanation of LAN ADDRESS registers:
                    310:  *
                    311:  * LAN address is described as:
                    312:  *
                    313:  *     0000 [n1][n0][n3][n2] | 0000 [n5][n4][n7][n6] | 0000 [n9][n8][n11][n10]
                    314:  *
                    315:  * n == one nibble, mapped as follows:
                    316:  *
                    317:  *     LAN0    [15-12]         n3
                    318:  *     LAN0    [11-8]          n2
                    319:  *     LAN0    [7-4]           n1
                    320:  *     LAN0    [3-0]           n0
                    321:  *     LAN1    [15-12]         n7
                    322:  *     LAN1    [11-8]          n6
                    323:  *     LAN1    [7-4]           n5
                    324:  *     LAN1    [3-0]           n4
                    325:  *     LAN2    [15-12]         n11
                    326:  *     LAN2    [11-8]          n10
                    327:  *     LAN2    [7-4]           n9
                    328:  *     LAN2    [3-0]           n8
                    329:  *
                    330:  * The LAN address is automatically recalled from the EEPROM after a
                    331:  * hard reseet.
                    332:  */
                    333:
                    334: #define        EPIC_IDCHK              0x4c /* BOARD ID/CHECKSUM */
                    335: #define        IDCHK_ID_MASK           0x0000ff00      /* board ID */
                    336: #define        IDCHK_CKSUM_MASK        0x000000ff      /* checksum (should be 0xff) */
                    337:
                    338: #define        EPIC_MC0                0x50 /* MULTICAST ADDRESS HASH TABLE */
                    339:
                    340: #define        EPIC_MC1                0x54
                    341:
                    342: #define        EPIC_MC2                0x58
                    343:
                    344: #define        EPIC_MC3                0x5c
                    345:
                    346: /*
                    347:  * Explanation of MULTICAST ADDRESS HASH TABLE registers:
                    348:  *
                    349:  * Bits in the hash table are encoded as follows:
                    350:  *
                    351:  *     MC0     [15-0]
                    352:  *     MC1     [31-16]
                    353:  *     MC2     [47-32]
                    354:  *     MC3     [53-48]
                    355:  */
                    356:
                    357: #define        EPIC_RXCON              0x60 /* RECEIVE CONTROL */
                    358: #define        RXCON_EXTBUFSIZESEL1    0x00000200      /* ext buf size; see below */
                    359: #define        RXCON_EXTBUFSIZESEL0    0x00000100      /* ... */
                    360: #define        RXCON_EARLYRXENABLE     0x00000080      /* early receive enable */
                    361: #define        RXCON_MONITORMODE       0x00000040      /* monitor mode */
                    362: #define        RXCON_PROMISCMODE       0x00000020      /* promiscuous mode */
                    363: #define        RXCON_RXINVADDR         0x00000010      /* rx inv individual addr */
                    364: #define        RXCON_RXMULTICAST       0x00000008      /* receive multicast */
                    365: #define        RXCON_RXBROADCAST       0x00000004      /* receive broadcast */
                    366: #define        RXCON_RXRUNT            0x00000002      /* receive runt frames */
                    367: #define        RXCON_SAVEERRPKTS       0x00000001      /* save errored packets */
                    368:
                    369: /*
                    370:  * Explanation of EXTERNAL BUFFER SIZE SELECT:
                    371:  *
                    372:  *     0,0     external buffer access is disabled
                    373:  *     0,1     16k
                    374:  *     1,0     32k
                    375:  *     1,1     128k
                    376:  */
                    377:
                    378: #define        EPIC_RXSTAT             0x64 /* RECEIVE STATUS */
                    379:
                    380: #define        EPIC_RXCNT              0x68
                    381:
                    382: #define        EPIC_RXTEST             0x6c
                    383:
                    384: #define        EPIC_TXCON              0x70 /* TRANSMIT CONTROL */
                    385: #define        TXCON_SLOTTIME_MASK     0x000000f8      /* slot time */
                    386: #define        TXCON_LOOPBACK_D2       0x00000004      /* loopback mode bit 2 */
                    387: #define        TXCON_LOOPBACK_D1       0x00000002      /* loopback mode bit 1 */
                    388: #define        TXCON_EARLYTX_ENABLE    0x00000001      /* early transmit enable */
                    389:
                    390: /*
                    391:  * Explanation of LOOPBACK MODE BIT:
                    392:  *
                    393:  *     0,0     normal operation
                    394:  *     0,1     internal loopback (before PHY)
                    395:  *     1,0     external loopback (after PHY)
                    396:  *     1,1     full duplex - decouples transmit and receive blocks
                    397:  */
                    398:
                    399: #define        EPIC_TXSTAT             0x74 /* TRANSMIT STATUS */
                    400:
                    401: #define        EPIC_TDPAR              0x78
                    402:
                    403: #define        EPIC_TXTEST             0x7c
                    404:
                    405: #define        EPIC_PRFDAR             0x80
                    406:
                    407: #define        EPIC_PRCDAR             0x84 /* PCI RECEIVE CURRENT DESCRIPTOR ADDR */
                    408:
                    409: #define        EPIC_PRHDAR             0x88
                    410:
                    411: #define        EPIC_PRFLAR             0x8c
                    412:
                    413: #define        EPIC_PRDLGTH            0x90
                    414:
                    415: #define        EPIC_PRFCNT             0x94
                    416:
                    417: #define        EPIC_PRLCAR             0x98
                    418:
                    419: #define        EPIC_PRLPAR             0x9c
                    420:
                    421: #define        EPIC_PREFAR             0xa0
                    422:
                    423: #define        EPIC_PRSTAT             0xa4 /* PCI RECEIVE DMA STATUS */
                    424:
                    425: #define        EPIC_PRBUF              0xa8
                    426:
                    427: #define        EPIC_RDNCAR             0xac
                    428:
                    429: #define        EPIC_PRCPTHR            0xb0 /* PCI RECEIVE COPY THRESHOLD */
                    430:
                    431: #define        EPIC_ROMDATA            0xb4
                    432:
                    433: #define        EPIC_PREEMPR            0xbc
                    434:
                    435: #define        EPIC_PTFDAR             0xc0
                    436:
                    437: #define        EPIC_PTCDAR             0xc4 /* PCI TRANSMIT CURRENT DESCRIPTOR ADDR */
                    438:
                    439: #define        EPIC_PTHDAR             0xc8
                    440:
                    441: #define        EPIC_PTFLAR             0xcc
                    442:
                    443: #define        EPIC_PTDLGTH            0xd0
                    444:
                    445: #define        EPIC_PTFCNT             0xd4
                    446:
                    447: #define        EPIC_PTLCAR             0xd8
                    448:
                    449: #define        EPIC_ETXTHR             0xdc /* EARLY TRANSMIT THRESHOLD */
                    450:
                    451: #define        EPIC_PTETXC             0xe0
                    452:
                    453: #define        EPIC_PTSTAT             0xe4
                    454:
                    455: #define        EPIC_PTBUF              0xe8
                    456:
                    457: #define        EPIC_PTFDAR2            0xec
                    458:
                    459: #define        EPIC_FEVTR              0xf0 /* FEVTR (CardBus) */
                    460:
                    461: #define        EPIC_FEVTRMSKR          0xf4 /* FEVTRMSKR (CardBus) */
                    462:
                    463: #define        EPIC_FPRSTSTR           0xf8 /* FPRSTR (CardBus) */
                    464:
                    465: #define        EPIC_FFRCEVTR           0xfc /* PPRCEVTR (CardBus) */
                    466:
                    467: /*
                    468:  * EEPROM format:
                    469:  *
                    470:  *     Word    Bits    Description
                    471:  *     ----    ----    -----------
                    472:  *     0       7-0     LAN Address Byte 0
                    473:  *     0       15-8    LAN Address Byte 1
                    474:  *     1       7-0     LAN Address Byte 2
                    475:  *     1       15-8    LAN Address Byte 3
                    476:  *     2       7-0     LAN Address Byte 4
                    477:  *     2       15-8    LAN Address Byte 5
                    478:  *     3       7-0     Board ID
                    479:  *     3       15-8    Checksum
                    480:  *     4       5-0     Non-Volatile Control Register Contents
                    481:  *     5       7-0     PCI Minimum Grant Desired Setting
                    482:  *     5       15-8    PCI Maximum Latency Desired Setting
                    483:  *     6       15-0    Subsystem Vendor ID
                    484:  *     7       14-0    Subsystem ID
                    485:  */
                    486:
                    487: #endif /* _DEV_IC_SMC83C170REG_H_ */

CVSweb