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

📄 fec.h

📁 U-boot源码 ARM7启动代码
💻 H
字号:
/* * fec.h -- Fast Ethernet Controller definitions * * Some definitions copied from commproc.h for MPC8xx: * MPC8xx Communication Processor Module. * Copyright (c) 1997 Dan Malek (dmalek@jlc.net) * * Add FEC Structure and definitions * Copyright (C) 2004-2007 Freescale Semiconductor, Inc. * TsiChung Liew (Tsi-Chung.Liew@freescale.com) * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#ifndef	fec_h#define	fec_h/* Buffer descriptors used FEC.*/typedef struct cpm_buf_desc {	ushort cbd_sc;		/* Status and Control */	ushort cbd_datlen;	/* Data length in buffer */	uint cbd_bufaddr;	/* Buffer address in host memory */} cbd_t;#define BD_SC_EMPTY	((ushort)0x8000)	/* Recieve is empty */#define BD_SC_READY	((ushort)0x8000)	/* Transmit is ready */#define BD_SC_WRAP	((ushort)0x2000)	/* Last buffer descriptor */#define BD_SC_INTRPT	((ushort)0x1000)	/* Interrupt on change */#define BD_SC_LAST	((ushort)0x0800)	/* Last buffer in frame */#define BD_SC_TC	((ushort)0x0400)	/* Transmit CRC */#define BD_SC_CM	((ushort)0x0200)	/* Continous mode */#define BD_SC_ID	((ushort)0x0100)	/* Rec'd too many idles */#define BD_SC_P		((ushort)0x0100)	/* xmt preamble */#define BD_SC_BR	((ushort)0x0020)	/* Break received */#define BD_SC_FR	((ushort)0x0010)	/* Framing error */#define BD_SC_PR	((ushort)0x0008)	/* Parity error */#define BD_SC_OV	((ushort)0x0002)	/* Overrun */#define BD_SC_CD	((ushort)0x0001)	/* Carrier Detect lost *//* Buffer descriptor control/status used by Ethernet receive.*/#define BD_ENET_RX_EMPTY	((ushort)0x8000)#define BD_ENET_RX_RO1		((ushort)0x4000)#define BD_ENET_RX_WRAP		((ushort)0x2000)#define BD_ENET_RX_INTR		((ushort)0x1000)#define BD_ENET_RX_RO2		BD_ENET_RX_INTR#define BD_ENET_RX_LAST		((ushort)0x0800)#define BD_ENET_RX_FIRST	((ushort)0x0400)#define BD_ENET_RX_MISS		((ushort)0x0100)#define BD_ENET_RX_BC		((ushort)0x0080)#define BD_ENET_RX_MC		((ushort)0x0040)#define BD_ENET_RX_LG		((ushort)0x0020)#define BD_ENET_RX_NO		((ushort)0x0010)#define BD_ENET_RX_SH		((ushort)0x0008)#define BD_ENET_RX_CR		((ushort)0x0004)#define BD_ENET_RX_OV		((ushort)0x0002)#define BD_ENET_RX_CL		((ushort)0x0001)#define BD_ENET_RX_TR		BD_ENET_RX_CL#define BD_ENET_RX_STATS	((ushort)0x013f)	/* All status bits *//* Buffer descriptor control/status used by Ethernet transmit.*/#define BD_ENET_TX_READY	((ushort)0x8000)#define BD_ENET_TX_PAD		((ushort)0x4000)#define BD_ENET_TX_TO1		BD_ENET_TX_PAD#define BD_ENET_TX_WRAP		((ushort)0x2000)#define BD_ENET_TX_INTR		((ushort)0x1000)#define BD_ENET_TX_TO2		BD_ENET_TX_INTR_#define BD_ENET_TX_LAST		((ushort)0x0800)#define BD_ENET_TX_TC		((ushort)0x0400)#define BD_ENET_TX_DEF		((ushort)0x0200)#define BD_ENET_TX_ABC		BD_ENET_TX_DEF#define BD_ENET_TX_HB		((ushort)0x0100)#define BD_ENET_TX_LC		((ushort)0x0080)#define BD_ENET_TX_RL		((ushort)0x0040)#define BD_ENET_TX_RCMASK	((ushort)0x003c)#define BD_ENET_TX_UN		((ushort)0x0002)#define BD_ENET_TX_CSL		((ushort)0x0001)#define BD_ENET_TX_STATS	((ushort)0x03ff)	/* All status bits */#ifdef CONFIG_MCFFEC/*********************************************************************** Fast Ethernet Controller (FEC)**********************************************************************//* FEC private information */struct fec_info_s {	int index;	u32 iobase;	u32 pinmux;	u32 miibase;	int phy_addr;	int dup_spd;	char *phy_name;	int phyname_init;	cbd_t *rxbd;		/* Rx BD */	cbd_t *txbd;		/* Tx BD */	uint rxIdx;	uint txIdx;	char *txbuf;	int initialized;};/* Register read/write struct */typedef struct fec {#ifdef CONFIG_M5272	u32 ecr;		/* 0x00 */	u32 eir;		/* 0x04 */	u32 eimr;		/* 0x08 */	u32 ivsr;		/* 0x0C */	u32 rdar;		/* 0x10 */	u32 tdar;		/* 0x14 */	u8 resv1[0x28];		/* 0x18 */	u32 mmfr;		/* 0x40 */	u32 mscr;		/* 0x44 */	u8 resv2[0x44];		/* 0x48 */	u32 frbr;		/* 0x8C */	u32 frsr;		/* 0x90 */	u8 resv3[0x10];		/* 0x94 */	u32 tfwr;		/* 0xA4 */	u32 res4;		/* 0xA8 */	u32 tfsr;		/* 0xAC */	u8 resv4[0x50];		/* 0xB0 */	u32 opd;		/* 0x100 - dummy  */	u32 rcr;		/* 0x104 */	u32 mibc;		/* 0x108 */	u8 resv5[0x38];		/* 0x10C */	u32 tcr;		/* 0x144 */	u8 resv6[0x270];	/* 0x148 */	u32 iaur;		/* 0x3B8 - dummy */	u32 ialr;		/* 0x3BC - dummy  */	u32 palr;		/* 0x3C0 */	u32 paur;		/* 0x3C4 */	u32 gaur;		/* 0x3C8 */	u32 galr;		/* 0x3CC */	u32 erdsr;		/* 0x3D0 */	u32 etdsr;		/* 0x3D4 */	u32 emrbr;		/* 0x3D8 */	u8 resv12[0x74];	/* 0x18C */#else	u8 resv0[0x4];	u32 eir;	u32 eimr;	u8 resv1[0x4];	u32 rdar;	u32 tdar;	u8 resv2[0xC];	u32 ecr;	u8 resv3[0x18];	u32 mmfr;	u32 mscr;	u8 resv4[0x1C];	u32 mibc;	u8 resv5[0x1C];	u32 rcr;	u8 resv6[0x3C];	u32 tcr;	u8 resv7[0x1C];	u32 palr;	u32 paur;	u32 opd;	u8 resv8[0x28];	u32 iaur;	u32 ialr;	u32 gaur;	u32 galr;	u8 resv9[0x1C];	u32 tfwr;	u8 resv10[0x4];	u32 frbr;	u32 frsr;	u8 resv11[0x2C];	u32 erdsr;	u32 etdsr;	u32 emrbr;	u8 resv12[0x74];#endif	u32 rmon_t_drop;	u32 rmon_t_packets;	u32 rmon_t_bc_pkt;	u32 rmon_t_mc_pkt;	u32 rmon_t_crc_align;	u32 rmon_t_undersize;	u32 rmon_t_oversize;	u32 rmon_t_frag;	u32 rmon_t_jab;	u32 rmon_t_col;	u32 rmon_t_p64;	u32 rmon_t_p65to127;	u32 rmon_t_p128to255;	u32 rmon_t_p256to511;	u32 rmon_t_p512to1023;	u32 rmon_t_p1024to2047;	u32 rmon_t_p_gte2048;	u32 rmon_t_octets;	u32 ieee_t_drop;	u32 ieee_t_frame_ok;	u32 ieee_t_1col;	u32 ieee_t_mcol;	u32 ieee_t_def;	u32 ieee_t_lcol;	u32 ieee_t_excol;	u32 ieee_t_macerr;	u32 ieee_t_cserr;	u32 ieee_t_sqe;	u32 ieee_t_fdxfc;	u32 ieee_t_octets_ok;	u8 resv13[0x8];	u32 rmon_r_drop;	u32 rmon_r_packets;	u32 rmon_r_bc_pkt;	u32 rmon_r_mc_pkt;	u32 rmon_r_crc_align;	u32 rmon_r_undersize;	u32 rmon_r_oversize;	u32 rmon_r_frag;	u32 rmon_r_jab;	u32 rmon_r_resvd_0;	u32 rmon_r_p64;	u32 rmon_r_p65to127;	u32 rmon_r_p128to255;	u32 rmon_r_p256to511;	u32 rmon_r_p512to1023;	u32 rmon_r_p1024to2047;	u32 rmon_r_p_gte2048;	u32 rmon_r_octets;	u32 ieee_r_drop;	u32 ieee_r_frame_ok;	u32 ieee_r_crc;	u32 ieee_r_align;	u32 ieee_r_macerr;	u32 ieee_r_fdxfc;	u32 ieee_r_octets_ok;} fec_t;/********************************************************************** Fast Ethernet Controller (FEC)*********************************************************************//* Bit definitions and macros for FEC_EIR */#define FEC_EIR_CLEAR_ALL	(0xFFF80000)#define FEC_EIR_HBERR		(0x80000000)#define FEC_EIR_BABR		(0x40000000)#define FEC_EIR_BABT		(0x20000000)#define FEC_EIR_GRA		(0x10000000)#define FEC_EIR_TXF		(0x08000000)#define FEC_EIR_TXB		(0x04000000)#define FEC_EIR_RXF		(0x02000000)#define FEC_EIR_RXB		(0x01000000)#define FEC_EIR_MII		(0x00800000)#define FEC_EIR_EBERR		(0x00400000)#define FEC_EIR_LC		(0x00200000)#define FEC_EIR_RL		(0x00100000)#define FEC_EIR_UN		(0x00080000)/* Bit definitions and macros for FEC_RDAR */#define FEC_RDAR_R_DES_ACTIVE	(0x01000000)/* Bit definitions and macros for FEC_TDAR */#define FEC_TDAR_X_DES_ACTIVE	(0x01000000)/* Bit definitions and macros for FEC_ECR */#define FEC_ECR_ETHER_EN	(0x00000002)#define FEC_ECR_RESET		(0x00000001)/* Bit definitions and macros for FEC_MMFR */#define FEC_MMFR_DATA(x)	(((x)&0xFFFF))#define FEC_MMFR_ST(x)		(((x)&0x03)<<30)#define FEC_MMFR_ST_01		(0x40000000)#define FEC_MMFR_OP_RD		(0x20000000)#define FEC_MMFR_OP_WR		(0x10000000)#define FEC_MMFR_PA(x)		(((x)&0x1F)<<23)#define FEC_MMFR_RA(x)		(((x)&0x1F)<<18)#define FEC_MMFR_TA(x)		(((x)&0x03)<<16)#define FEC_MMFR_TA_10		(0x00020000)/* Bit definitions and macros for FEC_MSCR */#define FEC_MSCR_DIS_PREAMBLE	(0x00000080)#define FEC_MSCR_MII_SPEED(x)	(((x)&0x3F)<<1)/* Bit definitions and macros for FEC_MIBC */#define FEC_MIBC_MIB_DISABLE	(0x80000000)#define FEC_MIBC_MIB_IDLE	(0x40000000)/* Bit definitions and macros for FEC_RCR */#define FEC_RCR_MAX_FL(x)	(((x)&0x7FF)<<16)#define FEC_RCR_FCE		(0x00000020)#define FEC_RCR_BC_REJ		(0x00000010)#define FEC_RCR_PROM		(0x00000008)#define FEC_RCR_MII_MODE	(0x00000004)#define FEC_RCR_DRT		(0x00000002)#define FEC_RCR_LOOP		(0x00000001)/* Bit definitions and macros for FEC_TCR */#define FEC_TCR_RFC_PAUSE	(0x00000010)#define FEC_TCR_TFC_PAUSE	(0x00000008)#define FEC_TCR_FDEN		(0x00000004)#define FEC_TCR_HBC		(0x00000002)#define FEC_TCR_GTS		(0x00000001)/* Bit definitions and macros for FEC_PAUR */#define FEC_PAUR_PADDR2(x)	(((x)&0xFFFF)<<16)#define FEC_PAUR_TYPE(x)	((x)&0xFFFF)/* Bit definitions and macros for FEC_OPD */#define FEC_OPD_PAUSE_DUR(x)	(((x)&0x0000FFFF)<<0)#define FEC_OPD_OPCODE(x)	(((x)&0x0000FFFF)<<16)/* Bit definitions and macros for FEC_TFWR */#define FEC_TFWR_X_WMRK(x)	((x)&0x03)#define FEC_TFWR_X_WMRK_64	(0x01)#define FEC_TFWR_X_WMRK_128	(0x02)#define FEC_TFWR_X_WMRK_192	(0x03)/* Bit definitions and macros for FEC_FRBR */#define FEC_FRBR_R_BOUND(x)	(((x)&0xFF)<<2)/* Bit definitions and macros for FEC_FRSR */#define FEC_FRSR_R_FSTART(x)	(((x)&0xFF)<<2)/* Bit definitions and macros for FEC_ERDSR */#define FEC_ERDSR_R_DES_START(x)	(((x)&0x3FFFFFFF)<<2)/* Bit definitions and macros for FEC_ETDSR */#define FEC_ETDSR_X_DES_START(x)	(((x)&0x3FFFFFFF)<<2)/* Bit definitions and macros for FEC_EMRBR */#define FEC_EMRBR_R_BUF_SIZE(x)		(((x)&0x7F)<<4)#define	FEC_RESET_DELAY		100#define FEC_RX_TOUT		100#endif				/* CONFIG_MCFFEC */#endif				/* fec_h */

⌨️ 快捷键说明

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