⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 if_devar.h

📁 很好的一个嵌入式linux平台下的bootloader
💻 H
📖 第 1 页 / 共 3 页
字号:
    TULIP_21140_DEC_EB,			/* Digital Semicondutor 21140 Evaluation Board */    TULIP_21140_MII,			/* 21140[A] with MII */    TULIP_21140_DEC_DE500,		/* Digital DE500-?? 10/100 */    TULIP_21140_SMC_9332,		/* SMC 9332 */    TULIP_21140_COGENT_EM100,		/* Cogent EM100 100 only */    TULIP_21140_ZNYX_ZX34X,		/* ZNYX ZX342 10/100 */    TULIP_21140_ASANTE,			/* AsanteFast 10/100 */    TULIP_21140_EN1207,			/* Accton EN2107 10/100 BNC */    TULIP_21140_NECDDB,			/* NEC Eval board */    TULIP_21041_GENERIC			/* Generic 21041 card */} tulip_board_t;typedef enum {    TULIP_MEDIAPOLL_TIMER,		/* 100ms timer fired */    TULIP_MEDIAPOLL_FASTTIMER,		/* <100ms timer fired */    TULIP_MEDIAPOLL_LINKFAIL,		/* called from interrupt routine */    TULIP_MEDIAPOLL_LINKPASS,		/* called from interrupt routine */    TULIP_MEDIAPOLL_START,		/* start a media probe (called from reset) */    TULIP_MEDIAPOLL_TXPROBE_OK,		/* txprobe succeeded */    TULIP_MEDIAPOLL_TXPROBE_FAILED,	/* txprobe failed */    TULIP_MEDIAPOLL_MAX} tulip_mediapoll_event_t;typedef enum {    TULIP_LINK_DOWN,			/* Link is down */    TULIP_LINK_UP,			/* link is ok */    TULIP_LINK_UNKNOWN			/* we can't tell either way */} tulip_link_status_t;/* * This data structure is used to abstract out the quirks. * media_probe  = tries to determine the media type. * media_select = enables the current media (or autosenses) * media_poll	= autosenses media * media_preset = 21140, etal requires bit to set before the *		  the software reset; hence pre-set.  Should be *		  pre-reset but that's ugly. */typedef struct {    tulip_board_t bd_type;    void (*bd_media_probe)(tulip_softc_t * const sc);    void (*bd_media_select)(tulip_softc_t * const sc);    void (*bd_media_poll)(tulip_softc_t * const sc, tulip_mediapoll_event_t event);    void (*bd_media_preset)(tulip_softc_t * const sc);#if defined(__bsdi__) && _BSDI_VERSION >= 199701    struct ifmedia_entry *bd_media_list;    int bd_media_cnt;    int bd_media_options_mask;#endif} tulip_boardsw_t;/* * The next few declarations are for MII/PHY based board. * *    The first enumeration identifies a superset of various datums * that can be obtained from various PHY chips.  Not all PHYs will * support all datums. *    The modedata structure indicates what register contains * a datum, what mask is applied the register contents, and what the * result should be. *    The attr structure records information about a supported PHY. *    The phy structure records information about a PHY instance. */typedef enum {    PHY_MODE_10T,    PHY_MODE_100TX,    PHY_MODE_100T4,    PHY_MODE_FULLDUPLEX,    PHY_MODE_MAX} tulip_phy_mode_t;typedef struct {    u_int16_t pm_regno;    u_int16_t pm_mask;    u_int16_t pm_value;} tulip_phy_modedata_t;typedef struct {    u_int32_t attr_id;    u_int16_t attr_flags;#define	PHY_NEED_HARD_RESET	0x0001#define	PHY_DUAL_CYCLE_TA	0x0002    tulip_phy_modedata_t attr_modes[PHY_MODE_MAX];#ifdef TULIP_DEBUG    const char *attr_name;#endif} tulip_phy_attr_t;/* * Various probe states used when trying to autosense the media. */typedef enum {    TULIP_PROBE_INACTIVE,    TULIP_PROBE_PHYRESET,    TULIP_PROBE_PHYAUTONEG,    TULIP_PROBE_GPRTEST,    TULIP_PROBE_MEDIATEST,    TULIP_PROBE_FAILED} tulip_probe_state_t;typedef struct {    /*     * Transmit Statistics     */    u_int32_t dot3StatsSingleCollisionFrames;    u_int32_t dot3StatsMultipleCollisionFrames;    u_int32_t dot3StatsSQETestErrors;    u_int32_t dot3StatsDeferredTransmissions;    u_int32_t dot3StatsLateCollisions;    u_int32_t dot3StatsExcessiveCollisions;    u_int32_t dot3StatsCarrierSenseErrors;    u_int32_t dot3StatsInternalMacTransmitErrors;    u_int32_t dot3StatsInternalTransmitUnderflows;	/* not in rfc1650! */    u_int32_t dot3StatsInternalTransmitBabbles;		/* not in rfc1650! */    /*     * Receive Statistics     */    u_int32_t dot3StatsMissedFrames;	/* not in rfc1650! */    u_int32_t dot3StatsAlignmentErrors;    u_int32_t dot3StatsFCSErrors;    u_int32_t dot3StatsFrameTooLongs;    u_int32_t dot3StatsInternalMacReceiveErrors;} tulip_dot3_stats_t;/* * Now to important stuff.  This is softc structure (where does softc * come from??? No idea) for the tulip device.   * */struct _tulip_softc_t {#if defined(__bsdi__)    struct device tulip_dev;		/* base device */    struct isadev tulip_id;		/* ISA device */    struct intrhand tulip_ih;		/* intrrupt vectoring */    struct atshutdown tulip_ats;	/* shutdown hook */#if _BSDI_VERSION < 199401    caddr_t tulip_bpf;			/* for BPF */#else    prf_t tulip_pf;			/* printf function */#if _BSDI_VERSION >= 199701    struct mii_data tulip_mii;		/* Generic MII and media data */#define	tulip_ifmedia tulip_mii.mii_media#endif /* _BSDI_VERSION >= 199701 */#endif /* _BSDI_VERSION < 199401 */#endif /* __bsdi__ */#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(PROM)    struct device tulip_dev;		/* base device */    void *tulip_ih;			/* intrrupt vectoring */    void *tulip_ats;			/* shutdown hook */#if !defined(PROM)    bus_space_tag_t tulip_bustag;	/* tag of CSR region being used */    bus_space_handle_t tulip_bushandle;	/* handle for CSR region being used */    pci_chipset_tag_t tulip_pc;#endif#if !defined(__OpenBSD__) && !defined(PROM)    struct ethercom tulip_ec;#endif    u_int8_t tulip_enaddr[ETHER_ADDR_LEN];#endif#if !defined(tulip_ifmedia) && defined(IFM_ETHER)    struct ifmedia tulip_ifmedia;#endif#if !defined(__NetBSD__)    struct arpcom tulip_ac;#endif    tulip_regfile_t tulip_csrs;    u_int32_t tulip_flags;#define	TULIP_WANTSETUP		0x00000001#define	TULIP_WANTHASHPERFECT	0x00000002#define	TULIP_WANTHASHONLY	0x00000004#define	TULIP_DOINGSETUP	0x00000008#define	TULIP_PRINTMEDIA	0x00000010#define	TULIP_TXPROBE_ACTIVE	0x00000020#define	TULIP_ALLMULTI		0x00000040#define	TULIP_WANTRXACT		0x00000080#define	TULIP_RXACT		0x00000100#define	TULIP_INRESET		0x00000200#define	TULIP_NEEDRESET		0x00000400#define	TULIP_SQETEST		0x00000800#define	TULIP_xxxxxx0		0x00001000#define	TULIP_xxxxxx1		0x00002000#define	TULIP_WANTTXSTART	0x00004000#define	TULIP_NEWTXTHRESH	0x00008000#define	TULIP_NOAUTOSENSE	0x00010000#define	TULIP_PRINTLINKUP	0x00020000#define	TULIP_LINKUP		0x00040000#define	TULIP_RXBUFSLOW		0x00080000#define	TULIP_NOMESSAGES	0x00100000#define	TULIP_SYSTEMERROR	0x00200000#define	TULIP_TIMEOUTPENDING	0x00400000#define	TULIP_xxxxxx2		0x00800000#define	TULIP_TRYNWAY		0x01000000#define	TULIP_DIDNWAY		0x02000000#define	TULIP_RXIGNORE		0x04000000#define	TULIP_PROBE1STPASS	0x08000000#define	TULIP_DEVICEPROBE	0x10000000#define	TULIP_PROMISC		0x20000000#define	TULIP_HASHONLY		0x40000000#define	TULIP_xxxxxx3		0x80000000    /* only 4 bits left! */    u_int32_t tulip_features;	/* static bits indicating features of chip */#define	TULIP_HAVE_GPR		0x00000001	/* have gp register (140[A]) */#define	TULIP_HAVE_RXBADOVRFLW	0x00000002	/* RX corrupts on overflow */#define	TULIP_HAVE_POWERMGMT	0x00000004	/* Snooze/sleep modes */#define	TULIP_HAVE_MII		0x00000008	/* Some medium on MII */#define	TULIP_HAVE_SIANWAY	0x00000010	/* SIA does NWAY */#define	TULIP_HAVE_DUALSENSE	0x00000020	/* SIA senses both AUI & TP */#define	TULIP_HAVE_SIAGP	0x00000040	/* SIA has a GP port */#define	TULIP_HAVE_BROKEN_HASH	0x00000080	/* Broken Multicast Hash */#define	TULIP_HAVE_ISVSROM	0x00000100	/* uses ISV SROM Format */#define	TULIP_HAVE_BASEROM	0x00000200	/* Board ROM can be cloned */#define	TULIP_HAVE_SLAVEDROM	0x00000400	/* Board ROM cloned */#define	TULIP_HAVE_SLAVEDINTR	0x00000800	/* Board slaved interrupt */#define	TULIP_HAVE_SHAREDINTR	0x00001000	/* Board shares interrupts */#define	TULIP_HAVE_OKROM	0x00002000	/* ROM was recognized */#define	TULIP_HAVE_NOMEDIA	0x00004000	/* did not detect any media */#define	TULIP_HAVE_STOREFWD	0x00008000	/* have CMD_STOREFWD */#define	TULIP_HAVE_SIA100	0x00010000	/* has LS100 in SIA status */#define	TULIP_HAVE_OKSROM	0x00020000	/* SROM CRC is OK */    u_int32_t tulip_intrmask;	/* our copy of csr_intr */    u_int32_t tulip_cmdmode;	/* our copy of csr_cmdmode */    u_int32_t tulip_last_system_error : 3;	/* last system error (only value is TULIP_SYSTEMERROR is also set) */    u_int32_t tulip_txtimer : 2;	/* transmission timer */    u_int32_t tulip_system_errors;	/* number of system errors encountered */    u_int32_t tulip_statusbits;	/* status bits from CSR5 that may need to be printed */    tulip_media_info_t *tulip_mediums[TULIP_MEDIA_MAX];	/* indexes into mediainfo */    tulip_media_t tulip_media;			/* current media type */    u_int32_t tulip_abilities;	/* remote system's abiltities (as defined in IEEE 802.3u) */    u_int8_t tulip_revinfo;			/* revision of chip */    u_int8_t tulip_phyaddr;			/* 0..31 -- address of current phy */    u_int8_t tulip_gpinit;			/* active pins on 21140 */    u_int8_t tulip_gpdata;			/* default gpdata for 21140 */    struct {	u_int8_t probe_count;			/* count of probe operations */	int32_t probe_timeout;			/* time in ms of probe timeout */	tulip_probe_state_t probe_state;	/* current media probe state */	tulip_media_t probe_media;		/* current media being probed */	u_int32_t probe_mediamask;		/* medias checked */	u_int32_t probe_passes;			/* times autosense failed */	u_int32_t probe_txprobes;		/* txprobes attempted */    } tulip_probe;#define	tulip_probe_count	tulip_probe.probe_count#define	tulip_probe_timeout	tulip_probe.probe_timeout#define	tulip_probe_state	tulip_probe.probe_state#define	tulip_probe_media	tulip_probe.probe_media#define	tulip_probe_mediamask	tulip_probe.probe_mediamask#define	tulip_probe_passes	tulip_probe.probe_passes    tulip_chipid_t tulip_chipid;		/* type of chip we are using */    const tulip_boardsw_t *tulip_boardsw;	/* board/chip characteristics */    tulip_softc_t *tulip_slaves;		/* slaved devices (ZX3xx) */#if defined(TULIP_DEBUG)    /*     * Debugging/Statistical information     */    struct {	tulip_media_t dbg_last_media;	u_int32_t dbg_intrs;	u_int32_t dbg_media_probes;	u_int32_t dbg_txprobe_nocarr;	u_int32_t dbg_txprobe_exccoll;	u_int32_t dbg_link_downed;	u_int32_t dbg_link_suspected;	u_int32_t dbg_link_intrs;	u_int32_t dbg_link_pollintrs;	u_int32_t dbg_link_failures;	u_int32_t dbg_nway_starts;	u_int32_t dbg_nway_failures;	u_int16_t dbg_phyregs[32][4];	u_int32_t dbg_rxlowbufs;	u_int32_t dbg_rxintrs;	u_int32_t dbg_last_rxintrs;	u_int32_t dbg_high_rxintrs_hz;	u_int32_t dbg_txprobes_ok[TULIP_MEDIA_MAX];	u_int32_t dbg_txprobes_failed[TULIP_MEDIA_MAX];	u_int32_t dbg_events[TULIP_MEDIAPOLL_MAX];	u_int32_t dbg_rxpktsperintr[TULIP_RXDESCS];    } tulip_dbg;#endif#if defined(TULIP_PERFSTATS)#define	TULIP_PERF_CURRENT	0#define	TULIP_PERF_PREVIOUS	1#define	TULIP_PERF_TOTAL	2#define	TULIP_PERF_MAX		3    struct tulip_perfstats {	u_quad_t perf_intr_cycles;	u_quad_t perf_ifstart_cycles;	u_quad_t perf_ifstart_one_cycles;	u_quad_t perf_ifioctl_cycles;	u_quad_t perf_ifwatchdog_cycles;	u_quad_t perf_timeout_cycles;	u_quad_t perf_txput_cycles;	u_quad_t perf_txintr_cycles;	u_quad_t perf_rxintr_cycles;	u_quad_t perf_rxget_cycles;	unsigned perf_intr;	unsigned perf_ifstart;	unsigned perf_ifstart_one;	unsigned perf_ifioctl;	unsigned perf_ifwatchdog;	unsigned perf_timeout;	unsigned perf_txput;	unsigned perf_txintr;	unsigned perf_rxintr;	unsigned perf_rxget;    } tulip_perfstats[TULIP_PERF_MAX];#define	tulip_curperfstats		tulip_perfstats[TULIP_PERF_CURRENT]#endif    struct ifqueue tulip_txq;    struct ifqueue tulip_rxq;    tulip_dot3_stats_t tulip_dot3stats;    tulip_ringinfo_t tulip_rxinfo;    tulip_ringinfo_t tulip_txinfo;    tulip_media_info_t tulip_mediainfo[10];    /*     * The setup buffers for sending the setup frame to the chip.     * one is the one being sent while the other is the one being     * filled.     */    u_int32_t tulip_setupbuf[192/sizeof(u_int32_t)];    u_int32_t tulip_setupdata[192/sizeof(u_int32_t)];    char tulip_boardid[16];		/* buffer for board ID */    u_int8_t tulip_rombuf[128];#if defined(__NetBSD__)    struct device *tulip_pci_busno;	/* needed for multiport boards */#else    u_int8_t tulip_pci_busno;		/* needed for multiport boards */#endif    u_int8_t tulip_pci_devno;		/* needed for multiport boards */    u_int8_t tulip_connidx;    tulip_srom_connection_t tulip_conntype;#ifdef __mips    u_int8_t pad0[32];#endif    /*     * These areas are accessed by DMA.  Do not allow adjacent     * cache line accesses to trash them     */    tulip_desc_t tulip_rxdescs[TULIP_RXDESCS];    tulip_desc_t tulip_txdescs[TULIP_TXDESCS];#ifdef __mips    u_int8_t pad1[32];#endif#if defined(__NetBSD__) && NRND > 0    rndsource_element_t    tulip_rndsource;#endif};#if defined(IFM_ETHER)#define	TULIP_DO_AUTOSENSE(sc)	(IFM_SUBTYPE((sc)->tulip_ifmedia.ifm_media) == IFM_AUTO)#else#define	TULIP_DO_AUTOSENSE(sc)	(((sc)->tulip_flags & TULIP_NOAUTOSENSE) == 0)#endif#if defined(TULIP_HDR_DATA)static const char * const tulip_chipdescs[] = {     "21040 [10Mb/s]",#if defined(TULIP_EISA)    "DE425 [10Mb/s]",#else    NULL,#endif    "21041 [10Mb/s]",    "21140 [10-100Mb/s]",    "21140A [10-100Mb/s]",    "21142 [10-100Mb/s]",    "21143 [10-100Mb/s]",};static const char * const tulip_mediums[] = {    "unknown",			/* TULIP_MEDIA_UNKNOWN */    "10baseT",			/* TULIP_MEDIA_10BASET */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -