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

Annotation of sys/dev/usb/if_cuereg.h, Revision 1.1.1.1

1.1       nbrk        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: };

CVSweb