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/dp8390var.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: dp8390var.h,v 1.24 2003/11/02 11:07:45 wiz Exp $       */
    2 
    3 /*
    4  * Device driver for National Semiconductor DS8390/WD83C690 based ethernet
    5  * adapters.
    6  *
    7  * Copyright (c) 1994, 1995 Charles M. Hannum.  All rights reserved.
    8  *
    9  * Copyright (C) 1993, David Greenman.  This software may be used, modified,
   10  * copied, distributed, and sold, in both source and binary form provided that
   11  * the above copyright and these terms are retained.  Under no circumstances is
   12  * the author responsible for the proper functioning of this software, nor does
   13  * the author assume any responsibility for damages incurred with its use.
   14  */
   15 
   16 #include "rnd.h"
   17 #if NRND > 0
   18 #include <sys/rnd.h>
   19 #endif
   20 
   21 /*
   22  * We include MII glue here -- some DP8390 compatible chips have
   23  * MII interfaces on them (scary, isn't it...).
   24  */
   25 #include <dev/mii/miivar.h>
   26 
   27 #define INTERFACE_NAME_LEN      32
   28 
   29 /*
   30  * dp8390_softc: per line info and status
   31  */
   32 struct dp8390_softc {
   33         struct device   sc_dev;
   34         void    *sc_ih;
   35         int     sc_flags;               /* interface flags, from config */
   36 
   37         struct ethercom sc_ec;          /* ethernet common */
   38         struct mii_data sc_mii;         /* MII glue */
   39 #define sc_media sc_mii.mii_media       /* compatibilty definition */
   40 
   41         bus_space_tag_t sc_regt;        /* NIC register space tag */
   42         bus_space_handle_t sc_regh;     /* NIC register space handle */
   43         bus_space_tag_t sc_buft;        /* Buffer space tag */
   44         bus_space_handle_t sc_bufh;     /* Buffer space handle */
   45 
   46         bus_size_t sc_reg_map[16];      /* register map (offsets) */
   47 
   48         int     is790;          /* NIC is a 790 */
   49 
   50         u_int8_t cr_proto;      /* values always set in CR */
   51         u_int8_t rcr_proto;     /* values always set in RCR */
   52         u_int8_t dcr_reg;       /* override DCR iff LS is set */
   53 
   54         int     mem_start;      /* offset of NIC memory */
   55         int     mem_end;        /* offset of NIC memory end */
   56         int     mem_size;       /* total shared memory size */
   57         int     mem_ring;       /* offset of start of RX ring-buffer */
   58 
   59         u_short txb_cnt;        /* Number of transmit buffers */
   60         u_short txb_inuse;      /* number of transmit buffers active */
   61 
   62         u_short txb_new;        /* pointer to where new buffer will be added */
   63         u_short txb_next_tx;    /* pointer to next buffer ready to xmit */
   64         u_short txb_len[8];     /* buffered xmit buffer lengths */
   65         u_short tx_page_start;  /* first page of TX buffer area */
   66         u_short rec_page_start; /* first page of RX ring-buffer */
   67         u_short rec_page_stop;  /* last page of RX ring-buffer */
   68         u_short next_packet;    /* pointer to next unread RX packet */
   69 
   70         u_int8_t sc_enaddr[ETHER_ADDR_LEN];     /* storage for MAC address */
   71 
   72         int     sc_enabled;     /* boolean; power enabled on interface */
   73 
   74 #if NRND > 0
   75         rndsource_element_t rnd_source; /* random source */
   76 #endif
   77 
   78         int     (*test_mem) __P((struct dp8390_softc *));
   79         void    (*init_card) __P((struct dp8390_softc *));
   80         void    (*stop_card) __P((struct dp8390_softc *));
   81         void    (*read_hdr) __P((struct dp8390_softc *,
   82                     int, struct dp8390_ring *));
   83         void    (*recv_int) __P((struct dp8390_softc *));
   84         int     (*ring_copy) __P((struct dp8390_softc *,
   85                     int, caddr_t, u_short));
   86         int     (*write_mbuf) __P((struct dp8390_softc *, struct mbuf *, int));
   87 
   88         int     (*sc_enable) __P((struct dp8390_softc *));
   89         void    (*sc_disable) __P((struct dp8390_softc *));
   90 
   91         void    (*sc_media_init) __P((struct dp8390_softc *));
   92         void    (*sc_media_fini) __P((struct dp8390_softc *));
   93 
   94         int     (*sc_mediachange) __P((struct dp8390_softc *));
   95         void    (*sc_mediastatus) __P((struct dp8390_softc *,
   96                     struct ifmediareq *));
   97 };
   98 
   99 /*
  100  * Vendor types
  101  */
  102 #define DP8390_VENDOR_UNKNOWN   0xff    /* Unknown network card */
  103 #define DP8390_VENDOR_WD_SMC    0x00    /* Western Digital/SMC */
  104 #define DP8390_VENDOR_3COM      0x01    /* 3Com */
  105 #define DP8390_VENDOR_NOVELL    0x02    /* Novell */
  106 #define DP8390_VENDOR_APPLE     0x10    /* Apple Ethernet card */
  107 #define DP8390_VENDOR_INTERLAN  0x11    /* Interlan A310 card (GatorCard) */
  108 #define DP8390_VENDOR_DAYNA     0x12    /* DaynaPORT E/30s (and others?) */
  109 #define DP8390_VENDOR_ASANTE    0x13    /* Asante MacCon II/E */
  110 #define DP8390_VENDOR_FARALLON  0x14    /* Farallon EtherMac II-TP */
  111 #define DP8390_VENDOR_FOCUS     0x15    /* FOCUS Enhancements EtherLAN */
  112 #define DP8390_VENDOR_KINETICS  0x16    /* Kinetics EtherPort SE/30 */
  113 #define DP8390_VENDOR_CABLETRON 0x17    /* Cabletron Ethernet */
  114 
  115 /*
  116  * Compile-time config flags
  117  */
  118 /*
  119  * This sets the default for enabling/disabling the tranceiver.
  120  */
  121 #define DP8390_DISABLE_TRANCEIVER       0x0001
  122 
  123 /*
  124  * This forces the board to be used in 8/16-bit mode even if it autoconfigs
  125  * differently.
  126  */
  127 #define DP8390_FORCE_8BIT_MODE          0x0002
  128 #define DP8390_FORCE_16BIT_MODE         0x0004
  129 
  130 /*
  131  * This disables the use of multiple transmit buffers.
  132  */
  133 #define DP8390_NO_MULTI_BUFFERING       0x0008
  134 
  135 /*
  136  * This forces all operations with the NIC memory to use Programmed I/O (i.e.
  137  * not via shared memory).
  138  */
  139 #define DP8390_FORCE_PIO                0x0010
  140 
  141 /*
  142  * The chip is ASIX AX88190 and needs work around.
  143  */
  144 #define DP8390_DO_AX88190_WORKAROUND    0x0020
  145 
  146 #define DP8390_ATTACHED                 0x0040  /* attach has succeeded */
  147 
  148 /*
  149  * NIC register access macros
  150  */
  151 #define NIC_GET(t, h, reg)      bus_space_read_1(t, h,                  \
  152                                     ((sc)->sc_reg_map[reg]))
  153 #define NIC_PUT(t, h, reg, val) bus_space_write_1(t, h,                 \
  154                                     ((sc)->sc_reg_map[reg]), (val))
  155 #define NIC_BARRIER(t, h)       bus_space_barrier(t, h, 0, 0x10,        \
  156                             BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE)
  157 
  158 int     dp8390_config __P((struct dp8390_softc *));
  159 int     dp8390_intr __P((void *));
  160 int     dp8390_ioctl __P((struct ifnet *, u_long, caddr_t));
  161 void    dp8390_start __P((struct ifnet *));
  162 void    dp8390_watchdog __P((struct ifnet *));
  163 void    dp8390_reset __P((struct dp8390_softc *));
  164 void    dp8390_init __P((struct dp8390_softc *));
  165 void    dp8390_stop __P((struct dp8390_softc *));
  166 
  167 void    dp8390_rint __P((struct dp8390_softc *));
  168 
  169 void    dp8390_getmcaf __P((struct ethercom *, u_int8_t *));
  170 struct mbuf *dp8390_get __P((struct dp8390_softc *, int, u_short));
  171 void    dp8390_read __P((struct dp8390_softc *, int, u_short));
  172 
  173 int     dp8390_enable __P((struct dp8390_softc *));
  174 void    dp8390_disable __P((struct dp8390_softc *));
  175 
  176 int     dp8390_activate __P((struct device *, enum devact));
  177 
  178 int     dp8390_detach __P((struct dp8390_softc *, int));
  179 
  180 int     dp8390_mediachange __P((struct ifnet *));
  181 void    dp8390_mediastatus __P((struct ifnet *, struct ifmediareq *));
  182 
  183 void    dp8390_media_init __P((struct dp8390_softc *));
  184 
  185 #ifdef IPKDB_DP8390
  186 int     dp8390_ipkdb_attach __P((struct ipkdb_if *));
  187 #endif

Cache object: 2f83acf8c90799d6cbba8d2e658fa2d3


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