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

Annotation of sys/dev/pci/if_sisreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: if_sisreg.h,v 1.27 2007/05/28 17:51:26 ckuethe Exp $ */
        !             2: /*
        !             3:  * Copyright (c) 1997, 1998, 1999
        !             4:  *     Bill Paul <wpaul@ee.columbia.edu>.  All rights reserved.
        !             5:  *
        !             6:  * Redistribution and use in source and binary forms, with or without
        !             7:  * modification, are permitted provided that the following conditions
        !             8:  * are met:
        !             9:  * 1. Redistributions of source code must retain the above copyright
        !            10:  *    notice, this list of conditions and the following disclaimer.
        !            11:  * 2. Redistributions in binary form must reproduce the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer in the
        !            13:  *    documentation and/or other materials provided with the distribution.
        !            14:  * 3. All advertising materials mentioning features or use of this software
        !            15:  *    must display the following acknowledgement:
        !            16:  *     This product includes software developed by Bill Paul.
        !            17:  * 4. Neither the name of the author nor the names of any co-contributors
        !            18:  *    may be used to endorse or promote products derived from this software
        !            19:  *    without specific prior written permission.
        !            20:  *
        !            21:  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
        !            22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            24:  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
        !            25:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            26:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            27:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            28:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            29:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            30:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
        !            31:  * THE POSSIBILITY OF SUCH DAMAGE.
        !            32:  *
        !            33:  * $FreeBSD: src/sys/pci/if_sisreg.h,v 1.3 2000/08/22 23:26:51 wpaul Exp $
        !            34:  */
        !            35:
        !            36: /*
        !            37:  * Register definitions for the SiS 900 and SiS 7016 chipsets. The
        !            38:  * 7016 is actually an older chip and some of its registers differ
        !            39:  * from the 900, however the core operational registers are the same:
        !            40:  * the differences lie in the OnNow/Wake on LAN stuff which we don't
        !            41:  * use anyway. The 7016 needs an external MII compliant PHY while the
        !            42:  * SiS 900 has one built in. All registers are 32-bits wide.
        !            43:  */
        !            44:
        !            45: /* Registers common to SiS 900 and SiS 7016 */
        !            46: #define SIS_CSR                        0x00
        !            47: #define SIS_CFG                        0x04
        !            48: #define SIS_EECTL              0x08
        !            49: #define SIS_PCICTL             0x0C
        !            50: #define SIS_ISR                        0x10
        !            51: #define SIS_IMR                        0x14
        !            52: #define SIS_IER                        0x18
        !            53: #define SIS_PHYCTL             0x1C
        !            54: #define SIS_TX_LISTPTR         0x20
        !            55: #define SIS_TX_CFG             0x24
        !            56: #define SIS_RX_LISTPTR         0x30
        !            57: #define SIS_RX_CFG             0x34
        !            58: #define SIS_FLOWCTL            0x38
        !            59: #define SIS_RXFILT_CTL         0x48
        !            60: #define SIS_RXFILT_DATA                0x4C
        !            61: #define SIS_PWRMAN_CTL         0xB0
        !            62: #define SIS_PWERMAN_WKUP_EVENT 0xB4
        !            63: #define SIS_WKUP_FRAME_CRC     0xBC
        !            64: #define SIS_WKUP_FRAME_MASK0   0xC0
        !            65: #define SIS_WKUP_FRAME_MASKXX  0xEC
        !            66:
        !            67: /* SiS 7016 specific registers */
        !            68: #define SIS_SILICON_REV                0x5C
        !            69: #define SIS_MIB_CTL0           0x60
        !            70: #define SIS_MIB_CTL1           0x64
        !            71: #define SIS_MIB_CTL2           0x68
        !            72: #define SIS_MIB_CTL3           0x6C
        !            73: #define SIS_MIB                        0x80
        !            74: #define SIS_LINKSTS            0xA0
        !            75: #define SIS_TIMEUNIT           0xA4
        !            76: #define SIS_GPIO               0xB8
        !            77:
        !            78: /* NS DP83815/6 registers */
        !            79: #define NS_IHR                 0x1C
        !            80: #define NS_CLKRUN              0x3C
        !            81: #define NS_SRR                 0x58
        !            82: #define NS_BMCR                        0x80
        !            83: #define NS_BMSR                        0x84
        !            84: #define NS_PHYIDR1             0x88
        !            85: #define NS_PHYIDR2             0x8C
        !            86: #define NS_ANAR                        0x90
        !            87: #define NS_ANLPAR              0x94
        !            88: #define NS_ANER                        0x98
        !            89: #define NS_ANNPTR              0x9C
        !            90:
        !            91: #define NS_PHY_CR              0xE4
        !            92: #define NS_PHY_10BTSCR         0xE8
        !            93: #define NS_PHY_PAGE            0xCC
        !            94: #define NS_PHY_EXTCFG          0xF0
        !            95: #define NS_PHY_DSPCFG          0xF4
        !            96: #define NS_PHY_SDCFG           0xF8
        !            97: #define NS_PHY_TDATA           0xFC
        !            98:
        !            99: #define NS_CLKRUN_PMESTS       0x00008000
        !           100: #define NS_CLKRUN_PMEENB       0x00000100
        !           101: #define NS_CLNRUN_CLKRUN_ENB   0x00000001
        !           102:
        !           103: /* NS silicon revisions */
        !           104: #define NS_SRR_15C             0x302
        !           105: #define NS_SRR_15D             0x403
        !           106: #define NS_SRR_16A             0x505
        !           107:
        !           108: #define SIS_CSR_TX_ENABLE      0x00000001
        !           109: #define SIS_CSR_TX_DISABLE     0x00000002
        !           110: #define SIS_CSR_RX_ENABLE      0x00000004
        !           111: #define SIS_CSR_RX_DISABLE     0x00000008
        !           112: #define SIS_CSR_TX_RESET       0x00000010
        !           113: #define SIS_CSR_RX_RESET       0x00000020
        !           114: #define SIS_CSR_SOFTINTR       0x00000080
        !           115: #define SIS_CSR_RESET          0x00000100
        !           116: #define SIS_CSR_RELOAD         0x00000400
        !           117:
        !           118: #define SIS_CFG_BIGENDIAN      0x00000001
        !           119: #define SIS_CFG_PERR_DETECT    0x00000008
        !           120: #define SIS_CFG_DEFER_DISABLE  0x00000010
        !           121: #define SIS_CFG_OUTOFWIN_TIMER 0x00000020
        !           122: #define SIS_CFG_SINGLE_BACKOFF 0x00000040
        !           123: #define SIS_CFG_PCIREQ_ALG     0x00000080
        !           124: #define SIS_CFG_FAIR_BACKOFF   0x00000200 /* 635 & 900B Specific */
        !           125: #define SIS_CFG_RND_CNT                0x00000400 /* 635 & 900B Specific */
        !           126: #define SIS_CFG_EDB_MASTER_EN  0x00002000
        !           127:
        !           128: #define SIS_EECTL_DIN          0x00000001
        !           129: #define SIS_EECTL_DOUT         0x00000002
        !           130: #define SIS_EECTL_CLK          0x00000004
        !           131: #define SIS_EECTL_CSEL         0x00000008
        !           132:
        !           133: #define SIS96x_EECTL_GNT       0x00000100
        !           134: #define SIS96x_EECTL_DONE      0x00000200
        !           135: #define SIS96x_EECTL_REQ       0x00000400
        !           136:
        !           137: #define        SIS_MII_CLK             0x00000040
        !           138: #define        SIS_MII_DIR             0x00000020
        !           139: #define        SIS_MII_DATA            0x00000010
        !           140:
        !           141: #define SIS_EECMD_WRITE                0x140
        !           142: #define SIS_EECMD_READ         0x180
        !           143: #define SIS_EECMD_ERASE                0x1c0
        !           144:
        !           145: #define SIS_EE_NODEADDR                0x8
        !           146: #define NS_EE_NODEADDR         0x6
        !           147:
        !           148: #define SIS_PCICTL_SRAMADDR    0x0000001F
        !           149: #define SIS_PCICTL_RAMTSTENB   0x00000020
        !           150: #define SIS_PCICTL_TXTSTENB    0x00000040
        !           151: #define SIS_PCICTL_RXTSTENB    0x00000080
        !           152: #define SIS_PCICTL_BMTSTENB    0x00000200
        !           153: #define SIS_PCICTL_RAMADDR     0x001F0000
        !           154: #define SIS_PCICTL_ROMTIME     0x0F000000
        !           155: #define SIS_PCICTL_DISCTEST    0x40000000
        !           156:
        !           157: #define SIS_ISR_RX_OK          0x00000001
        !           158: #define SIS_ISR_RX_DESC_OK     0x00000002
        !           159: #define SIS_ISR_RX_ERR         0x00000004
        !           160: #define SIS_ISR_RX_EARLY       0x00000008
        !           161: #define SIS_ISR_RX_IDLE                0x00000010
        !           162: #define SIS_ISR_RX_OFLOW       0x00000020
        !           163: #define SIS_ISR_TX_OK          0x00000040
        !           164: #define SIS_ISR_TX_DESC_OK     0x00000080
        !           165: #define SIS_ISR_TX_ERR         0x00000100
        !           166: #define SIS_ISR_TX_IDLE                0x00000200
        !           167: #define SIS_ISR_TX_UFLOW       0x00000400
        !           168: #define SIS_ISR_SOFTINTR       0x00000800
        !           169: #define SIS_ISR_HIBITS         0x00008000
        !           170: #define SIS_ISR_RX_FIFO_OFLOW  0x00010000
        !           171: #define SIS_ISR_TGT_ABRT       0x00100000
        !           172: #define SIS_ISR_BM_ABRT                0x00200000
        !           173: #define SIS_ISR_SYSERR         0x00400000
        !           174: #define SIS_ISR_PARITY_ERR     0x00800000
        !           175: #define SIS_ISR_RX_RESET_DONE  0x01000000
        !           176: #define SIS_ISR_TX_RESET_DONE  0x02000000
        !           177: #define SIS_ISR_TX_PAUSE_START 0x04000000
        !           178: #define SIS_ISR_TX_PAUSE_DONE  0x08000000
        !           179: #define SIS_ISR_WAKE_EVENT     0x10000000
        !           180:
        !           181: #define SIS_IMR_RX_OK          0x00000001
        !           182: #define SIS_IMR_RX_DESC_OK     0x00000002
        !           183: #define SIS_IMR_RX_ERR         0x00000004
        !           184: #define SIS_IMR_RX_EARLY       0x00000008
        !           185: #define SIS_IMR_RX_IDLE                0x00000010
        !           186: #define SIS_IMR_RX_OFLOW       0x00000020
        !           187: #define SIS_IMR_TX_OK          0x00000040
        !           188: #define SIS_IMR_TX_DESC_OK     0x00000080
        !           189: #define SIS_IMR_TX_ERR         0x00000100
        !           190: #define SIS_IMR_TX_IDLE                0x00000200
        !           191: #define SIS_IMR_TX_UFLOW       0x00000400
        !           192: #define SIS_IMR_SOFTINTR       0x00000800
        !           193: #define SIS_IMR_HIBITS         0x00008000
        !           194: #define SIS_IMR_RX_FIFO_OFLOW  0x00010000
        !           195: #define SIS_IMR_TGT_ABRT       0x00100000
        !           196: #define SIS_IMR_BM_ABRT                0x00200000
        !           197: #define SIS_IMR_SYSERR         0x00400000
        !           198: #define SIS_IMR_PARITY_ERR     0x00800000
        !           199: #define SIS_IMR_RX_RESET_DONE  0x01000000
        !           200: #define SIS_IMR_TX_RESET_DONE  0x02000000
        !           201: #define SIS_IMR_TX_PAUSE_START 0x04000000
        !           202: #define SIS_IMR_TX_PAUSE_DONE  0x08000000
        !           203: #define SIS_IMR_WAKE_EVENT     0x10000000
        !           204:
        !           205: #define SIS_INTRS      \
        !           206:        (SIS_IMR_RX_OFLOW|SIS_IMR_TX_UFLOW|SIS_IMR_TX_OK|\
        !           207:         SIS_IMR_TX_IDLE|SIS_IMR_RX_OK|SIS_IMR_RX_ERR|\
        !           208:         SIS_IMR_RX_IDLE|\
        !           209:         SIS_IMR_SYSERR)
        !           210:
        !           211: /* Interrupt Holdoff Register */
        !           212: #define NS_IHR_HOLDCTL 0x00000100
        !           213:
        !           214: /*
        !           215:  * Interrupt holdoff value for NS DP8316. We can have the chip
        !           216:  * delay interrupt delivery for a certain period. Units are in
        !           217:  * 100us - this sets the delay to 1ms holdoff.
        !           218:  */
        !           219: #define NS_IHR_DELAY 10
        !           220:
        !           221: #define NS_IHR_VALUE (NS_IHR_HOLDCTL|NS_IHR_DELAY)
        !           222:
        !           223: #define SIS_IER_INTRENB                0x00000001
        !           224:
        !           225: #define SIS_PHYCTL_ACCESS      0x00000010
        !           226: #define SIS_PHYCTL_OP          0x00000020
        !           227: #define SIS_PHYCTL_REGADDR     0x000007C0
        !           228: #define SIS_PHYCTL_PHYADDR     0x0000F800
        !           229: #define SIS_PHYCTL_PHYDATA     0xFFFF0000
        !           230:
        !           231: #define SIS_PHYOP_READ         0x00000020
        !           232: #define SIS_PHYOP_WRITE                0x00000000
        !           233:
        !           234: #define SIS_TXCFG_DRAIN_THRESH 0x0000003F /* 32-byte units */
        !           235: #define SIS_TXCFG_FILL_THRESH  0x00003F00 /* 32-byte units */
        !           236: #define SIS_TXCFG_MPII03D      0x00040000 /* "Must be 1" */
        !           237: #define SIS_TXCFG_DMABURST     0x00700000
        !           238: #define SIS_TXCFG_AUTOPAD      0x10000000
        !           239: #define SIS_TXCFG_LOOPBK       0x20000000
        !           240: #define SIS_TXCFG_IGN_HBEAT    0x40000000
        !           241: #define SIS_TXCFG_IGN_CARR     0x80000000
        !           242:
        !           243: #define SIS_TXCFG_DRAIN(x)     (((x) >> 5) & SIS_TXCFG_DRAIN_THRESH)
        !           244: #define SIS_TXCFG_FILL(x)      ((((x) >> 5) << 8) & SIS_TXCFG_FILL_THRESH)
        !           245:
        !           246: #define SIS_TXDMA_512BYTES     0x00000000
        !           247: #define SIS_TXDMA_4BYTES       0x00100000
        !           248: #define SIS_TXDMA_8BYTES       0x00200000
        !           249: #define SIS_TXDMA_16BYTES      0x00300000
        !           250: #define SIS_TXDMA_32BYTES      0x00400000
        !           251: #define SIS_TXDMA_64BYTES      0x00500000
        !           252: #define SIS_TXDMA_128BYTES     0x00600000
        !           253: #define SIS_TXDMA_256BYTES     0x00700000
        !           254:
        !           255: #define SIS_TXCFG_100  \
        !           256:        (SIS_TXDMA_64BYTES|SIS_TXCFG_AUTOPAD|\
        !           257:         SIS_TXCFG_FILL(ETHER_MIN_LEN)|SIS_TXCFG_DRAIN(ETHER_MAX_DIX_LEN))
        !           258:
        !           259: #define SIS_TXCFG_10   \
        !           260:        (SIS_TXDMA_32BYTES|SIS_TXCFG_AUTOPAD|\
        !           261:         SIS_TXCFG_FILL(ETHER_MIN_LEN)|SIS_TXCFG_DRAIN(ETHER_MAX_DIX_LEN))
        !           262:
        !           263: #define SIS_RXCFG_DRAIN_THRESH 0x0000003E /* 8-byte units */
        !           264: #define SIS_RXCFG_DMABURST     0x00700000
        !           265: #define SIS_RXCFG_RX_JABBER    0x08000000
        !           266: #define SIS_RXCFG_RX_TXPKTS    0x10000000
        !           267: #define SIS_RXCFG_RX_RUNTS     0x40000000
        !           268: #define SIS_RXCFG_RX_GIANTS    0x80000000
        !           269:
        !           270: #define SIS_RXCFG_DRAIN(x)     ((((x) >> 3) << 1) & SIS_RXCFG_DRAIN_THRESH)
        !           271:
        !           272: #define SIS_RXDMA_512BYTES     0x00000000
        !           273: #define SIS_RXDMA_4BYTES       0x00100000
        !           274: #define SIS_RXDMA_8BYTES       0x00200000
        !           275: #define SIS_RXDMA_16BYTES      0x00300000
        !           276: #define SIS_RXDMA_32BYTES      0x00400000
        !           277: #define SIS_RXDMA_64BYTES      0x00500000
        !           278: #define SIS_RXDMA_128BYTES     0x00600000
        !           279: #define SIS_RXDMA_256BYTES     0x00700000
        !           280:
        !           281: #define SIS_RXCFG256 \
        !           282:        (SIS_RXCFG_DRAIN(64)|SIS_RXDMA_256BYTES)
        !           283: #define SIS_RXCFG64 \
        !           284:        (SIS_RXCFG_DRAIN(64)|SIS_RXDMA_64BYTES)
        !           285:
        !           286: #define SIS_RXFILTCTL_ADDR     0x000F0000
        !           287: #define NS_RXFILTCTL_MCHASH    0x00200000
        !           288: #define NS_RXFILTCTL_ARP       0x00400000
        !           289: #define NS_RXFILTCTL_PERFECT   0x08000000
        !           290: #define SIS_RXFILTCTL_ALLPHYS  0x10000000
        !           291: #define SIS_RXFILTCTL_ALLMULTI 0x20000000
        !           292: #define SIS_RXFILTCTL_BROAD    0x40000000
        !           293: #define SIS_RXFILTCTL_ENABLE   0x80000000
        !           294:
        !           295: #define SIS_FILTADDR_PAR0      0x00000000
        !           296: #define SIS_FILTADDR_PAR1      0x00010000
        !           297: #define SIS_FILTADDR_PAR2      0x00020000
        !           298: #define SIS_FILTADDR_MAR0      0x00040000
        !           299: #define SIS_FILTADDR_MAR1      0x00050000
        !           300: #define SIS_FILTADDR_MAR2      0x00060000
        !           301: #define SIS_FILTADDR_MAR3      0x00070000
        !           302: #define SIS_FILTADDR_MAR4      0x00080000
        !           303: #define SIS_FILTADDR_MAR5      0x00090000
        !           304: #define SIS_FILTADDR_MAR6      0x000A0000
        !           305: #define SIS_FILTADDR_MAR7      0x000B0000
        !           306:
        !           307: #define NS_FILTADDR_PAR0       0x00000000
        !           308: #define NS_FILTADDR_PAR1       0x00000002
        !           309: #define NS_FILTADDR_PAR2       0x00000004
        !           310:
        !           311: #define NS_FILTADDR_FMEM_LO    0x00000200
        !           312: #define NS_FILTADDR_FMEM_HI    0x000003FE
        !           313:
        !           314: /*
        !           315:  * DMA descriptor structures. The first part of the descriptor
        !           316:  * is the hardware descriptor format, which is just three longwords.
        !           317:  * After this, we include some additional structure members for
        !           318:  * use by the driver. Note that for this structure will be a different
        !           319:  * size on the alpha, but that's okay as long as it's a multiple of 4
        !           320:  * bytes in size.
        !           321:  */
        !           322: struct sis_desc {
        !           323:        /* SiS hardware descriptor section */
        !           324:        u_int32_t               sis_next;
        !           325:        u_int32_t               sis_cmdsts;
        !           326: #define sis_rxstat             sis_cmdsts
        !           327: #define sis_txstat             sis_cmdsts
        !           328: #define sis_ctl                        sis_cmdsts
        !           329:        u_int32_t               sis_ptr;
        !           330:        /* Driver software section */
        !           331:        struct mbuf             *sis_mbuf;
        !           332:        struct sis_desc         *sis_nextdesc;
        !           333:        bus_dmamap_t            map;
        !           334: };
        !           335:
        !           336: #define SIS_CMDSTS_BUFLEN      0x00000FFF
        !           337: #define SIS_CMDSTS_PKT_OK      0x08000000
        !           338: #define SIS_CMDSTS_CRC         0x10000000
        !           339: #define SIS_CMDSTS_INTR                0x20000000
        !           340: #define SIS_CMDSTS_MORE                0x40000000
        !           341: #define SIS_CMDSTS_OWN         0x80000000
        !           342:
        !           343: #define SIS_LASTDESC(x)                (!((x)->sis_ctl & SIS_CMDSTS_MORE)))
        !           344: #define SIS_OWNDESC(x)         ((x)->sis_ctl & SIS_CMDSTS_OWN)
        !           345: #define SIS_INC(x, y)          (x) = ((x) == ((y)-1)) ? 0 : (x)+1
        !           346: #define SIS_RXBYTES(x)         (((x)->sis_ctl & SIS_CMDSTS_BUFLEN) - ETHER_CRC_LEN)
        !           347:
        !           348: #define SIS_RXSTAT_COLL                0x00010000
        !           349: #define SIS_RXSTAT_LOOPBK      0x00020000
        !           350: #define SIS_RXSTAT_ALIGNERR    0x00040000
        !           351: #define SIS_RXSTAT_CRCERR      0x00080000
        !           352: #define SIS_RXSTAT_SYMBOLERR   0x00100000
        !           353: #define SIS_RXSTAT_RUNT                0x00200000
        !           354: #define SIS_RXSTAT_GIANT       0x00400000
        !           355: #define SIS_RXSTAT_DSTCLASS    0x01800000
        !           356: #define SIS_RXSTAT_OVERRUN     0x02000000
        !           357: #define SIS_RXSTAT_RX_ABORT    0x04000000
        !           358:
        !           359: #define SIS_DSTCLASS_REJECT    0x00000000
        !           360: #define SIS_DSTCLASS_UNICAST   0x00800000
        !           361: #define SIS_DSTCLASS_MULTICAST 0x01000000
        !           362: #define SIS_DSTCLASS_BROADCAST 0x02000000
        !           363:
        !           364: #define SIS_TXSTAT_COLLCNT     0x000F0000
        !           365: #define SIS_TXSTAT_EXCESSCOLLS 0x00100000
        !           366: #define SIS_TXSTAT_OUTOFWINCOLL        0x00200000
        !           367: #define SIS_TXSTAT_EXCESS_DEFER        0x00400000
        !           368: #define SIS_TXSTAT_DEFERED     0x00800000
        !           369: #define SIS_TXSTAT_CARR_LOST   0x01000000
        !           370: #define SIS_TXSTAT_UNDERRUN    0x02000000
        !           371: #define SIS_TXSTAT_TX_ABORT    0x04000000
        !           372:
        !           373: #define SIS_RX_LIST_CNT_MIN    4
        !           374: #define SIS_RX_LIST_CNT_MAX    64
        !           375: #define SIS_TX_LIST_CNT                128
        !           376:
        !           377: struct sis_list_data {
        !           378:        struct sis_desc         sis_rx_list[SIS_RX_LIST_CNT_MAX];
        !           379:        struct sis_desc         sis_tx_list[SIS_TX_LIST_CNT];
        !           380: };
        !           381:
        !           382: struct sis_ring_data {
        !           383:        struct sis_desc         *sis_rx_pdsc;
        !           384:        int                     sis_tx_prod;
        !           385:        int                     sis_tx_cons;
        !           386:        int                     sis_tx_cnt;
        !           387: };
        !           388:
        !           389:
        !           390: /*
        !           391:  * SiS PCI vendor ID.
        !           392:  */
        !           393: #define SIS_VENDORID           0x1039
        !           394:
        !           395: /*
        !           396:  * SiS PCI device IDs
        !           397:  */
        !           398: #define SIS_DEVICEID_900       0x0900
        !           399: #define SIS_DEVICEID_7016      0x7016
        !           400:
        !           401:
        !           402: /*
        !           403:  * SiS 900 PCI revision codes.
        !           404:  */
        !           405: #define SIS_REV_900B           0x0003
        !           406: #define SIS_REV_630A           0x0080
        !           407: #define SIS_REV_630E           0x0081
        !           408: #define SIS_REV_630S           0x0082
        !           409: #define SIS_REV_630EA1         0x0083
        !           410: #define SIS_REV_630ET          0x0084
        !           411: #define SIS_REV_635            0x0090
        !           412: #define SIS_REV_96x            0x0091
        !           413:
        !           414: struct sis_type {
        !           415:        u_int16_t               sis_vid;
        !           416:        u_int16_t               sis_did;
        !           417:        char                    *sis_name;
        !           418: };
        !           419:
        !           420: struct sis_mii_frame {
        !           421:        u_int8_t                mii_stdelim;
        !           422:        u_int8_t                mii_opcode;
        !           423:        u_int8_t                mii_phyaddr;
        !           424:        u_int8_t                mii_regaddr;
        !           425:        u_int8_t                mii_turnaround;
        !           426:        u_int16_t               mii_data;
        !           427: };
        !           428:
        !           429: /*
        !           430:  * MII constants
        !           431:  */
        !           432: #define        SIS_MII_STARTDELIM      0x01
        !           433: #define        SIS_MII_READOP          0x02
        !           434: #define        SIS_MII_WRITEOP         0x01
        !           435: #define        SIS_MII_TURNAROUND      0x02
        !           436:
        !           437: #define SIS_TYPE_900   1
        !           438: #define SIS_TYPE_7016  2
        !           439: #define SIS_TYPE_83815 3
        !           440:
        !           441: struct sis_softc {
        !           442:        struct device           sc_dev;         /* generic device structure */
        !           443:        void                    *sc_ih;         /* interrupt handler cookie */
        !           444:        struct arpcom           arpcom;         /* interface info */
        !           445:        mii_data_t              sc_mii;
        !           446:        bus_space_handle_t      sis_bhandle;
        !           447:        bus_space_tag_t         sis_btag;
        !           448:        u_int8_t                sis_type;
        !           449:        u_int8_t                sis_rev;
        !           450:        u_int8_t                sis_link;
        !           451:        u_int                   sis_srr;
        !           452:        struct sis_list_data    *sis_ldata;
        !           453:        struct sis_ring_data    sis_cdata;
        !           454:        struct timeout          sis_timeout;
        !           455:        bus_dma_tag_t           sc_dmat;
        !           456:        bus_dmamap_t            sc_listmap;
        !           457:        bus_dma_segment_t       sc_listseg[1];
        !           458:        int                     sc_listnseg;
        !           459:        caddr_t                 sc_listkva;
        !           460:        bus_dmamap_t            sc_rx_sparemap;
        !           461:        bus_dmamap_t            sc_tx_sparemap;
        !           462:        int                     sis_stopped;
        !           463:        int                     sc_rxbufs;
        !           464:        int                     sc_if_flags;
        !           465: };
        !           466:
        !           467: /*
        !           468:  * register space access macros
        !           469:  */
        !           470: #define CSR_WRITE_4(sc, reg, val)      \
        !           471:        bus_space_write_4(sc->sis_btag, sc->sis_bhandle, reg, val)
        !           472:
        !           473: #define CSR_READ_4(sc, reg)            \
        !           474:        bus_space_read_4(sc->sis_btag, sc->sis_bhandle, reg)
        !           475:
        !           476: #define SIS_TIMEOUT            1000
        !           477: #define SIS_MIN_FRAMELEN       60
        !           478:
        !           479: /*
        !           480:  * PCI low memory base and low I/O base register, and
        !           481:  * other PCI registers.
        !           482:  */
        !           483:
        !           484: #define SIS_PCI_VENDOR_ID      0x00
        !           485: #define SIS_PCI_DEVICE_ID      0x02
        !           486: #define SIS_PCI_COMMAND                0x04
        !           487: #define SIS_PCI_STATUS         0x06
        !           488: #define SIS_PCI_REVID          0x08
        !           489: #define SIS_PCI_CLASSCODE      0x09
        !           490: #define SIS_PCI_CACHELEN       0x0C
        !           491: #define SIS_PCI_LATENCY_TIMER  0x0D
        !           492: #define SIS_PCI_HEADER_TYPE    0x0E
        !           493: #define SIS_PCI_LOIO           0x10
        !           494: #define SIS_PCI_LOMEM          0x14
        !           495: #define SIS_PCI_BIOSROM                0x30
        !           496: #define SIS_PCI_INTLINE                0x3C
        !           497: #define SIS_PCI_INTPIN         0x3D
        !           498: #define SIS_PCI_MINGNT         0x3E
        !           499: #define SIS_PCI_MINLAT         0x0F
        !           500: #define SIS_PCI_RESETOPT       0x48
        !           501: #define SIS_PCI_EEPROM_DATA    0x4C
        !           502:
        !           503: /* power management registers */
        !           504: #define SIS_PCI_CAPID          0x50 /* 8 bits */
        !           505: #define SIS_PCI_NEXTPTR                0x51 /* 8 bits */
        !           506: #define SIS_PCI_PWRMGMTCAP     0x52 /* 16 bits */
        !           507: #define SIS_PCI_PWRMGMTCTRL    0x54 /* 16 bits */
        !           508:
        !           509: #define SIS_PSTATE_MASK                0x0003
        !           510: #define SIS_PSTATE_D0          0x0000
        !           511: #define SIS_PSTATE_D1          0x0001
        !           512: #define SIS_PSTATE_D2          0x0002
        !           513: #define SIS_PSTATE_D3          0x0003
        !           514: #define SIS_PME_EN             0x0010
        !           515: #define SIS_PME_STATUS         0x8000

CVSweb