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

📄 mb86960end.h

📁 IXP425的BSP代码
💻 H
字号:
/* mb86960End.h -  Fujitsu MB86960 Ethernet Controller interface header *//* Copyright 1984-2001 Wind River Systems, Inc. *//*modification history--------------------01b,20sep01,dat  Removing ANSI errors for diab compiler01a,27feb99,db  created from target/h/drv/netif/if_fn.h*/#ifndef __INCmb86960h#define __INCmb86960h#ifdef __cplusplusextern "C" {#endif/* includes */#include "end.h"#include "netinet/if_ether.h"/* defines */#define FN_DEV_NAME	"fn"#define FN_DEV_NAME_LEN	3#define ENET_ADDR_LEN	6/* Pre-defined interrupt masks */#define NORM_INTRMASK   	(DLCR3_RX_PKT | DLCR3_OVR_FLO) #define NO_RX_INTRMASK  	(DLCR3_OVR_FLO)#define MB86960_CRC_POLY	0xedb88320/* Start transmission */#define KICK_TRANSMIT		(BMR10_TMST | BMR11_MASK16 | BMR11_RST_TX16 \				 | BMR11_OPT_16_COLL | 0x0100) /* Configuration items */#define MB86960_SPEED       10000000	/* 10BASE-T speed in bits/sec *//* SECTION: Data Structures */typedef struct rx_hdr                   /* received packet header */    {    unsigned short status;              /* only upper byte used */    unsigned short len;                 /* pkt length in little endian order */    } MB86960_RX_HDR;#define MB86960_RX_HDR_SIZ  sizeof(MB86960_RX_HDR)#define MB86960_DATA_OFFSET (sizeof(u_short) + MB86960_RX_HDR_SIZ) typedef struct rx_frame     {    u_short pad1;    MB86960_RX_HDR  rxHdr;		/* header provided by chip */    struct  ether_header enetHdr;        /* the Ethernet header */    char data [ETHERMTU];               /* the data field */    } MB86960_RX_FRAME;#define MB86960_BUFSIZ (sizeof(struct rx_frame))#define MB86960_FRAME_DATA_ADDR_GET(pFrame) \	(pFrame = ((char *)(pFrame) + sizeof(UINT16) \		+ sizeof(MB86960_RX_HDR)))/* The definition of the driver control structure */typedef struct mb86960_end_ctrl    {    END_OBJ     end;            /* The class we inherit from. */    int         unit;           /* unit number */    int         vector;         /* interrupt vector */    long        flags;          /* Our local flags. */    char *      devBaseAddr;    /* Base address of the device register set */    SEM_ID	txSem;		/* transmitter semaphore */    UCHAR       enetAddr[6];    /* ethernet address */    CL_POOL_ID  pClPoolId;      /* Cluster Pool Id */    } MB86960_END_CTRL;#define MB86960_END_CTRL_SIZE	sizeof(MB86960_END_CTRL)/* SECTION: Register Addresses  *//* NICE registers, defined as offsets from base addr */    /* The statically mapped registers.  This group of registers is     * always available to the CPU.     * This first group are the data link control registers 0-7.     */#define NICE_STATUS     0x02            /* DLC0,1: Tx and Rx status */#define NICE_INTRMASK   0x06            /* DLC2,3: Tx and Rx intr masks */#define NICE_MODE       0x0a            /* DLC4,5: Tx and Rx modes */#define NICE_CONFIG     0x0e            /* DLC6,7: configuration bits */    /* The selectable mapped registers.  These groups can be mapped in     * or out of the overall register set.  The selection of which group     * is currently mapped in is done via control register 2 (DLCR7) in     * the statically mapped register group above.     */    /* the secondary data link control regs */#define NICE_ADDR1      0x12            /* DLC8,9: node addr high word */#define NICE_ADDR2      0x16            /* DLC10,11: node addr mid word */#define NICE_ADDR3      0x1a            /* DLC12,13: node addr low word */#define NICE_TDR        0x1e            /* DLC14,15: time domain counter */    /* the hash table registers */#define NICE_HASH1      0x12#define NICE_HASH2      0x16#define NICE_HASH3      0x1a#define NICE_HASH4      0x1e    /* the buffer memory registers */#define NICE_PORT       0x12            /* BMR8: access port to buffer */#define NICE_TRANSMIT   0x16            /* BMR10,11: Tx cmd & coll ctrl */#define NICE_DMA        0x1a            /* BMR12,13: DMA control */#define NICE_STUFF      0x1e/* SECTION: bit defines for the device registers and receive header status *//* The status field of the receive header (RX_HDR above) */#define RX_HDR_STAT_BIT_7       0x8000      /* unused; should read as 0 */#define RX_HDR_STAT_BIT_6       0x4000      /* unused; should read as 0 */#define RX_HDR_STAT_GOOD        0x2000      /* packet is good */#define RX_HDR_STAT_RMT_RST     0x1000      /* packet type = 0x0900 */#define RX_HDR_STAT_SHRT_ERR    0x0800      /* short packet error */#define RX_HDR_STAT_ALGN_ERR    0x0400      /* alignment error */#define RX_HDR_STAT_CRC_ERR     0x0200      /* CRC error */#define RX_HDR_STAT_OVR_FLO     0x0100      /* overflow error */    /* Note that the short error bit has been observed to be set sporadically     * and is therefore not usable.  The overflow bit should never be set,     * since the receiver should not be giving us incomplete packets!  The     * lower byte of the status field is currently unused, but has been seen     * to have various bits set.  It is probably wise to simply mask this     * byte off to avoid any confusion.     *//* DLCR0,1 -- the receive and transmit status register */#define DLCR0_TX_DONE       0x8000      /* transmit OK */#define DLCR0_NET_BSY       0x4000      /* network is busy, carrier present */#define DLCR0_TX_RX         0x2000      /* transmit received good */#define DLCR0_CR_LOST       0x1000      /* short packet */#define DLCR0_BIT_3         0x0800      /* unused bit; write 0 */#define DLCR0_COL           0x0400      /* a collision occurred */#define DLCR0_16_COL        0x0200      /* 16 collisions occurred */#define DLCR0_BUS_WR_ERR    0x0100      /* buss write error */#define DLCR1_RX_PKT        0x0080      /* received packet ready */#define DLCR1_BUS_RD_ERR    0x0040      /* buss read error */#define DLCR1_DMA_EOP       0x0020      /* DMA end operation interrupt status */#define DLCR1_RMT_RST       0x0010      /* received a remote reset packet */#define DLCR1_SHRT_ERR      0x0008      /* short packet error */#define DLCR1_ALGN_ERR      0x0004      /* alignment error */#define DLCR1_CRC_ERR       0x0002      /* CRC error, CRC does not match FCS */#define DLCR1_OVR_FLO       0x0001      /* overflow, no space available *//* DLCR2,3 -- interrupt masks for receive and transmit status register */#define DLCR2_TX_DONE       0x8000      /* transmit OK intr mask */#define DLCR2_BIT_6         0x4000      /* unused; write 0 */#define DLCR2_TX_RX         0x2000      /* transmission received good mask */#define DLCR2_BIT_4         0x1000      /* unused; write 0 */#define DLCR2_BIT_3         0x0800      /* unused; write 0 */#define DLCR2_COL           0x0400      /* collision intr mask */#define DLCR2_16_COL        0x0200      /* 16 collisions intr mask */#define DLCR2_BUS_WR_ERR    0x0100      /* buss write error intr mask */#define DLCR3_RX_PKT        0x0080      /* received packet ready intr mask */#define DLCR3_BUS_RD_ERR    0x0040      /* buss read error intr mask */#define DLCR3_DMA_EOP       0x0020      /* DMA end operation intr mask */#define DLCR3_RMT_RST       0x0010      /* remote reset intr mask */#define DLCR3_SHRT_ERR      0x0008      /* short packet error intr mask */#define DLCR3_ALGN_ERR      0x0004      /* alignment error intr mask */#define DLCR3_CRC_ERR       0x0002      /* CRC error intr mask */#define DLCR3_OVR_FLO       0x0001      /* overflow error intr mask *//* DLCR4,5 -- receiver and transmitter modes register */#define DLCR4_COL_CTR       0xf000      /* collision counter, 4 bits */#define DLCR4_BIT_3         0x0800      /* unused; write 0 */#define DLCR4_CNTRL         0x0400      /* drives the CNTRL pin; pin 95 */#define DLCR4_LBC           0x0200      /* endec loopback; 0 selects */#define DLCR4_TX_NO_DEFER   0x0100      /* disable carrier detect on Tx */#define DLCR5_BIT_7         0x0080      /* unused; write 0 */#define DLCR5_BUF_EMPTY     0x0040      /* buffer empty */#define DLCR5_ACPT_BAD      0x0020      /* accept bad packets */#define DLCR5_SHRT_ADD      0x0010      /* use short address, 5 bytes */#define DLCR5_ENA_SHRT_PKT  0x0008      /* enable receipt of short packets */#define DLCR5_BIT_2         0x0004      /* unused; write 1 */#define DLCR5_AF1           0x0002      /* addr filter mode, bit 1 */#define DLCR5_AF0           0x0001      /* addr filter mode, bit 0 *//* DLCR6,7 -- configuration register */#define DLCR6_DISABLE_DLC   0x8000      /* disable data link controller */#define DLCR6_BIT_6         0x4000      /* unused; write 1 */#define DLCR6_SYS_BUS       0x2000      /* selects width of system bus */#define DLCR6_SYS_BUS_8     0x2000      /*   system bus is 8 bit */#define DLCR6_SYS_BUS_16    0x0000      /*   system bus is 16 bit */#define DLCR6_BUF_BUS       0x1000      /* selects width of buffer bus */#define DLCR6_BUF_BUS_8     0x1000      /*   buffer bus is 8 bits */#define DLCR6_BUF_BUS_16    0x0000      /*   buffer bus is 16 bits */#define DLCR6_TBS           0x0c00      /* selects Tx buffer size, 2 bits */#define DLCR6_TBS_2KB       0x0000      /*   Tx buffer size is 2 KB */#define DLCR6_TBS_4KB       0x0400      /*   Tx buffer size is 4 KB */#define DLCR6_TBS_8KB       0x0800      /*   Tx buffer size is 8 KB */#define DLCR6_TBS_16KB      0x0c00      /*   Tx buffer size is 16 KB */#define DLCR6_BS            0x0300      /* selects SRAM buffer size, 2 bits */#define DLCR6_BS_8KB        0x0000      /*   SRAM buffer size is 8 KB */#define DLCR6_BS_16KB       0x0100      /*   SRAM buffer size is 16 KB */#define DLCR6_BS_32KB       0x0200      /*   SRAM buffer size is 32 KB */#define DLCR6_BS_64KB       0x0300      /*   SRAM buffer size is 64 KB */#define DLCR7_CNF           0x00c0      /* selects chip config, 2 bits */#define DLCR7_CNF_NICE      0x0000      /*   normal NICE mode */#define DLCR7_CNF_MONITOR   0x0040      /*   add monitor function */#define DLCR7_CNF_BYPASS    0x0080      /*   bypass ENDEC */#define DLCR7_CNF_TEST      0x00c0      /*   test ENDEC */#define DLCR7_PWRDN         0x0020      /* selects standby power  mode */#define DLCR7_PWRDN_ON      0x0000      /*   standby mode on */#define DLCR7_PWRDN_OFF     0x0020      /*   standby mode off */#define DLCR7_BIT_4         0x0010      /* unused; write 1 */#define DLCR7_REG_BNK       0x000c      /* selects register bank, 2 bits */#define DLCR7_REG_BNK_DLC   0x0000      /*   DLC group 00 is mapped in */#define DLCR7_REG_BNK_HASH  0x0004      /*   HASH group 01 is mapped in */#define DLCR7_REG_BNK_BMR   0x000c      /*   BMR group 10 is mapped in */#define DLCR7_EOP_POL       0x0002      /* selects polarity of EOP pin */#define DLCR7_ENDIAN        0x0001      /* selects endian mode of system bus */#define DLCR7_ENDIAN_LITTLE 0x0000      /*   endian mode is little */#define DLCR7_ENDIAN_BIG    0x0001      /*   endian mode is big *//* * DLCR8-DLCR13 are the node ID registers when register group 00 is mapped in. * There are no bit defines for these registers.  Given an Ethernet address * of 11:22:33:44:55:66, the following shows the relationship to these * registers. *   dlcr8  = 0x11; *   dlcr9  = 0x22; *       ..... *   dlcr13 = 0x66; *//*  * DLCR14,DLCR15 are the time domain reflectometer registers when register * group 00 is mapped in.  There are no bit defines for these registers. * R14 holds the LSB, R15 the MSB, both are read only. *//* BMR8 -- buffer memory port.  There are no bit defines for this register. *//* BMR10,11 -- transmit collision control and start command register */#define BMR10_TMST          0x8000      /* transmit start command */#define BMR10_PKTS          0x7f00      /* number of packets to transmit */#define BMR11_BIT7          0x0080      /* unused, write with 0 */#define BMR11_BIT6          0x0040      /* unused, write with 0 */#define BMR11_BIT5          0x0020      /* unused, write with 0 */#define BMR11_BIT4          0x0010      /* unused, write with 0 */#define BMR11_BIT3          0x0008      /* unused, write with 0 */#define BMR11_MASK16        0x0004      /* something to do with 16 colls */#define BMR11_RST_TX16      0x0002      /*    "  */#define BMR11_OPT_16_COLL   0x0001      /*    "  *//* BMR12,13 -- DMA control register */#define BMR12_BIT7          0x8000      /* unused, write with 0 */#define BMR12_BIT6          0x4000      /* unused, write with 0 */#define BMR12_BIT5          0x2000      /* unused, write with 0 */#define BMR12_BIT4          0x1000      /* unused, write with 0 */#define BMR12_BIT3          0x0800      /* unused, write with 0 */#define BMR12_BIT2          0x0400      /* unused, write with 0 */#define BMR12_DMA_RENA      0x0200      /* DMA read enable */#define BMR12_DMA_TENA      0x0100      /* DMA write enable *//* BMR14 -- to be done *//* BMR15 -- currently no function */#ifdef __cplusplus}#endif#endif /* __INCmb86960h */

⌨️ 快捷键说明

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