root/dev/usb/if_cuereg.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /*      $OpenBSD: if_cuereg.h,v 1.10 2007/06/10 10:15:35 mbalmer Exp $ */
    2 /*      $NetBSD: if_cuereg.h,v 1.14 2001/01/21 22:09:24 augustss Exp $  */
    3 /*
    4  * Copyright (c) 1997, 1998, 1999, 2000
    5  *      Bill Paul <wpaul@ee.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: src/sys/dev/usb/if_cuereg.h,v 1.3 2000/01/16 22:45:06 wpaul Exp $
   35  */
   36 
   37 /*
   38  * Definitions for the CATC Netmate II USB to ethernet controller.
   39  */
   40 
   41 
   42 /*
   43  * Vendor specific control commands.
   44  */
   45 #define CUE_CMD_READSRAM                        0xF1
   46 #define CUE_CMD_GET_MACADDR                     0xF2
   47 #define CUE_CMD_RESET                           0xF4
   48 #define CUE_CMD_WRITEREG                        0xFA
   49 #define CUE_CMD_READREG                         0xFB
   50 #define CUE_CMD_WRITESRAM                       0xFC
   51 
   52 /*
   53  * Internal registers
   54  */
   55 #define CUE_TX_BUFCNT                           0x20
   56 #define CUE_RX_BUFCNT                           0x21
   57 #define CUE_ADVANCED_OPMODES                    0x22
   58 #define CUE_TX_BUFPKTS                          0x23
   59 #define CUE_RX_BUFPKTS                          0x24
   60 #define CUE_RX_MAXCHAIN                         0x25
   61 
   62 #define CUE_ETHCTL                              0x60
   63 #define CUE_ETHSTS                              0x61
   64 #define CUE_PAR5                                0x62
   65 #define CUE_PAR4                                0x63
   66 #define CUE_PAR3                                0x64
   67 #define CUE_PAR2                                0x65
   68 #define CUE_PAR1                                0x66
   69 #define CUE_PAR0                                0x67
   70 
   71 /* Error counters, all 16 bits wide. */
   72 #define CUE_TX_SINGLECOLL                       0x69
   73 #define CUE_TX_MULTICOLL                        0x6B
   74 #define CUE_TX_EXCESSCOLL                       0x6D
   75 #define CUE_RX_FRAMEERR                         0x6F
   76 
   77 #define CUE_LEDCTL                              0x81
   78 
   79 /* Advenced operating mode register */
   80 #define CUE_AOP_SRAMWAITS                       0x03
   81 #define CUE_AOP_EMBED_RXLEN                     0x08
   82 #define CUE_AOP_RXCOMBINE                       0x10
   83 #define CUE_AOP_TXCOMBINE                       0x20
   84 #define CUE_AOP_EVEN_PKT_READS                  0x40
   85 #define CUE_AOP_LOOPBK                          0x80
   86 
   87 /* Ethernet control register */
   88 #define CUE_ETHCTL_RX_ON                        0x01
   89 #define CUE_ETHCTL_LINK_POLARITY                0x02
   90 #define CUE_ETHCTL_LINK_FORCE_OK                0x04
   91 #define CUE_ETHCTL_MCAST_ON                     0x08
   92 #define CUE_ETHCTL_PROMISC                      0x10
   93 
   94 /* Ethernet status register */
   95 #define CUE_ETHSTS_NO_CARRIER                   0x01
   96 #define CUE_ETHSTS_LATECOLL                     0x02
   97 #define CUE_ETHSTS_EXCESSCOLL                   0x04
   98 #define CUE_ETHSTS_TXBUF_AVAIL                  0x08
   99 #define CUE_ETHSTS_BAD_POLARITY                 0x10
  100 #define CUE_ETHSTS_LINK_OK                      0x20
  101 
  102 /* LED control register */
  103 #define CUE_LEDCTL_BLINK_1X                     0x00
  104 #define CUE_LEDCTL_BLINK_2X                     0x01
  105 #define CUE_LEDCTL_BLINK_QUARTER_ON             0x02
  106 #define CUE_LEDCTL_BLINK_QUARTER_OFF            0x03
  107 #define CUE_LEDCTL_OFF                          0x04
  108 #define CUE_LEDCTL_FOLLOW_LINK                  0x08
  109 
  110 /*
  111  * Address in ASIC's internal SRAM where the
  112  * multicast hash table lives. The table is 64 bytes long,
  113  * giving us a 512-bit table. We have to set the bit that
  114  * corresponds to the broadcast address in order to enable
  115  * reception of broadcast frames.
  116  */
  117 #define CUE_MCAST_TABLE_ADDR                    0xFA80
  118 #define CUE_MCAST_TABLE_LEN                     64
  119 
  120 #define CUE_TIMEOUT             1000
  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         struct device           cue_dev;
  169 
  170         struct arpcom           arpcom;
  171 #define GET_IFP(sc) (&(sc)->arpcom.ac_if)
  172 
  173         struct timeout          cue_stat_ch;
  174 
  175         usbd_device_handle      cue_udev;
  176         usbd_interface_handle   cue_iface;
  177         u_int16_t               cue_vendor;
  178         u_int16_t               cue_product;
  179         int                     cue_ed[CUE_ENDPT_MAX];
  180         usbd_pipe_handle        cue_ep[CUE_ENDPT_MAX];
  181         u_int8_t                cue_mctab[CUE_MCAST_TABLE_LEN];
  182         int                     cue_if_flags;
  183         u_int16_t               cue_rxfilt;
  184         struct cue_cdata        cue_cdata;
  185 
  186         char                    cue_dying;
  187         char                    cue_attached;
  188         u_int                   cue_rx_errs;
  189         struct timeval          cue_rx_notice;
  190 
  191         struct usb_task         cue_tick_task;
  192         struct usb_task         cue_stop_task;
  193 };

/* [<][>][^][v][top][bottom][index][help] */