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 + -
显示快捷键?