amd8111e.h

来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 824 行 · 第 1/2 页

H
824
字号
	AP_VAL_ACTIVE		= (1 << 31),	AP_VAL_RD_CMD		= ( 1 << 29),	AP_ADDR			= (1 << 18)|(1 << 17)|(1 << 16), /* 18:16 */	AP_VAL			= (0xF << 0) | (0xF << 4) |( 0xF << 8) |				  (0xF << 12),	/* 15:0 */}AP_VALUE_BITS;typedef enum {	DLY_INT_A_R3		= (1 << 31),	DLY_INT_A_R2		= (1 << 30),	DLY_INT_A_R1		= (1 << 29),	DLY_INT_A_R0		= (1 << 28),	DLY_INT_A_T3		= (1 << 27),	DLY_INT_A_T2		= (1 << 26),	DLY_INT_A_T1		= (1 << 25),	DLY_INT_A_T0		= ( 1 << 24),	EVENT_COUNT_A		= (0xF << 16) | (0x1 << 20),/* 20:16 */	MAX_DELAY_TIME_A	= (0xF << 0) | (0xF << 4) | (1 << 8)|				  (1 << 9) | (1 << 10),	/* 10:0 */}DLY_INT_A_BITS;typedef enum {	DLY_INT_B_R3		= (1 << 31),	DLY_INT_B_R2		= (1 << 30),	DLY_INT_B_R1		= (1 << 29),	DLY_INT_B_R0		= (1 << 28),	DLY_INT_B_T3		= (1 << 27),	DLY_INT_B_T2		= (1 << 26),	DLY_INT_B_T1		= (1 << 25),	DLY_INT_B_T0		= ( 1 << 24),	EVENT_COUNT_B		= (0xF << 16) | (0x1 << 20),/* 20:16 */	MAX_DELAY_TIME_B	= (0xF << 0) | (0xF << 4) | (1 << 8)| 				  (1 << 9) | (1 << 10),	/* 10:0 */}DLY_INT_B_BITS;/* FLOW_CONTROL 		0xC8, 32bit register */typedef enum {	PAUSE_LEN_CHG		= (1 << 30),	FTPE			= (1 << 22),	FRPE			= (1 << 21),	NAPA			= (1 << 20),	NPA			= (1 << 19),	FIXP			= ( 1 << 18),	FCCMD			= ( 1 << 16),	PAUSE_LEN		= (0xF << 0) | (0xF << 4) |( 0xF << 8) |	 				  (0xF << 12),	/* 15:0 */}FLOW_CONTROL_BITS;/* PHY_ ACCESS			0xD0, 32bit register */typedef enum {	PHY_CMD_ACTIVE		= (1 << 31),	PHY_WR_CMD		= (1 << 30),	PHY_RD_CMD		= (1 << 29),	PHY_RD_ERR		= (1 << 28),	PHY_PRE_SUP		= (1 << 27),	PHY_ADDR		= (1 << 21) | (1 << 22) | (1 << 23)|				  	(1 << 24) |(1 << 25),/* 25:21 */	PHY_REG_ADDR		= (1 << 16) | (1 << 17) | (1 << 18)|	 			  	   	  	(1 << 19) | (1 << 20),/* 20:16 */	PHY_DATA		= (0xF << 0)|(0xF << 4) |(0xF << 8)|					(0xF << 12),/* 15:0 */}PHY_ACCESS_BITS;/* PMAT0			0x190,	 32bit register */typedef enum {	PMR_ACTIVE		= (1 << 31),	PMR_WR_CMD		= (1 << 30),	PMR_RD_CMD		= (1 << 29),	PMR_BANK		= (1 <<28),	PMR_ADDR		= (0xF << 16)|(1 << 20)|(1 << 21)|				  	(1 << 22),/* 22:16 */	PMR_B4			= (0xF << 0) | (0xF << 4),/* 15:0 */}PMAT0_BITS;/* PMAT1			0x194,	 32bit register */typedef enum {	PMR_B3			= (0xF << 24) | (0xF <<28),/* 31:24 */	PMR_B2			= (0xF << 16) |(0xF << 20),/* 23:16 */	PMR_B1			= (0xF << 8) | (0xF <<12), /* 15:8 */	PMR_B0			= (0xF << 0)|(0xF << 4),/* 7:0 */}PMAT1_BITS;/************************************************************************//*                                                                      *//*                      MIB counter definitions                         *//*                                                                      *//************************************************************************/#define rcv_miss_pkts				0x00#define rcv_octets				0x01#define rcv_broadcast_pkts			0x02#define rcv_multicast_pkts			0x03#define rcv_undersize_pkts			0x04#define rcv_oversize_pkts			0x05#define rcv_fragments				0x06#define rcv_jabbers				0x07#define rcv_unicast_pkts			0x08#define rcv_alignment_errors			0x09#define rcv_fcs_errors				0x0A#define rcv_good_octets				0x0B#define rcv_mac_ctrl				0x0C#define rcv_flow_ctrl				0x0D#define rcv_pkts_64_octets			0x0E#define rcv_pkts_65to127_octets			0x0F#define rcv_pkts_128to255_octets		0x10#define rcv_pkts_256to511_octets		0x11#define rcv_pkts_512to1023_octets		0x12#define rcv_pkts_1024to1518_octets		0x13#define rcv_unsupported_opcode			0x14#define rcv_symbol_errors			0x15#define rcv_drop_pkts_ring1			0x16#define rcv_drop_pkts_ring2			0x17#define rcv_drop_pkts_ring3			0x18#define rcv_drop_pkts_ring4			0x19#define rcv_jumbo_pkts				0x1A#define xmt_underrun_pkts			0x20#define xmt_octets				0x21#define xmt_packets				0x22#define xmt_broadcast_pkts			0x23#define xmt_multicast_pkts			0x24#define xmt_collisions				0x25#define xmt_unicast_pkts			0x26#define xmt_one_collision			0x27#define xmt_multiple_collision			0x28#define xmt_deferred_transmit			0x29#define xmt_late_collision			0x2A#define xmt_excessive_defer			0x2B#define xmt_loss_carrier			0x2C#define xmt_excessive_collision			0x2D#define xmt_back_pressure			0x2E#define xmt_flow_ctrl				0x2F#define xmt_pkts_64_octets			0x30#define xmt_pkts_65to127_octets			0x31#define xmt_pkts_128to255_octets		0x32#define xmt_pkts_256to511_octets		0x33#define xmt_pkts_512to1023_octets		0x34#define xmt_pkts_1024to1518_octet		0x35#define xmt_oversize_pkts			0x36#define xmt_jumbo_pkts				0x37/* Driver definitions */#define	 PCI_VENDOR_ID_AMD		0x1022#define  PCI_DEVICE_ID_AMD8111E_7462	0x7462#define MAX_UNITS			8 /* Maximum number of devices possible */#define NUM_TX_BUFFERS			32 /* Number of transmit buffers */#define NUM_RX_BUFFERS			32 /* Number of receive buffers */	#define TX_BUFF_MOD_MASK         	31 /* (NUM_TX_BUFFERS -1) */#define RX_BUFF_MOD_MASK         	31 /* (NUM_RX_BUFFERS -1) */#define NUM_TX_RING_DR			32  #define NUM_RX_RING_DR			32 #define TX_RING_DR_MOD_MASK         	31 /* (NUM_TX_RING_DR -1) */#define RX_RING_DR_MOD_MASK         	31 /* (NUM_RX_RING_DR -1) */#define MAX_FILTER_SIZE			64 /* Maximum multicast address */ #define AMD8111E_MIN_MTU	 	60 	#define AMD8111E_MAX_MTU		9000			#define PKT_BUFF_SZ			1536#define MIN_PKT_LEN			60#define ETH_ADDR_LEN			6#define  AMD8111E_TX_TIMEOUT		(3 * HZ)/* 3 sec */#define SOFT_TIMER_FREQ 		0xBEBC  /* 0.5 sec */#define DELAY_TIMER_CONV		50    /* msec to 10 usec conversion.						 Only 500 usec resolution */ 						 #define OPTION_VLAN_ENABLE		0x0001#define OPTION_JUMBO_ENABLE		0x0002#define OPTION_MULTICAST_ENABLE		0x0004#define OPTION_WOL_ENABLE		0x0008#define OPTION_WAKE_MAGIC_ENABLE	0x0010#define OPTION_WAKE_PHY_ENABLE		0x0020#define OPTION_INTR_COAL_ENABLE		0x0040#define OPTION_DYN_IPG_ENABLE	        0x0080#define PHY_REG_ADDR_MASK		0x1f/* ipg parameters */#define DEFAULT_IPG			0x60#define IFS1_DELTA			36#define	IPG_CONVERGE_JIFFIES (HZ/2)#define	IPG_STABLE_TIME	5#define	MIN_IPG	96#define	MAX_IPG	255#define IPG_STEP	16#define CSTATE  1 #define SSTATE  2 /* Assume contoller gets data 10 times the maximum processing time */#define  REPEAT_CNT			10;      /* amd8111e decriptor flag definitions */typedef enum {	OWN_BIT		=	(1 << 15),	ADD_FCS_BIT	=	(1 << 13),	LTINT_BIT	=	(1 << 12),	STP_BIT		=	(1 << 9),	ENP_BIT		=	(1 << 8),	KILL_BIT	= 	(1 << 6),	TCC_VLAN_INSERT	=	(1 << 1),	TCC_VLAN_REPLACE =	(1 << 1) |( 1<< 0),}TX_FLAG_BITS;typedef enum {	ERR_BIT 	=	(1 << 14),	FRAM_BIT	=  	(1 << 13),	OFLO_BIT	=       (1 << 12),	CRC_BIT		=	(1 << 11),	PAM_BIT		=	(1 << 6),	LAFM_BIT	= 	(1 << 5),	BAM_BIT		=	(1 << 4),	TT_VLAN_TAGGED	= 	(1 << 3) |(1 << 2),/* 0x000 */	TT_PRTY_TAGGED	=	(1 << 3),/* 0x0008 */}RX_FLAG_BITS;#define RESET_RX_FLAGS		0x0000#define TT_MASK			0x000c#define TCC_MASK		0x0003/* driver ioctl parameters */#define PHY_ID 			0x01	/* currently it is fixed */#define AMD8111E_REG_DUMP_LEN	 13*sizeof(u32) /* crc generator constants */#define CRC32 0xedb88320#define INITCRC 0xFFFFFFFF/* amd8111e desriptor format */struct amd8111e_tx_dr{	u16 buff_count; /* Size of the buffer pointed by this descriptor */	u16 tx_flags;	u16 tag_ctrl_info;	u16 tag_ctrl_cmd;	u32 buff_phy_addr;	u32 reserved;}; struct amd8111e_rx_dr{		u32 reserved;	u16 msg_count; /* Received message len */	u16 tag_ctrl_info; 	u16 buff_count;  /* Len of the buffer pointed by descriptor. */	u16 rx_flags;	u32 buff_phy_addr;};struct amd8111e_link_config{#define SPEED_INVALID		0xffff#define DUPLEX_INVALID		0xff#define AUTONEG_INVALID		0xff		unsigned long			orig_phy_option;	u16				speed;	u8				duplex;	u8				autoneg;	u8				reserved;  /* 32bit alignment */};enum coal_type{	NO_COALESCE,	LOW_COALESCE,	MEDIUM_COALESCE,	HIGH_COALESCE,};enum coal_mode{        	RX_INTR_COAL,	TX_INTR_COAL,	DISABLE_COAL,	ENABLE_COAL,};#define MAX_TIMEOUT	40#define MAX_EVENT_COUNT 31struct amd8111e_coalesce_conf{	unsigned int rx_timeout;	unsigned int rx_event_count;	unsigned long rx_packets;	unsigned long rx_prev_packets;	unsigned long rx_bytes;	unsigned long rx_prev_bytes;	unsigned int rx_coal_type;		unsigned int tx_timeout;	unsigned int tx_event_count;	unsigned long tx_packets;	unsigned long tx_prev_packets;	unsigned long tx_bytes;	unsigned long tx_prev_bytes;	unsigned int tx_coal_type;};struct ipg_info{		unsigned int ipg_state;	unsigned int ipg;	unsigned int current_ipg;	unsigned int col_cnt;	unsigned int diff_col_cnt;	unsigned int timer_tick;	unsigned int prev_ipg;	struct timer_list ipg_timer;};struct amd8111e_priv{		struct amd8111e_tx_dr*  tx_ring;	struct amd8111e_rx_dr* rx_ring;	dma_addr_t tx_ring_dma_addr;	/* tx descriptor ring base address */	dma_addr_t rx_ring_dma_addr;	/* rx descriptor ring base address */	const char *name;	struct pci_dev *pci_dev;	/* Ptr to the associated pci_dev */	struct net_device* amd8111e_net_dev; 	/* ptr to associated net_device */	/* Transmit and recive skbs */	struct sk_buff *tx_skbuff[NUM_TX_BUFFERS];	struct sk_buff *rx_skbuff[NUM_RX_BUFFERS];	/* Transmit and receive dma mapped addr */	dma_addr_t tx_dma_addr[NUM_TX_BUFFERS];	dma_addr_t rx_dma_addr[NUM_RX_BUFFERS];	/* Reg memory mapped address */	void *  mmio;		spinlock_t lock;	/* Guard lock */	unsigned long rx_idx, tx_idx;	/* The next free ring entry */	unsigned long tx_complete_idx;	unsigned long tx_ring_complete_idx;	unsigned long tx_ring_idx;	unsigned int rx_buff_len;	/* Buffer length of rx buffers */	int options;		/* Options enabled/disabled for the device */	unsigned long ext_phy_option;		struct amd8111e_link_config link_config;	int pm_cap;	u32 pm_state[12];	struct net_device *next;	int mii;	struct mii_if_info mii_if;#if AMD8111E_VLAN_TAG_USED	struct vlan_group		*vlgrp;#endif		char opened;	struct net_device_stats stats;	unsigned int drv_rx_errors;	struct dev_mc_list* mc_list;	struct amd8111e_coalesce_conf coal_conf;	struct ipg_info  ipg_data;		};/* kernel provided writeq does not write 64 bits into the amd8111e device register instead writes only higher 32bits data into lower 32bits of the register.BUG? */#define  amd8111e_writeq(_UlData,_memMap)   \		writel(*(u32*)(&_UlData), _memMap);	\		writel(*(u32*)((u8*)(&_UlData)+4), _memMap+4)	/* maps the external speed options to internal value */typedef enum {	SPEED_AUTONEG,	SPEED10_HALF,	SPEED10_FULL,	SPEED100_HALF,	SPEED100_FULL,}EXT_PHY_OPTION;static int card_idx;static int speed_duplex[MAX_UNITS] = { 0, };static int coalesce[MAX_UNITS] = {1,1,1,1,1,1,1,1};static int dynamic_ipg[MAX_UNITS] = {0,0,0,0,0,0,0,0};static unsigned int chip_version;#endif /* _AMD8111E_H */

⌨️ 快捷键说明

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