The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/rtl81x9var.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: rtl81x9var.h,v 1.11.2.2 2004/06/21 17:12:38 tron Exp $ */
    2 
    3 /*
    4  * Copyright (c) 1997, 1998
    5  *      Bill Paul <wpaul@ctr.columbia.edu>.  All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  * 3. All advertising materials mentioning features or use of this software
   16  *    must display the following acknowledgement:
   17  *      This product includes software developed by Bill Paul.
   18  * 4. Neither the name of the author nor the names of any co-contributors
   19  *    may be used to endorse or promote products derived from this software
   20  *    without specific prior written permission.
   21  *
   22  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
   23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   25  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
   26  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   27  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   28  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   29  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   30  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   31  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
   32  * THE POSSIBILITY OF SUCH DAMAGE.
   33  *
   34  *      FreeBSD Id: if_rlreg.h,v 1.9 1999/06/20 18:56:09 wpaul Exp
   35  */
   36 
   37 #define RTK_ETHER_ALIGN 2
   38 #define RTK_RXSTAT_LEN  4
   39 
   40 struct rtk_type {
   41         u_int16_t               rtk_vid;
   42         u_int16_t               rtk_did;
   43         int                     rtk_basetype;
   44         const char              *rtk_name;
   45 };
   46 
   47 struct rtk_hwrev {
   48         uint32_t                rtk_rev;
   49         int                     rtk_type;
   50         char                    *rtk_desc;
   51 };
   52 
   53 struct rtk_mii_frame {
   54         u_int8_t                mii_stdelim;
   55         u_int8_t                mii_opcode;
   56         u_int8_t                mii_phyaddr;
   57         u_int8_t                mii_regaddr;
   58         u_int8_t                mii_turnaround;
   59         u_int16_t               mii_data;
   60 };
   61 
   62 /*
   63  * MII constants
   64  */
   65 #define RTK_MII_STARTDELIM      0x01
   66 #define RTK_MII_READOP          0x02
   67 #define RTK_MII_WRITEOP         0x01
   68 #define RTK_MII_TURNAROUND      0x02
   69 
   70 #define RTK_8129                1
   71 #define RTK_8139                2
   72 #define RTK_8139CPLUS           3
   73 #define RTK_8169                4
   74 
   75 #define RTK_ISCPLUS(x)  ((x)->rtk_type == RTK_8139CPLUS || \
   76                          (x)->rtk_type == RTK_8169)
   77 
   78 /*
   79  * The 8139C+ and 8160 gigE chips support descriptor-based TX
   80  * and RX. In fact, they even support TCP large send. Descriptors
   81  * must be allocated in contiguous blocks that are aligned on a
   82  * 256-byte boundary. The rings can hold a maximum of 64 descriptors.
   83  */
   84 
   85 struct rtk_list_data {
   86         struct mbuf             *rtk_tx_mbuf[RTK_TX_DESC_CNT];
   87         struct mbuf             *rtk_rx_mbuf[RTK_RX_DESC_CNT];
   88         int                     rtk_tx_prodidx;
   89         int                     rtk_rx_prodidx;
   90         int                     rtk_tx_considx;
   91         int                     rtk_tx_free;
   92         bus_dmamap_t            rtk_tx_dmamap[RTK_TX_DESC_CNT];
   93         bus_dmamap_t            rtk_rx_dmamap[RTK_RX_DESC_CNT];
   94         bus_dmamap_t            rtk_rx_list_map;
   95         struct rtk_desc         *rtk_rx_list;
   96         bus_dma_segment_t       rtk_rx_listseg;
   97         bus_dmamap_t            rtk_tx_list_map;
   98         struct rtk_desc         *rtk_tx_list;
   99         bus_dma_segment_t       rtk_tx_listseg;
  100 };
  101 struct rtk_tx_desc {
  102         SIMPLEQ_ENTRY(rtk_tx_desc) txd_q;
  103         struct mbuf             *txd_mbuf;
  104         bus_dmamap_t            txd_dmamap;
  105         bus_addr_t              txd_txaddr;
  106         bus_addr_t              txd_txstat;
  107 };
  108 
  109 struct rtk_softc {
  110         struct device sc_dev;           /* generic device structures */
  111         struct ethercom         ethercom;       /* interface info */
  112         struct mii_data         mii;
  113         struct callout          rtk_tick_ch;    /* tick callout */
  114         bus_space_handle_t      rtk_bhandle;    /* bus space handle */
  115         bus_space_tag_t         rtk_btag;       /* bus space tag */
  116         int                     rtk_type;
  117         bus_dma_tag_t           sc_dmat;
  118         bus_dma_segment_t       sc_dmaseg;
  119         int                     sc_dmanseg;
  120 
  121         bus_dmamap_t            recv_dmamap;
  122         caddr_t                 rtk_rx_buf;
  123 
  124         struct rtk_tx_desc      rtk_tx_descs[RTK_TX_LIST_CNT];
  125         SIMPLEQ_HEAD(, rtk_tx_desc) rtk_tx_free;
  126         SIMPLEQ_HEAD(, rtk_tx_desc) rtk_tx_dirty;
  127         struct rtk_list_data    rtk_ldata;
  128         struct mbuf             *rtk_head;
  129         struct mbuf             *rtk_tail;
  130         u_int32_t               rtk_rxlenmask;
  131         int                     rtk_testmode;
  132 
  133         int                     sc_flags;       /* misc flags */
  134         int                     sc_txthresh;    /* Early tx threshold */
  135 
  136         void    *sc_sdhook;                     /* shutdown hook */
  137         void    *sc_powerhook;                  /* power management hook */
  138 
  139         /* Power management hooks. */
  140         int     (*sc_enable)    __P((struct rtk_softc *));
  141         void    (*sc_disable)   __P((struct rtk_softc *));
  142         void    (*sc_power)     __P((struct rtk_softc *, int));
  143 };
  144 
  145 #define RTK_ATTACHED 0x00000001 /* attach has succeeded */
  146 #define RTK_ENABLED  0x00000002 /* chip is enabled      */
  147 
  148 #define RTK_IS_ENABLED(sc)      ((sc)->sc_flags & RTK_ENABLED)
  149 #define RTK_TX_THRESH(sc)       (((sc)->sc_txthresh << 16) & 0x003F0000)
  150 
  151 #define TXTH_256        8
  152 #define TXTH_MAX        48
  153 
  154 /*
  155  * register space access macros
  156  */
  157 #define CSR_WRITE_4(sc, reg, val)       \
  158         bus_space_write_4(sc->rtk_btag, sc->rtk_bhandle, reg, val)
  159 #define CSR_WRITE_2(sc, reg, val)       \
  160         bus_space_write_2(sc->rtk_btag, sc->rtk_bhandle, reg, val)
  161 #define CSR_WRITE_1(sc, reg, val)       \
  162         bus_space_write_1(sc->rtk_btag, sc->rtk_bhandle, reg, val)
  163 #define CSR_WRITE_STREAM_4(sc, reg, val)        \
  164         bus_space_write_stream_4(sc->rtk_btag, sc->rtk_bhandle, reg, val)
  165 
  166 
  167 #define CSR_READ_4(sc, reg)             \
  168         bus_space_read_4(sc->rtk_btag, sc->rtk_bhandle, reg)
  169 #define CSR_READ_2(sc, reg)             \
  170         bus_space_read_2(sc->rtk_btag, sc->rtk_bhandle, reg)
  171 #define CSR_READ_1(sc, reg)             \
  172         bus_space_read_1(sc->rtk_btag, sc->rtk_bhandle, reg)
  173 
  174 #define RTK_TIMEOUT             1000
  175 
  176 /*
  177  * PCI low memory base and low I/O base register, and
  178  * other PCI registers.
  179  */
  180 
  181 #define RTK_PCI_LOIO            0x10
  182 #define RTK_PCI_LOMEM           0x14
  183 
  184 #define RTK_PSTATE_MASK         0x0003
  185 #define RTK_PSTATE_D0           0x0000
  186 #define RTK_PSTATE_D1           0x0002
  187 #define RTK_PSTATE_D2           0x0002
  188 #define RTK_PSTATE_D3           0x0003
  189 #define RTK_PME_EN              0x0010
  190 #define RTK_PME_STATUS          0x8000
  191 
  192 #ifdef _KERNEL
  193 u_int16_t rtk_read_eeprom __P((struct rtk_softc *, int, int));
  194 void    rtk_setmulti    __P((struct rtk_softc *));
  195 void    rtk_attach      __P((struct rtk_softc *));
  196 int     rtk_detach      __P((struct rtk_softc *));
  197 int     rtk_activate    __P((struct device *, enum devact));
  198 int     rtk_intr        __P((void *));
  199 #endif /* _KERNEL */

Cache object: c42461ed065288bdd4a0ac40e780463f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.