mac8947.h

来自「source code of armboot for s3c4510」· C头文件 代码 · 共 1,048 行 · 第 1/2 页

H
1,048
字号
	ulong reserved_1:1;	ulong enableReceiveParity:1;	ulong enableGood:1;	ulong reserved_2:17;#endif}PACK_RESERVED;union UNION_MACRXCON{	struct MACRXCON_PACKED	macRxCon_reg;	ulong macRxCon_resetval;}PACK_RESERVED;typedef union UNION_MACRXCON uMACRXCON;struct MACRXSTAT_PACKED{#if BIG_ENDIAN	ulong reserved_2:16;	ulong receptionHalted:1;	ulong goodReceived:1;	ulong receiveParityError:1;	ulong reserved_1:1;	ulong longError:1;	ulong overflowError:1;	ulong crcError:1;	ulong alignmentError:1;	ulong receive10MbStatus:1;	ulong intrOnReceive:1;	ulong ctrlFrameReceived:1;	ulong reserved_0:5;#else	ulong reserved_0:5;	ulong ctrlFrameReceived:1;	ulong intrOnReceive:1;	ulong receive10MbStatus:1;	ulong alignmentError:1;	ulong crcError:1;	ulong overflowError:1;	ulong longError:1;	ulong reserved_1:1;	ulong receiveParityError:1;	ulong goodReceived:1;	ulong receptionHalted:1;	ulong reserved_2:16;#endif}PACK_RESERVED;union UNION_MACRXSTAT{	struct MACRXSTAT_PACKED	macRxCon_reg;	ulong macRxCon_resetval;}PACK_RESERVED;typedef union UNION_MACRXSTAT uMACRXSTAT;struct STACON_PACKED{#if BIG_ENDIAN	ulong reserved_0:16;	ulong mdc_Clockrating:3;	ulong preambleSuppress:1;	ulong busy:1;	ulong write:1;	ulong phyAddr:5;	ulong phyRegisterAddr:5;#else	ulong phyRegisterAddr:5;	ulong phyAddr:5;	ulong write:1;	ulong busy:1;	ulong preambleSuppress:1;	ulong mdc_Clockrating:3;	ulong reserved_0:16;#endif}PACK_RESERVED;union UNION_STACON{	struct STACON_PACKED	staCon_reg;	ulong staCon_resetval;}PACK_RESERVED;typedef union UNION_STACON uSTACON;struct CAMEN_PACKED{#if BIG_ENDIAN	ulong reserved_0:11;	ulong camEnable:21;#else	ulong camEnable:21;	ulong reserved_0:11;#endif}PACK_RESERVED;union UNION_CAMEN{	struct CAMEN_PACKED	camen_reg;	ulong camen_resetval;}PACK_RESERVED;typedef union UNION_CAMEN uCAMEN;struct EMISSCNT_PACKED{#if BIG_ENDIAN	ulong reserved_0:16;	ulong alignmentErrorCount:16;#else	ulong alignmentErrorCount:16;	ulong reserved_0:16;#endif}PACK_RESERVED;union UNION_EMISSCNT{	struct EMISSCNT_PACKED	emisscnt_reg;	ulong emisscnt_resetval;}PACK_RESERVED;typedef union UNION_EMISSCNT uEMISSCNT;typedef struct etherStatistics{	/* Receive statistics counters from */	ulong rxGood;	ulong rxBad;	ulong rxOvMaxSize;	ulong rxCtlRecd;	ulong rx10Stat;	ulong rxAlignErr;	ulong rxCRCErr;	ulong rxOverflowErr;	ulong rxLongErr;	ulong rxParErr;	ulong rxHalted;	/* Transmit statistics counters */	ulong txGood;	ulong txUnderErr;	ulong txExCollErr;	ulong txDeferredErr;	ulong txPaused;	ulong txDeferErr;	ulong txNCarrErr;	ulong txSQE;	ulong txLateCollErr;	ulong txParErr;	ulong txHalted;} ETHER_STATISTICS;#ifndef IMPORT#define IMPORT extern#endif	/*IMPORT*/#ifndef STATUS#define STATUS	int#endif	/*STATUS*/#ifndef OK#define	OK	0#endif	/*OK*/#ifndef ERROR#define	ERROR	(-1)#endif	/*ERROR*/#ifndef EOS#define EOS		'\0'	/* C string terminator */#endif	/*EOS*/#ifndef NULL#define NULL		(0)#endif	/*NULL*/#ifndef TRUE#define TRUE		(1)#endif	/*TRUE*/#ifndef FALSE#define FALSE		(0)#endif	/*FALSE*/#ifndef NON_CACHE_REGION#define NON_CACHE_REGION	0x4000000#endif	/*NON_CACHE_REGION*/#ifdef SD16BIT		//?? by maveric 2002.10.2#ifndef RX_FD_NUM#define	RX_FD_NUM				(16)#endif 	/*RX_FD_NUM*/#ifndef TX_FD_NUM#define	TX_FD_NUM				(16)#endif 	/*TX_FD_NUM*/#else#ifndef RX_FD_NUM#define	RX_FD_NUM				(32)#endif 	/*RX_FD_NUM*/#ifndef TX_FD_NUM#define	TX_FD_NUM				(32)#endif 	/*TX_FD_NUM*/#endif/** PHY definitions **/#define PHY_CONTROL_REG 	0#define PHY_ADDR_A 			0#define PHY_ADDR_B 			0x01<<5#define _AUTO_NEGOTIATE 	0x1000#define _10_MB_HDX 			0#define _10_MB_FDX 			0x0100#define _100_MB_FDX 		0x2100#define _100_MB_HDX 		0x2000#define ETHERMTU				1500#define ENET_HDR_REAL_SIZ 	14#define END_BUFSIZ      		(ETHERMTU + ENET_HDR_REAL_SIZ + 86)//#define BDMA_REG_ADDR_A		(ASIC_BASE+0x9000)//#define MAC_REG_ADDR_A		(ASIC_BASE+0xA000)#define BDMA_REG_ADDR_A		(0x03ff0000+0x9000)#define MAC_REG_ADDR_A		(0x03ff0000+0xA000)#define BDMA_REG_ADDR_B		(ASIC_BASE+0xE000)#define MAC_REG_ADDR_B			(ASIC_BASE+0xF800)#ifndef REG_OUT_LONG#   define REG_OUT_LONG(hwbase,addr,value) \ (*(ulong *)(hwbase+addr) = (value))#endif#ifndef REG_IN_LONG#   define REG_IN_LONG(hwbase,addr,pData) \	((pData) = *(ulong *)(hwbase+addr))#endif#ifndef REG_OUT_SHORT#   define REG_OUT_SHORT(hwbase,addr,value) \	(*(ushort *)(hwbase+addr) = (value))#endif#ifndef REG_IN_SHORT#   define REG_IN_SHORT(hwbase,addr,pData) \	((pData) = *(ushort *)(hwbase+addr))#endif/* * Macros for number representation conversion. *//*#if	BIG_ENDIAN*/#if 0/*#define	ntohl(x)	(x)*//*#define	ntohs(x)	(x)*//*#define	htonl(x)	(x)*//*#define	htons(x)	(x)*/#define NTOHL(x)	(x) = ntohl((ulong)(x))#define NTOHS(x)	(x) = ntohs((ushort)(x))#define HTONL(x)	(x) = htonl((ulong)(x))#define HTONS(x)	(x) = htons((ushort)(x))#else#define ntohl(x)	((((x) & 0x000000ff) << 24) | \			 (((x) & 0x0000ff00) <<  8) | \			 (((x) & 0x00ff0000) >>  8) | \			 (((x) & 0xff000000) >> 24))#define htonl(x)	((((x) & 0x000000ff) << 24) | \			 (((x) & 0x0000ff00) <<  8) | \			 (((x) & 0x00ff0000) >>  8) | \			 (((x) & 0xff000000) >> 24))#define ntohs(x)	((((x) & 0x00ff) << 8) | \			 (((x) & 0xff00) >> 8))#define htons(x)	((((x) & 0x00ff) << 8) | \			 (((x) & 0xff00) >> 8))#define	NTOHL(x)	(x) = ntohl((ulong)(x))#define	NTOHS(x)	(x) = ntohs((ushort)(x))#define	HTONL(x)	(x) = htonl((ulong)(x))#define	HTONS(x)	(x) = htons((ushort)(x))#endif	/* BIG_ENDIAN */#define bcopy(s,d,c) memmove(d,s,c)typedef struct api_Mac_device{    int		unit;				/* unit number */    int		channel;			/* Channel number */    int		ivecRx;				/* interrupt vector Rx */	int		ivecTx;				/* interrupt vector Tx */    ulong	BdmaAddr;			/* Base addr of BDMA */    ulong	MacAddr;			/* Base addr of MAC */    long	flags;				/* Our local flags. */	int		buffInitialized; 	/* device buffer Initialized */	int		status;				/* device status */	RECEIVE_FRAME_DESC 		*gpReceiveFrameDescStart;	TRANSMIT_FRAME_DESC 	*gpTransmitFrameDescStart;	ulong		addrList[32];	/* Array for storing addresses Max = 21, i.e. 32 long words */	ulong		mcastAddrCount;	/* Number of valid multicast addresses */    uchar		enetAddr[6];	/* ethernet address */	uchar		netSpeed;		/* 10 or 100 */	uchar		duplexMode;		/* HDX = 0. FDX = 1 */	uchar		autoNeg;		/* 1 = autoneg enabled */	ETHER_STATISTICS	statistics;	/* Ethernet statistics counters */} API_DEVICE;/* MAC Api function predefinition *//* API Sub Fuctions */int api_MacHWReset	(API_DEVICE *api_Mac_dev);int api_MacBuffInit(API_DEVICE *api_Mac_dev);int api_MacBuffFree(API_DEVICE *api_Mac_dev);int api_MacHWInit(API_DEVICE *api_Mac_dev);int api_MacHWStart(	API_DEVICE *api_Mac_dev);int api_MacHWStop(	API_DEVICE *api_Mac_dev);int api_MacIntEnable	(API_DEVICE *api_Mac_dev);int api_MacIntDisable(API_DEVICE *api_Mac_dev);void api_MacRcv(	API_DEVICE *api_Mac_dev);int api_MacSend(	API_DEVICE *api_Mac_dev,ulong pData,int len);void	api_init(bd_t *bd, API_DEVICE *api_Mac_dev);int MAC_PHY_INIT(void);/* MII Set Sub Function */ulong miiRead	(	API_DEVICE *api_Mac_dev,	ulong phyAddr,		/* Address of the PHY chip (usually 0 for single PHY) */	ulong phyRegAddr, 	/* Address of PHY register to be read */	ulong *phyData		/* Data to be Read */	);void miiWrite	(	API_DEVICE *api_Mac_dev,	ulong phyAddr,		/* Address of the PHY chip (usually 0 for single PHY) */	ulong phyRegAddr, 	/* Address of PHY register to be written */	ulong phyData		/* Data to be written */	);STATUS MII_AutoNeg	(	API_DEVICE *api_Mac_dev,	unsigned long retries,	int *isFullDuplexP,	int *is100MbpsP	);void intEnable(int vect);void intDisable(int vect);/* * Our MAC address definition.  User can change this value as * per requirement */unsigned char EnetAddrA[6] = {0x00,0x00,0xf0,0x90,0x11,0x10};unsigned char EnetAddrB[6] = {0x00,0x00,0xf0,0x90,0x11,0x11};/* Macro to get the ethernet address from the BSP */#ifndef SYS_ENET_ADDR_GET#define SYS_ENET_ADDR_GET(pDevice, EnetAddr) \	{ \		bcopy ((char *)EnetAddr, (char *)(&pDevice->enetAddr), 6); \	}#endif#define ETHERMTU				1500#define ENET_HDR_REAL_SIZ 		14#define END_BUFSIZ      			(ETHERMTU + ENET_HDR_REAL_SIZ + 86)#if 0		//?? by maveric#ifndef RX_FD_NUM#define	RX_FD_NUM				(8)#endif 	/*RX_FD_NUM*/#ifndef TX_FD_NUM#define	TX_FD_NUM				(8)#endif 	/*TX_FD_NUM*/#endiftypedef enum{    HW_RESET_DONE = 0,    BUFF_INIT_DONE = 1,    HW_INIT_DONE = 2,    HW_START_STATUS = 3,    STOP_STATUS = 4,    OPEN_CH_STATUS = 5,    CLOSE_CH_STATUS = 6,    INT_ENABLE_STATUS = 7,    INT_DISABLE_STATUS = 8,    PATH_ENABLE_STATUS = 9,    PATH_DISABLE_STATUS = 10,    BUFF_FREE_DONE} API_STATUS;#define NOT_INIT_YET			0#define INIT_DONE				1#if 0#define FALSE					0#define TRUE					1#endif#define ETH_PHY_SELECT		0		/*Ethernet Phy select MII = 0, 7Wire = 1*//* MII interface definition */#define MII_CONTROL 0#define MII_CTRL_RESET ((unsigned short)( 0x8000 ))#define MII_CTRL_LOOPBACK ((unsigned short)( 0x4000 ))#define MII_CTRL_100MBPS ((unsigned short)( 0x2000 ))#define MII_CTRL_AUTO_NEG ((unsigned short)( 0x1000 ))#define MII_CTRL_POWER_DOWN ((unsigned short)( 0x0800 ))#define MII_CTRL_ISOLATE ((unsigned short)( 0x0400 ))#define MII_CTRL_RESTART ((unsigned short)( 0x0200 ))#define MII_CTRL_FULL_DUPLEX ((unsigned short)( 0x0100 ))#define MII_CTRL_COLL_TEST ((unsigned short)( 0x0080 ))#define MII_CTRL_TEST_MODE_MASK ((unsigned short)( 0x0070 ))#define MII_CTRL_MASTER_SLAVE_EN ((unsigned short)( 0x0008 ))#define MII_CTRL_MASTER_SLAVE_VAL ((unsigned short)( 0x0004 ))#define MII_CTRL_RESERVED1_0 ((unsigned short)( 0x0003 ))#define MII_STATUS 1#define MII_STAT_T4 ((unsigned short)( 0x8000 ))#define MII_STAT_TX_FULL_DUPLEX ((unsigned short)( 0x4000 ))#define MII_STAT_TX ((unsigned short)( 0x2000 ))#define MII_STAT_10_FULL_DUPLEX ((unsigned short)( 0x1000 ))#define MII_STAT_10 ((unsigned short)( 0x0800 ))#define MII_STAT_T2_FULL_DUPLEX ((unsigned short)( 0x0400 ))#define MII_STAT_T2 ((unsigned short)( 0x0200 ))#define MII_STAT_RESERVED8 ((unsigned short)( 0x0100 ))#define MII_STAT_MASTER_SLAVE_FAULT ((unsigned short)( 0x0080 ))#define MII_STAT_PREAMB_SUPPRESS ((unsigned short)( 0x0040 ))#define MII_STAT_AUTO_NEG_DONE ((unsigned short)( 0x0020 ))#define MII_STAT_REMOTE_FAULT ((unsigned short)( 0x0010 ))#define MII_STAT_AUTO_NEG ((unsigned short)( 0x0008 ))#define MII_STAT_LINK_UP ((unsigned short)( 0x0004 ))#define MII_STAT_JABBER_DETECT ((unsigned short)( 0x0002 ))#define MII_STAT_EXTENDED_CAP ((unsigned short)( 0x0001 ))#define MII_PHY_ID_1 2#define MII_PHY_ID_1_MASK ((unsigned short)( 0xFFFF ))#define MII_PHY_ID_2 3#define MII_PHY_ID_2_MASK ((unsigned short)( 0xFC00 ))#define MII_PHY_MODEL_MASK ((unsigned short)( 0x03F0 ))#define MII_PHY_REV_MASK ((unsigned short)( 0x000F ))#define MII_OUI(id1, id2) \  ((((unsigned long)(id1)) << 6) | \   ((((unsigned long)(id2)) & (MII_PHY_ID_2_MASK)) >> 10))#define MII_ADVERTISEMENT 4#define MII_ADVR_NEXT_PAGE ((unsigned short)( 0x8000 ))#define MII_ADVR_RESERVED14 ((unsigned short)( 0x4000 ))#define MII_ADVR_REMOTE_FAULT ((unsigned short)( 0x2000 ))#define MII_ADVR_RESERVED12_11 ((unsigned short)( 0x1800 ))#define MII_ADVR_PAUSE ((unsigned short)( 0x0400 ))#define MII_ADVR_T4 ((unsigned short)( 0x0200 ))#define MII_ADVR_TX_FULL_DUPLEX ((unsigned short)( 0x0100 ))#define MII_ADVR_TX ((unsigned short)( 0x0080 ))#define MII_ADVR_10_FULL_DUPLEX ((unsigned short)( 0x0040 ))#define MII_ADVR_10 ((unsigned short)( 0x0020 ))#define MII_ADVR_SELECTOR_MASK ((unsigned short)( 0x001F ))#define MII_ADVR_802_3 ((unsigned short)( 0x0001 ))#define MII_ADVR_802_3_ISLAN_16T ((unsigned short)( 0x0002 ))#define MII_LINK_PARTNER 5#define MII_LINK_NEXT_PAGE ((unsigned short)( 0x8000 ))#define MII_LINK_ACK ((unsigned short)( 0x4000 ))#define MII_LINK_REMOTE_FAULT ((unsigned short)( 0x2000 ))#define MII_LINK_RESERVED12_11 ((unsigned short)( 0x1800 ))#define MII_LINK_PAUSE ((unsigned short)( 0x0400 ))#define MII_LINK_T4 ((unsigned short)( 0x0200 ))#define MII_LINK_TX_FULL_DUPLEX ((unsigned short)( 0x0100 ))#define MII_LINK_TX ((unsigned short)( 0x0080 ))#define MII_LINK_10_FULL_DUPLEX ((unsigned short)( 0x0040 ))#define MII_LINK_10 ((unsigned short)( 0x0020 ))#define MII_LINK_SELECTOR_MASK ((unsigned short)( 0x001F ))#define MII_LINK_802_3 ((unsigned short)( 0x0001 ))#define MII_LINK_802_3_ISLAN_16T ((unsigned short)( 0x0002 ))#define MII_EXPANSION 6#define MII_EXP_RESERVED15_5 ((unsigned short)( 0xFFE0 ))#define MII_EXP_PARALLEL_FAULT ((unsigned short)( 0x0010 ))#define MII_EXP_LINK_NEXT_PAGE ((unsigned short)( 0x0008 ))#define MII_EXP_NEXT_PAGE_ABLE ((unsigned short)( 0x0004 ))#define MII_EXP_PAGE_RECEIVED ((unsigned short)( 0x0002 ))#define MII_EXP_LINK_AUTO_NEG ((unsigned short)( 0x0001 ))#define MII_NEXT_PAGE 7#define MII_MAX_PHY 32#define MII_MAX_REGS 32#endif		/*__MAC8947h*/

⌨️ 快捷键说明

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