[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     ! 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