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

Annotation of sys/dev/ic/dp8390var.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: dp8390var.h,v 1.11 2006/10/20 18:12:50 brad 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 conmplete 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:
        !           163: int    dp8390_mediachange(struct ifnet *);
        !           164: void   dp8390_mediastatus(struct ifnet *, struct ifmediareq *);
        !           165:
        !           166: void   dp8390_media_init(struct dp8390_softc *);
        !           167:
        !           168: int    dp8390_detach(struct dp8390_softc *, int);
        !           169:
        !           170: void   dp8390_rint(struct dp8390_softc *);
        !           171:
        !           172: void   dp8390_getmcaf(struct arpcom *, u_int8_t *);
        !           173: struct mbuf *dp8390_get(struct dp8390_softc *, int, u_short);
        !           174: void   dp8390_read(struct dp8390_softc *, int, u_short);

CVSweb