root/dev/ic/am7990var.h

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

INCLUDED FROM


    1 /*      $OpenBSD: am7990var.h,v 1.9 2002/03/14 01:26:54 millert Exp $   */
    2 /*      $NetBSD: am7990var.h,v 1.8 1996/07/05 23:57:01 abrown Exp $     */
    3 
    4 /*
    5  * Copyright (c) 1995 Charles M. Hannum.  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 Charles M. Hannum.
   18  * 4. The name of the author may not be used to endorse or promote products
   19  *    derived from this software without specific prior written permission.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   22  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   23  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   24  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   26  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   30  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 #ifdef DDB
   34 #define integrate
   35 #define hide
   36 #else
   37 #define integrate       static __inline
   38 #define hide            static
   39 #endif
   40 
   41 /*
   42  * Ethernet software status per device.
   43  *
   44  * Each interface is referenced by a network interface structure,
   45  * arpcom.ac_if, which the routing code uses to locate the interface. 
   46  * This structure contains the output queue for the interface, its address, ...
   47  *
   48  * NOTE: this structure MUST be the first element in machine-dependent
   49  * le_softc structures!  This is designed SPECIFICALLY to make it possible
   50  * to simply cast a "void *" to "struct le_softc *" or to
   51  * "struct am7990_softc *".  Among other things, this saves a lot of hair
   52  * in the interrupt handlers.
   53  */
   54 struct am7990_softc {
   55         struct  device sc_dev;          /* base device glue */
   56         struct  arpcom sc_arpcom;       /* Ethernet common part */
   57 
   58         /*
   59          * Memory functions:
   60          *
   61          *      copy to/from descriptor
   62          *      copy to/from buffer
   63          *      zero bytes in buffer
   64          */
   65         void    (*sc_copytodesc)(struct am7990_softc *, void *, int, int);
   66         void    (*sc_copyfromdesc)(struct am7990_softc *, void *, int, int);
   67         void    (*sc_copytobuf)(struct am7990_softc *, void *, int, int);
   68         void    (*sc_copyfrombuf)(struct am7990_softc *, void *, int, int);
   69         void    (*sc_zerobuf)(struct am7990_softc *, int, int);
   70 
   71         /*
   72          * Machine-dependent functions:
   73          *
   74          *      read/write CSR
   75          *      hardware reset hook - may be NULL
   76          *      hardware init hook - may be NULL
   77          *      no carrier hook - may be NULL
   78          */
   79         u_int16_t (*sc_rdcsr)(struct am7990_softc *, u_int16_t);
   80         void    (*sc_wrcsr)(struct am7990_softc *, u_int16_t, u_int16_t);
   81         void    (*sc_hwreset)(struct am7990_softc *);
   82         void    (*sc_hwinit)(struct am7990_softc *);
   83         void    (*sc_nocarrier)(struct am7990_softc *);
   84 
   85         int     sc_hasifmedia;
   86         struct  ifmedia sc_ifmedia;
   87 
   88         void    *sc_sh;         /* shutdownhook cookie */
   89 
   90         u_int16_t sc_conf3;     /* CSR3 value */
   91 
   92         void    *sc_mem;        /* base address of RAM -- CPU's view */
   93         u_long  sc_addr;        /* base address of RAM -- LANCE's view */
   94 
   95         u_long  sc_memsize;     /* size of RAM */
   96 
   97         int     sc_nrbuf;       /* number of receive buffers */
   98         int     sc_ntbuf;       /* number of transmit buffers */
   99         int     sc_last_rd;
  100         int     sc_first_td, sc_last_td, sc_no_td;
  101 
  102         int     sc_initaddr;
  103         int     sc_rmdaddr;
  104         int     sc_tmdaddr;
  105         int     sc_rbufaddr;
  106         int     sc_tbufaddr;
  107 
  108 #ifdef LEDEBUG
  109         int     sc_debug;
  110 #endif
  111 };
  112 
  113 /* Export this to machine-dependent drivers. */
  114 extern struct cfdriver le_cd;
  115 
  116 void am7990_config(struct am7990_softc *);
  117 void am7990_init(struct am7990_softc *);
  118 int am7990_ioctl(struct ifnet *, u_long, caddr_t);
  119 void am7990_meminit(struct am7990_softc *);
  120 void am7990_reset(struct am7990_softc *);
  121 void am7990_setladrf(struct arpcom *, u_int16_t *);
  122 void am7990_start(struct ifnet *);
  123 void am7990_stop(struct am7990_softc *);
  124 void am7990_watchdog(struct ifnet *);
  125 int am7990_intr(void *);
  126 
  127 /*
  128  * The following functions are only useful on certain cpu/bus
  129  * combinations.  They should be written in assembly language for
  130  * maximum efficiency, but machine-independent versions are provided
  131  * for drivers that have not yet been optimized.
  132  */
  133 void am7990_copytobuf_contig(struct am7990_softc *, void *, int, int);
  134 void am7990_copyfrombuf_contig(struct am7990_softc *, void *, int, int);
  135 void am7990_zerobuf_contig(struct am7990_softc *, int, int);
  136 
  137 #if 0   /* Example only - see am7990.c */
  138 void am7990_copytobuf_gap2(struct am7990_softc *, void *, int, int);
  139 void am7990_copyfrombuf_gap2(struct am7990_softc *, void *, int, int);
  140 void am7990_zerobuf_gap2(struct am7990_softc *, int, int);
  141 
  142 void am7990_copytobuf_gap16(struct am7990_softc *, void *, int, int);
  143 void am7990_copyfrombuf_gap16(struct am7990_softc *, void *, int, int);
  144 void am7990_zerobuf_gap16(struct am7990_softc *, int, int);
  145 #endif /* Example only */

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