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

📄 emac_sl2312.h

📁 某个ARM9板子的实际bootloader 对裁剪
💻 H
📖 第 1 页 / 共 3 页
字号:
/***************************************************************************** Copyright  Storlink Corp 2005.  All rights reserved.                *--------------------------------------------------------------------------* Name			: emac_sl2312.h* Description	: *		Define for device driver of Storlink SL2312 Chip** History**	Date		Writer		Description*	-----------	-----------	-------------------------------------------------*	04/25/2005	Gary Chen	Create and implement from Jason's Redboot code*****************************************************************************/#ifndef _EMAC_SL2312_H#define _EMAC_SL2312_H#define EMAC_STATISTICS		1typedef unsigned int		dma_addr_t;#define ETHER_ADDR_LEN		6#define BIG_ENDIAN  		0/* define chip information */#define DRV_NAME			"SL2312"#define DRV_VERSION			"0.1.1"#define SL2312_DRIVER_NAME  DRV_NAME " Fast Ethernet driver " DRV_VERSION#define TX_DESC_NUM			16#define RX_DESC_NUM			16#define RX_BUF_NUM			(RX_DESC_NUM * 1)#define MAX_ETH_FRAME_SIZE	1536#undef TX_DESC_NUM#undef RX_DESC_NUM#define BUF_COUNT					512#define TX_DESC_NUM           		(BUF_COUNT)#define RX_DESC_NUM					(BUF_COUNT)#define EMAC_BUF_SIZE				(RX_DESC_NUM * MAX_ETH_FRAME_SIZE)/* define TX/RX descriptor parameter */#define TX_BUF_SIZE			MAX_ETH_FRAME_SIZE#define TX_BUF_TOT_LEN		(TX_BUF_SIZE * TX_DESC_NUM)#define RX_BUF_SIZE			MAX_ETH_FRAME_SIZE#define RX_BUF_TOT_LEN		(RX_BUF_SIZE * RX_BUF_NUM)/* define EMAC base address */#define EMAC_BASE_ADDR		(SL2312_EMAC_BASE)/* define owner bit */#define CPU					0#define DMA					1/* define PHY address */#define PHY_ADDR    		0x01#define ADM_EECS			0x01#define ADM_EECK			0x02#define ADM_EDIO			0x04#define LDN_GPIO			0x07#define LPC_BASE_ADDR		SL2312_LPC_IO_BASE#define IT8712_GPIO_BASE	0x800	// 0x800-0x804 for GPIO set1-set5#define BASE_OFF			0x03/***************************************//* the offset address of EMAC register *//***************************************/enum EMAC_REGISTER {	EMAC_STA_ADD0 	= 0x0000,	EMAC_STA_ADD1	= 0x0004,	EMAC_STA_ADD2	= 0x0008,	EMAC_RX_FLTR	= 0x000c,	EMAC_MCAST_FIL0 = 0x0010,	EMAC_MCAST_FIL1 = 0x0014,	EMAC_CONFIG0	= 0x0018,	EMAC_CONFIG1	= 0x001c,	EMAC_CONFIG2	= 0x0020,	EMAC_BNCR		= 0x0024,	EMAC_RBNR		= 0x0028,	EMAC_STATUS		= 0x002c,	EMAC_IN_DISCARDS= 0x0030,	EMAC_IN_ERRORS  = 0x0034};		/*******************************************//* the offset address of EMAC DMA register *//*******************************************/enum EMAC_DMA_REGISTER {	EMAC_DMA_DEVICE_ID		= 0xff00,	EMAC_DMA_STATUS			= 0xff04,	EMAC_TXDMA_CTRL 	 	= 0xff08,	EMAC_TXDMA_FIRST_DESC 	= 0xff0c,	EMAC_TXDMA_CURR_DESC	= 0xff10,	EMAC_RXDMA_CTRL			= 0xff14,	EMAC_RXDMA_FIRST_DESC	= 0xff18,	EMAC_RXDMA_CURR_DESC	= 0xff1c,};/*******************************************//* the register structure of EMAC          *//*******************************************/typedef union{	unsigned int bits32;	struct bit1_0004	{#if (BIG_ENDIAN==1) 	    		unsigned int sta_add2_l16	: 16;	/* station MAC address2 bits 15 to 0 */		unsigned int sta_add1_h16	: 16;	/* station MAC address1 bits 47 to 32 */#else		unsigned int sta_add1_h16	: 16;	/* station MAC address1 bits 47 to 32 */		unsigned int sta_add2_l16	: 16;	/* station MAC address2 bits 15 to 0 */#endif			} bits;} EMAC_STA_ADD1_T;		typedef union{	unsigned int bits32;	struct bit1_000c	{#if (BIG_ENDIAN==1) 	    		unsigned int 				: 27;		unsigned int error			:  1;	/* enable receive of all error frames */		unsigned int promiscuous	:  1;   /* enable receive of all frames */		unsigned int broadcast		:  1;	/* enable receive of broadcast frames */		unsigned int multicast		:  1;	/* enable receive of multicast frames that pass multicast filter */		unsigned int unicast		:  1;	/* enable receive of unicast frames that are sent to STA address */#else		unsigned int unicast		:  1;	/* enable receive of unicast frames that are sent to STA address */		unsigned int multicast		:  1;	/* enable receive of multicast frames that pass multicast filter */		unsigned int broadcast		:  1;	/* enable receive of broadcast frames */		unsigned int promiscuous	:  1;   /* enable receive of all frames */		unsigned int error			:  1;	/* enable receive of all error frames */		unsigned int 				: 27;#endif	} bits;} EMAC_RX_FLTR_T;typedef union{	unsigned int bits32;	struct bit1_0018	{#if (BIG_ENDIAN==1) 	    		unsigned int 				: 19;		unsigned int sim_test		:  1;	/* speed up timers in simulation */		unsigned int dis_col		:  1;	/* disable 16 collisions abort function */		unsigned int dis_bkoff		:  1;	/* disable back-off function */		unsigned int max_len		:  2;	/* maximum receive frame length allowed */		unsigned int adj_ifg		:  4;	/* adjust IFG from 96+/-56 */		unsigned int fc_en			:  1;	/* flow control enable */		unsigned int loop_back		:  1;	/* transmit data loopback enable */		unsigned int dis_rx			:  1;	/* disable receive */		unsigned int dis_tx			:  1;	/* disable transmit */#else		unsigned int dis_tx			:  1;	/* disable transmit */		unsigned int dis_rx			:  1;	/* disable receive */		unsigned int loop_back		:  1;	/* transmit data loopback enable */		unsigned int fc_en			:  1;	/* flow control enable */		unsigned int adj_ifg		:  4;	/* adjust IFG from 96+/-56 */		unsigned int max_len		:  2;	/* maximum receive frame length allowed */		unsigned int dis_bkoff		:  1;	/* disable back-off function */		unsigned int dis_col		:  1;	/* disable 16 collisions abort function */		unsigned int sim_test		:  1;	/* speed up timers in simulation */		unsigned int 				: 19;#endif	} bits;} EMAC_CONFIG0_T;		typedef union{	unsigned int bits32;	struct bit1_001c	{#if (BIG_ENDIAN==1) 	    		unsigned int 				: 28;		unsigned int buf_size		:  4; 	/* per packet buffer size */#else		unsigned int buf_size		:  4; 	/* per packet buffer size */		unsigned int 				: 28;#endif	} bits;} EMAC_CONFIG1_T;typedef union{	unsigned int bits32;	struct bit1_0020	{#if (BIG_ENDIAN==1) 	    		unsigned int rel_threshold	: 16;	/* flow control release threshold */		unsigned int set_threshold	: 16; 	/* flow control set threshold */#else		unsigned int set_threshold	: 16; 	/* flow control set threshold */		unsigned int rel_threshold	: 16;	/* flow control release threshold */#endif	} bits;} EMAC_CONFIG2_T;typedef union{	unsigned int bits32;	struct bit1_0024	{#if (BIG_ENDIAN==1) 	    		unsigned int 				: 16;		unsigned int buf_num		: 16; 	/* return buffer number from software */#else		unsigned int buf_num		: 16; 	/* return buffer number from software */		unsigned int 				: 16;#endif	} bits;} EMAC_BNCR_T;typedef union{	unsigned int bits32;	struct bit1_0028	{#if (BIG_ENDIAN==1) 	    		unsigned int				: 16;		unsigned int buf_remain		: 16;	/* remaining buffer number */#else		unsigned int buf_remain		: 16;	/* remaining buffer number */		unsigned int				: 16;#endif	} bits;} EMAC_RBNR_T;typedef union{	unsigned int bits32;	struct bit1_002c	{#if (BIG_ENDIAN==1) 	    		unsigned int 				: 27;		unsigned int phy_mode		:  1;	/* PHY interface mode in 10M-bps */		unsigned int mii_rmii		:  1;   /* PHY interface type */		unsigned int duplex			:  1;	/* duplex mode */		unsigned int speed			:  1;	/* link speed */		unsigned int link			:  1;	/* link status */#else		unsigned int link			:  1;	/* link status */		unsigned int speed			:  1;	/* link speed */		unsigned int duplex			:  1;	/* duplex mode */		unsigned int mii_rmii		:  1;   /* PHY interface type */		unsigned int phy_mode		:  1;	/* PHY interface mode in 10M-bps */		unsigned int 				: 27;#endif	} bits;} EMAC_STATUS_T;		typedef union{	unsigned int bits32;	struct bit1_009	{#if (BIG_ENDIAN==1) 	    		unsigned int 				: 10;		unsigned int tx_fail		:  1; 	/* Tx fail interrupt */		unsigned int cnt_full		:  1;	/* MIB counters half full interrupt */		unsigned int rx_pause_on	:  1;	/* received pause on frame interrupt */		unsigned int tx_pause_on	:  1;	/* transmit pause on frame interrupt */	 		unsigned int rx_pause_off   :  1;	/* received pause off frame interrupt */		unsigned int tx_pause_off	:  1;	/* received pause off frame interrupt */		unsigned int rx_overrun		:  1;   /* EMAC Rx FIFO overrun interrupt */		unsigned int tx_underrun	:  1;	/* EMAC Tx FIFO underrun interrupt */		unsigned int				:  6;		unsigned int m_tx_fail 		:  1;	/* Tx fail interrupt mask */		unsigned int m_cnt_full		:  1;	/* MIB counters half full interrupt mask */		unsigned int m_rx_pause_on	:  1;	/* received pause on frame interrupt mask */		unsigned int m_tx_pause_on  :  1;	/* transmit pause on frame interrupt mask */		unsigned int m_rx_pause_off :  1;	/* received pause off frame interrupt mask */		unsigned int m_tx_pause_off	:  1;	/* received pause off frame interrupt mask */		unsigned int m_rx_overrun	:  1;   /* EMAC Rx FIFO overrun interrupt mask */		unsigned int m_tx_underrun	:  1;	/* EMAC Tx FIFO underrun interrupt mask */#else		unsigned int m_tx_underrun	:  1;	/* EMAC Tx FIFO underrun interrupt mask */		unsigned int m_rx_overrun	:  1;   /* EMAC Rx FIFO overrun interrupt mask */		unsigned int m_tx_pause_off	:  1;	/* received pause off frame interrupt mask */		unsigned int m_rx_pause_off :  1;	/* received pause off frame interrupt mask */		unsigned int m_tx_pause_on  :  1;	/* transmit pause on frame interrupt mask */

⌨️ 快捷键说明

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