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

📄 motfecend.h

📁 其中包括88796网卡驱动、mbmflash驱动、i2c接口的eeprom驱动、oki的ml9620can网卡驱动、扩展的串口驱动源代码。适用于moto的ppc8××系列在vxworks环境下。
💻 H
📖 第 1 页 / 共 3 页
字号:
#define MOT_FEC_MII_DATA_OFF    0x0e80  /* MII data register */
#define MOT_FEC_MII_SPEED_OFF   0x0e84  /* MII speed register */
#define MOT_FEC_CSR_REG_OFFSET  0x0e00

/* Control/Status Registers (CSR) bit definitions */

#define MOT_FEC_RX_START_MSK    0xfffffffc      /* quad-word alignment */
                                                /* required for rx BDs */

#define MOT_FEC_TX_START_MSK    0xfffffffc      /* quad-word alignment */
                                                /* required for tx BDs */
/* Ethernet CSR bit definitions */

#define MOT_FEC_ETH_PINMUX	0x00000004	/* select FEC for port D pins */
#define MOT_FEC_ETH_EN          0x00000002      /* enable Ethernet operation */
#define MOT_FEC_ETH_DIS         0x00000000      /* disable Ethernet operation */
#define MOT_FEC_ETH_RES         0x00000001      /* reset the FEC */
#define MOT_FEC_CTRL_MASK       0x00000007      /* FEC control register mask */

/*
 * interrupt bits definitions: these are common to both the
 * mask and the event register.
 */

#define MOT_FEC_EVENT_HB        0x80000000      /* heartbeat error */
#define MOT_FEC_EVENT_BABR      0x40000000      /* babbling rx error */
#define MOT_FEC_EVENT_BABT      0x20000000      /* babbling tx error */
#define MOT_FEC_EVENT_GRA       0x10000000      /* graceful stop complete */
#define MOT_FEC_EVENT_TXF       0x08000000      /* tx frame */
#define MOT_FEC_EVENT_TXB       0x04000000      /* tx buffer */
#define MOT_FEC_EVENT_RXF       0x02000000      /* rx frame */
#define MOT_FEC_EVENT_RXB       0x01000000      /* rx buffer */
#define MOT_FEC_EVENT_MII       0x00800000      /* MII transfer */
#define MOT_FEC_EVENT_BERR      0x00400000      /* U-bus access error */
#define MOT_FEC_EVENT_MSK       0xffc00000      /* clear all interrupts */
#define MOT_FEC_MASK_ALL        MOT_FEC_EVENT_MSK    /* mask all interrupts */

/* bit masks for the interrupt level/vector CSR */

#define MOT_FEC_LVL_MSK         0xe0000000      /* intr level */
#define MOT_FEC_TYPE_MSK        0x0000000c      /* highest pending intr */
#define MOT_FEC_VEC_MSK         0xe000000c      /* this register mask */
#define MOT_FEC_RES_MSK         0x1ffffff3      /* reserved bits */
#define MOT_FEC_LVL_SHIFT       0x1d            /* intr level bits location */

/* transmit and receive active registers definitions */

#define MOT_FEC_TX_ACT          0x01000000      /* tx active bit */
#define MOT_FEC_RX_ACT          0x01000000      /* rx active bit */

/* MII management frame CSRs */

#define MOT_FEC_MII_ST          0x40000000      /* start of frame delimiter */
#define MOT_FEC_MII_OP_RD       0x20000000      /* perform a read operation */
#define MOT_FEC_MII_OP_WR       0x10000000      /* perform a write operation */
#define MOT_FEC_MII_ADDR_MSK    0x0f800000      /* PHY address field mask */
#define MOT_FEC_MII_REG_MSK     0x007c0000      /* PHY register field mask */
#define MOT_FEC_MII_TA          0x00020000      /* turnaround */
#define MOT_FEC_MII_DATA_MSK    0x0000ffff      /* PHY data field */
#define MOT_FEC_MII_RA_SHIFT    0x12            /* mii reg address bits */
#define MOT_FEC_MII_PA_SHIFT    0x17            /* mii PHY address bits */

#define MOT_FEC_MII_PRE_DIS     0x00000080      /* desable preamble */
#define MOT_FEC_MII_SPEED_25    0x00000005      /* recommended for 25Mhz CPU */
#define MOT_FEC_MII_SPEED_33    0x00000007      /* recommended for 33Mhz CPU */
#define MOT_FEC_MII_SPEED_40    0x00000008      /* recommended for 40Mhz CPU */
#define MOT_FEC_MII_SPEED_50    0x0000000a      /* recommended for 50Mhz CPU */
#define MOT_FEC_MII_SPEED_SHIFT	1		/* MII_SPEED bits location */
#define MOT_FEC_MII_CLOCK_MAX	2500000		/* max freq of MII clock (Hz) */
#define MOT_FEC_MII_MAN_DIS     0x00000000      /* disable the MII management */
                                                /* interface */
#define MOT_FEC_MII_SPEED_MSK   0xffffff81      /* speed field mask */

/* FIFO transmit and receive CSRs definitions */

#define MOT_FEC_FIFO_MSK        0x000003ff      /* FIFO rx/tx/bound mask */

/* SDMA function code CSR */

#define MOT_FEC_SDMA_DATA_BE    0x60000000      /* big-endian byte-ordering */
                                                /* for SDMA data transfer */

#define MOT_FEC_SDMA_DATA_PPC   0x20000000      /* PPC byte-ordering */
                                                /* for SDMA data transfer */

#define MOT_FEC_SDMA_DATA_RES   0x00000000      /* reserved value */

#define MOT_FEC_SDMA_BD_BE      0x18000000      /* big-endian byte-ordering */
                                                /* for SDMA BDs transfer */

#define MOT_FEC_SDMA_BD_PPC     0x08000000      /* PPC byte-ordering */
                                                /* for SDMA BDs transfer */


#define MOT_FEC_SDMA_BD_RES     0x00000000      /* reserved value */
#define MOT_FEC_SDMA_FUNC_0     0x00000000      /* no function code */

/* receive control/hash registers bit definitions */

#define MOT_FEC_RX_CTRL_PROM    0x00000008      /* promiscous mode */
#define MOT_FEC_RX_CTRL_MII     0x00000004      /* select MII interface */
#define MOT_FEC_RX_CTRL_DRT     0x00000002      /* disable rx on transmit */
#define MOT_FEC_RX_CTRL_LOOP    0x00000001      /* loopback mode */
#define MOT_FEC_RX_FR_MSK       0x000007ff      /* rx frame length mask */


/* transmit control register bit definitions */

#define MOT_FEC_TX_CTRL_FD      0x00000004      /* enable full duplex mode */
#define MOT_FEC_TX_CTRL_HBC     0x00000002      /* HB check is performed */
#define MOT_FEC_TX_CTRL_GRA     0x00000001      /* issue a graceful tx stop */

/* rx/tx buffer descriptors definitions */

#define MOT_FEC_RBD_SZ          8       /* RBD size in byte */
#define MOT_FEC_TBD_SZ          8       /* TBD size in byte */
#define MOT_FEC_TBD_MIN         6       /* min number of TBDs */
#define MOT_FEC_RBD_MIN         4       /* min number of RBDs */
#define MOT_FEC_TBD_POLL_NUM    1       /* one TBD for poll operation */
#define CL_OVERHEAD             4       /* prepended cluster overhead */
#define CL_ALIGNMENT            4       /* cluster required alignment */
#define MBLK_ALIGNMENT          4       /* mBlks required alignment */
#define MOT_FEC_BD_ALIGN        0x10    /* required alignment for RBDs */
#define MOT_FEC_MAX_PCK_SZ      (ETHERMTU + SIZEOF_ETHERHEADER          \
                                 + ETHER_CRC_LEN)

#define MOT_FEC_BD_STAT_OFF     0       /* offset of the status word */
#define MOT_FEC_BD_LEN_OFF      2       /* offset of the data length word */
#define MOT_FEC_BD_ADDR_OFF     4       /* offset of the data pointer word */

/* TBD bits definitions */

#define MOT_FEC_TBD_RDY         0x8000          /* ready for transmission */
#define MOT_FEC_TBD_TO1         0x4000          /* transmit ownership bit 1 */
#define MOT_FEC_TBD_WRAP        0x2000          /* look at CSR5 for next bd */
#define MOT_FEC_TBD_TO2         0x1000          /* transmit ownership bit 2 */
#define MOT_FEC_TBD_LAST        0x0800          /* last bd in this frame */
#define MOT_FEC_TBD_CRC         0x0400          /* transmit the CRC sequence */
#define MOT_FEC_TBD_DEF         0x0200          /* deferred transmission */
#define MOT_FEC_TBD_HB          0x0100          /* heartbeat error */
#define MOT_FEC_TBD_LC          0x0080          /* late collision */
#define MOT_FEC_TBD_RL          0x0040          /* retransmission limit */
#define MOT_FEC_TBD_UN          0x0002          /* underrun error */
#define MOT_FEC_TBD_CSL         0x0001          /* carrier sense lost */
#define MOT_FEC_TBD_RC_MASK     0x003c          /* retransmission count mask */

/* RBD bits definitions */

#define MOT_FEC_RBD_EMPTY       0x8000          /* ready for reception */
#define MOT_FEC_RBD_RO1         0x4000          /* receive ownership bit 1 */
#define MOT_FEC_RBD_WRAP        0x2000          /* look at CSR4 for next bd */
#define MOT_FEC_RBD_RO2         0x1000          /* receive ownership bit 2 */
#define MOT_FEC_RBD_LAST        0x0800          /* last bd in this frame */
#define MOT_FEC_RBD_RES1        0x0400          /* reserved bit 1 */
#define MOT_FEC_RBD_RES2        0x0200          /* reserved bit 2 */
#define MOT_FEC_RBD_MISS        0x0100          /* address recognition miss */
#define MOT_FEC_RBD_BC          0x0080          /* broadcast frame */
#define MOT_FEC_RBD_MC          0x0040          /* multicast frame */
#define MOT_FEC_RBD_LG          0x0020          /* frame length violation */
#define MOT_FEC_RBD_NO          0x0010          /* nonoctet aligned frame */
#define MOT_FEC_RBD_SH          0x0008          /* short frame error */
                                                /* not supported by the 860T */
#define MOT_FEC_RBD_CRC         0x0004          /* CRC error */
#define MOT_FEC_RBD_OV          0x0002          /* overrun error */
#define MOT_FEC_RBD_TR          0x0001          /* truncated frame (>2KB) */
#define MOT_FEC_RBD_ERR         (MOT_FEC_RBD_LG  |                      \
                                 MOT_FEC_RBD_NO  |                      \
                                 MOT_FEC_RBD_CRC |                      \
                                 MOT_FEC_RBD_OV  |                      \
                                 MOT_FEC_RBD_TR)

#define MOT_FEC_CRC_POLY	0x04c11db7	/* CRC polynomium: */
						/* x^32 + x^26 + x^23 + */
						/* x^22 + x^16 + x^12 + */
						/* x^11 + x^10 + x^8  + */
						/* x^7  + x^5  + x^4  + */
						/* x^2  + x^1  + x^0  + */

#define MOT_FEC_HASH_MASK	0x7c000000	/* bits 27-31 */
#define MOT_FEC_HASH_SHIFT	0x1a		/* to get the index */

/* defines related to the PHY device */

#define MOT_FEC_PHY_PRE_INIT	0x0001		/* PHY info initialized */
#define MOT_FEC_PHY_AUTO	0x0010		/* enable auto-negotiation */
#define MOT_FEC_PHY_TBL		0x0020		/* use negotiation table */
#define MOT_FEC_PHY_100		0x0040		/* PHY may use 100Mbit speed */
#define MOT_FEC_PHY_10		0x0080		/* PHY may use 10Mbit speed */
#define MOT_FEC_PHY_FD		0x0100		/* PHY may use full duplex */
#define MOT_FEC_PHY_HD		0x0200		/* PHY may use half duplex */
#define MOT_FEC_PHY_MAX_WAIT	0x400		/* max delay before */
#define MOT_FEC_PHY_NULL	0xff		/* PHY is not present */
#define MOT_FEC_PHY_DEF		0x0		/* PHY's logical address */

/* allowed PHY's speeds */

#define MOT_FEC_100MBS		100000000       /* bits per sec */
#define MOT_FEC_10MBS		10000000        /* bits per sec */

/*
 * user flags: full duplex mode, loopback mode, serial interface etc.
 * the user may configure some of this options according to his needs
 * by setting the related bits in the <userFlags> field of the load string.
 */

#define MOT_FEC_USR_PHY_NO_AN	0x00000001	/* do not auto-negotiate */
#define MOT_FEC_USR_PHY_TBL	0x00000002	/* use negotiation table */
#define MOT_FEC_USR_PHY_NO_FD	0x00000004	/* do not use full duplex */
#define MOT_FEC_USR_PHY_NO_100	0x00000008	/* do not use 100Mbit speed */
#define MOT_FEC_USR_PHY_NO_HD	0x00000010	/* do not use half duplex */
#define MOT_FEC_USR_PHY_NO_10	0x00000020	/* do not use 10Mbit speed */
#define MOT_FEC_USR_PHY_ISO	0x00000100	/* isolate a PHY */
#define MOT_FEC_USR_SER		0x00000200	/* 7-wire serial interface */
#define MOT_FEC_USR_LOOP	0x00000400	/* loopback mode */
						/* only use it for testing */
#define MOT_FEC_USR_HBC		0x00000080	/* perform heartbeat control */

#define MOT_FEC_TBD_OK		0x1		/* the TBD is a good one */
#define MOT_FEC_TBD_BUSY	0x2		/* the TBD has not been used */
#define MOT_FEC_TBD_ERROR	0x4		/* the TBD is errored */

#define PKT_TYPE_MULTI		0x1	/* packet with a multicast address */
#define PKT_TYPE_UNI		0x2	/* packet with a unicast address */
#define PKT_TYPE_NONE		0x4	/* address type is not meaningful */

#define BUF_TYPE_CL		0x1	/* this's a cluster pointer */
#define BUF_TYPE_MBLK		0x2	/* this's a mblk pointer */

⌨️ 快捷键说明

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