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

Cache object: 946a2976a25eaee4ed63b231426ea63a


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