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/usb/if_cuereg.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: if_cuereg.h,v 1.14 2001/01/21 22:09:24 augustss Exp $  */
    2 /*
    3  * Copyright (c) 1997, 1998, 1999, 2000
    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/dev/usb/if_cuereg.h,v 1.3 2000/01/16 22:45:06 wpaul Exp $
   34  */
   35 
   36 /*
   37  * Definitions for the CATC Netmate II USB to ethernet controller.
   38  */
   39 
   40 
   41 /*
   42  * Vendor specific control commands.
   43  */
   44 #define CUE_CMD_READSRAM                        0xF1
   45 #define CUE_CMD_GET_MACADDR                     0xF2
   46 #define CUE_CMD_RESET                           0xF4
   47 #define CUE_CMD_WRITEREG                        0xFA
   48 #define CUE_CMD_READREG                         0xFB
   49 #define CUE_CMD_WRITESRAM                       0xFC
   50 
   51 /*
   52  * Internal registers
   53  */
   54 #define CUE_TX_BUFCNT                           0x20
   55 #define CUE_RX_BUFCNT                           0x21
   56 #define CUE_ADVANCED_OPMODES                    0x22
   57 #define CUE_TX_BUFPKTS                          0x23
   58 #define CUE_RX_BUFPKTS                          0x24
   59 #define CUE_RX_MAXCHAIN                         0x25
   60 
   61 #define CUE_ETHCTL                              0x60
   62 #define CUE_ETHSTS                              0x61
   63 #define CUE_PAR5                                0x62
   64 #define CUE_PAR4                                0x63
   65 #define CUE_PAR3                                0x64
   66 #define CUE_PAR2                                0x65
   67 #define CUE_PAR1                                0x66
   68 #define CUE_PAR0                                0x67
   69 
   70 /* Error counters, all 16 bits wide. */
   71 #define CUE_TX_SINGLECOLL                       0x69
   72 #define CUE_TX_MULTICOLL                        0x6B
   73 #define CUE_TX_EXCESSCOLL                       0x6D
   74 #define CUE_RX_FRAMEERR                         0x6F
   75 
   76 #define CUE_LEDCTL                              0x81
   77 
   78 /* Advenced operating mode register */
   79 #define CUE_AOP_SRAMWAITS                       0x03
   80 #define CUE_AOP_EMBED_RXLEN                     0x08
   81 #define CUE_AOP_RXCOMBINE                       0x10
   82 #define CUE_AOP_TXCOMBINE                       0x20
   83 #define CUE_AOP_EVEN_PKT_READS                  0x40
   84 #define CUE_AOP_LOOPBK                          0x80
   85 
   86 /* Ethernet control register */
   87 #define CUE_ETHCTL_RX_ON                        0x01
   88 #define CUE_ETHCTL_LINK_POLARITY                0x02
   89 #define CUE_ETHCTL_LINK_FORCE_OK                0x04
   90 #define CUE_ETHCTL_MCAST_ON                     0x08
   91 #define CUE_ETHCTL_PROMISC                      0x10
   92 
   93 /* Ethernet status register */
   94 #define CUE_ETHSTS_NO_CARRIER                   0x01
   95 #define CUE_ETHSTS_LATECOLL                     0x02
   96 #define CUE_ETHSTS_EXCESSCOLL                   0x04
   97 #define CUE_ETHSTS_TXBUF_AVAIL                  0x08
   98 #define CUE_ETHSTS_BAD_POLARITY                 0x10
   99 #define CUE_ETHSTS_LINK_OK                      0x20
  100 
  101 /* LED control register */
  102 #define CUE_LEDCTL_BLINK_1X                     0x00
  103 #define CUE_LEDCTL_BLINK_2X                     0x01
  104 #define CUE_LEDCTL_BLINK_QUARTER_ON             0x02
  105 #define CUE_LEDCTL_BLINK_QUARTER_OFF            0x03
  106 #define CUE_LEDCTL_OFF                          0x04
  107 #define CUE_LEDCTL_FOLLOW_LINK                  0x08
  108 
  109 /*
  110  * Address in ASIC's internal SRAM where the
  111  * multicast hash table lives. The table is 64 bytes long,
  112  * giving us a 512-bit table. We have to set the bit that
  113  * corresponds to the broadcast address in order to enable
  114  * reception of broadcast frames.
  115  */
  116 #define CUE_MCAST_TABLE_ADDR                    0xFA80
  117 #define CUE_MCAST_TABLE_LEN                     64
  118 
  119 #define CUE_TIMEOUT             1000
  120 #define ETHER_ALIGN             2
  121 #define CUE_BUFSZ               1536
  122 #define CUE_MIN_FRAMELEN        60
  123 #define CUE_RX_FRAMES           1
  124 #define CUE_TX_FRAMES           1
  125 
  126 #define CUE_RX_LIST_CNT         1
  127 #define CUE_TX_LIST_CNT         1
  128 
  129 #define CUE_CTL_READ            0x01
  130 #define CUE_CTL_WRITE           0x02
  131 
  132 #define CUE_CONFIG_NO           1
  133 #define CUE_IFACE_IDX           0
  134 
  135 /*
  136  * The interrupt endpoint is currently unused by the CATC part.
  137  */
  138 #define CUE_ENDPT_RX            0x0
  139 #define CUE_ENDPT_TX            0x1
  140 #define CUE_ENDPT_INTR          0x2
  141 #define CUE_ENDPT_MAX           0x3
  142 
  143 struct cue_type {
  144         u_int16_t               cue_vid;
  145         u_int16_t               cue_did;
  146 };
  147 
  148 struct cue_softc;
  149 
  150 struct cue_chain {
  151         struct cue_softc        *cue_sc;
  152         usbd_xfer_handle        cue_xfer;
  153         char                    *cue_buf;
  154         struct mbuf             *cue_mbuf;
  155         int                     cue_idx;
  156 };
  157 
  158 struct cue_cdata {
  159         struct cue_chain        cue_tx_chain[CUE_TX_LIST_CNT];
  160         struct cue_chain        cue_rx_chain[CUE_RX_LIST_CNT];
  161         int                     cue_tx_prod;
  162         int                     cue_tx_cons;
  163         int                     cue_tx_cnt;
  164         int                     cue_rx_prod;
  165 };
  166 
  167 struct cue_softc {
  168         USBBASEDEVICE           cue_dev;
  169 
  170 #if defined(__FreeBSD__) || defined(__OpenBSD__)
  171         struct arpcom           arpcom;
  172 #define GET_IFP(sc) (&(sc)->arpcom.ac_if)
  173 #elif defined(__NetBSD__)
  174         struct ethercom         cue_ec;
  175 #if NRND > 0
  176         rndsource_element_t     rnd_source;
  177 #endif
  178 #define GET_IFP(sc) (&(sc)->cue_ec.ec_if)
  179 #endif
  180 
  181         usb_callout_t           cue_stat_ch;
  182 
  183         usbd_device_handle      cue_udev;
  184         usbd_interface_handle   cue_iface;
  185         u_int16_t               cue_vendor;
  186         u_int16_t               cue_product;
  187         int                     cue_ed[CUE_ENDPT_MAX];
  188         usbd_pipe_handle        cue_ep[CUE_ENDPT_MAX];
  189         u_int8_t                cue_mctab[CUE_MCAST_TABLE_LEN];
  190         int                     cue_if_flags;
  191         u_int16_t               cue_rxfilt;
  192         struct cue_cdata        cue_cdata;
  193 
  194         char                    cue_dying;
  195         char                    cue_attached;
  196         u_int                   cue_rx_errs;
  197         struct timeval          cue_rx_notice;
  198 
  199         struct usb_task         cue_tick_task;
  200         struct usb_task         cue_stop_task;
  201 };

Cache object: ac7f1572ff6ce558418560c7ef0902f8


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