adm8211.h

来自「linux 内核源代码」· C头文件 代码 · 共 657 行 · 第 1/2 页

H
657
字号
#define SI4126_RF1_R_DIV	6 /* only Si4136 */#define SI4126_RF2_R_DIV	7#define SI4126_IF_R_DIV		8/* Main Configuration */#define SI4126_MAIN_XINDIV2	(1 << 6)#define SI4126_MAIN_IFDIV	((1 << 11) | (1 << 10))/* Powerdown */#define SI4126_POWERDOWN_PDIB	(1 << 1)#define SI4126_POWERDOWN_PDRB	(1 << 0)/* RF3000 BBP - Control Port Registers *//* 0x00 - reserved */#define RF3000_MODEM_CTRL__RX_STATUS 0x01#define RF3000_CCA_CTRL 0x02#define RF3000_DIVERSITY__RSSI 0x03#define RF3000_RX_SIGNAL_FIELD 0x04#define RF3000_RX_LEN_MSB 0x05#define RF3000_RX_LEN_LSB 0x06#define RF3000_RX_SERVICE_FIELD 0x07#define RF3000_TX_VAR_GAIN__TX_LEN_EXT 0x11#define RF3000_TX_LEN_MSB 0x12#define RF3000_TX_LEN_LSB 0x13#define RF3000_LOW_GAIN_CALIB 0x14#define RF3000_HIGH_GAIN_CALIB 0x15/* ADM8211 revisions */#define ADM8211_REV_AB 0x11#define ADM8211_REV_AF 0x15#define ADM8211_REV_BA 0x20#define ADM8211_REV_CA 0x30struct adm8211_desc {	__le32 status;	__le32 length;	__le32 buffer1;	__le32 buffer2;};#define RDES0_STATUS_OWN	(1 << 31)#define RDES0_STATUS_ES		(1 << 30)#define RDES0_STATUS_SQL	(1 << 29)#define RDES0_STATUS_DE		(1 << 28)#define RDES0_STATUS_FS		(1 << 27)#define RDES0_STATUS_LS		(1 << 26)#define RDES0_STATUS_PCF	(1 << 25)#define RDES0_STATUS_SFDE	(1 << 24)#define RDES0_STATUS_SIGE	(1 << 23)#define RDES0_STATUS_CRC16E	(1 << 22)#define RDES0_STATUS_RXTOE	(1 << 21)#define RDES0_STATUS_CRC32E	(1 << 20)#define RDES0_STATUS_ICVE	(1 << 19)#define RDES0_STATUS_DA1	(1 << 17)#define RDES0_STATUS_DA0	(1 << 16)#define RDES0_STATUS_RXDR	((1 << 15) | (1 << 14) | (1 << 13) | (1 << 12))#define RDES0_STATUS_FL		(0x00000fff)#define RDES1_CONTROL_RER	(1 << 25)#define RDES1_CONTROL_RCH	(1 << 24)#define RDES1_CONTROL_RBS2	(0x00fff000)#define RDES1_CONTROL_RBS1	(0x00000fff)#define RDES1_STATUS_RSSI	(0x0000007f)#define TDES0_CONTROL_OWN	(1 << 31)#define TDES0_CONTROL_DONE	(1 << 30)#define TDES0_CONTROL_TXDR	(0x0ff00000)#define TDES0_STATUS_OWN	(1 << 31)#define TDES0_STATUS_DONE	(1 << 30)#define TDES0_STATUS_ES		(1 << 29)#define TDES0_STATUS_TLT	(1 << 28)#define TDES0_STATUS_TRT	(1 << 27)#define TDES0_STATUS_TUF	(1 << 26)#define TDES0_STATUS_TRO	(1 << 25)#define TDES0_STATUS_SOFBR	(1 << 24)#define TDES0_STATUS_ACR	(0x00000fff)#define TDES1_CONTROL_IC	(1 << 31)#define TDES1_CONTROL_LS	(1 << 30)#define TDES1_CONTROL_FS	(1 << 29)#define TDES1_CONTROL_TER	(1 << 25)#define TDES1_CONTROL_TCH	(1 << 24)#define TDES1_CONTROL_RBS2	(0x00fff000)#define TDES1_CONTROL_RBS1	(0x00000fff)/* SRAM offsets */#define ADM8211_SRAM(x) (priv->pdev->revision < ADM8211_REV_BA ? \        ADM8211_SRAM_A_ ## x : ADM8211_SRAM_B_ ## x)#define ADM8211_SRAM_INDIV_KEY   0x0000#define ADM8211_SRAM_A_SHARE_KEY 0x0160#define ADM8211_SRAM_B_SHARE_KEY 0x00c0#define ADM8211_SRAM_A_SSID      0x0180#define ADM8211_SRAM_B_SSID      0x00d4#define ADM8211_SRAM_SSID ADM8211_SRAM(SSID)#define ADM8211_SRAM_A_SUPP_RATE 0x0191#define ADM8211_SRAM_B_SUPP_RATE 0x00dd#define ADM8211_SRAM_SUPP_RATE ADM8211_SRAM(SUPP_RATE)#define ADM8211_SRAM_A_SIZE      0x0200#define ADM8211_SRAM_B_SIZE      0x01c0#define ADM8211_SRAM_SIZE ADM8211_SRAM(SIZE)struct adm8211_rx_ring_info {	struct sk_buff *skb;	dma_addr_t mapping;};struct adm8211_tx_ring_info {	struct sk_buff *skb;	dma_addr_t mapping;	struct ieee80211_tx_control tx_control;	size_t hdrlen;};#define PLCP_SIGNAL_1M		0x0a#define PLCP_SIGNAL_2M		0x14#define PLCP_SIGNAL_5M5		0x37#define PLCP_SIGNAL_11M		0x6estruct adm8211_tx_hdr {	u8 da[6];	u8 signal; /* PLCP signal / TX rate in 100 Kbps */	u8 service;	__le16 frame_body_size;	__le16 frame_control;	__le16 plcp_frag_tail_len;	__le16 plcp_frag_head_len;	__le16 dur_frag_tail;	__le16 dur_frag_head;	u8 addr4[6];#define ADM8211_TXHDRCTL_SHORT_PREAMBLE		(1 <<  0)#define ADM8211_TXHDRCTL_MORE_FRAG		(1 <<  1)#define ADM8211_TXHDRCTL_MORE_DATA		(1 <<  2)#define ADM8211_TXHDRCTL_FRAG_NO		(1 <<  3) /* ? */#define ADM8211_TXHDRCTL_ENABLE_RTS		(1 <<  4)#define ADM8211_TXHDRCTL_ENABLE_WEP_ENGINE	(1 <<  5)#define ADM8211_TXHDRCTL_ENABLE_EXTEND_HEADER	(1 << 15) /* ? */	__le16 header_control;	__le16 frag;	u8 reserved_0;	u8 retry_limit;	u32 wep2key0;	u32 wep2key1;	u32 wep2key2;	u32 wep2key3;	u8 keyid;	u8 entry_control;	// huh??	u16 reserved_1;	u32 reserved_2;} __attribute__ ((packed));#define RX_COPY_BREAK 128#define RX_PKT_SIZE 2500struct adm8211_eeprom {	__le16	signature;		/* 0x00 */	u8	major_version;		/* 0x02 */	u8	minor_version;		/* 0x03 */	u8	reserved_1[4];		/* 0x04 */	u8	hwaddr[6];		/* 0x08 */	u8	reserved_2[8];		/* 0x1E */	__le16	cr49;			/* 0x16 */	u8	cr03;			/* 0x18 */	u8	cr28;			/* 0x19 */	u8	cr29;			/* 0x1A */	u8	country_code;		/* 0x1B *//* specific bbp types */#define ADM8211_BBP_RFMD3000	0x00#define ADM8211_BBP_RFMD3002	0x01#define ADM8211_BBP_ADM8011	0x04	u8	specific_bbptype;	/* 0x1C */	u8	specific_rftype;	/* 0x1D */	u8	reserved_3[2];		/* 0x1E */	__le16	device_id;		/* 0x20 */	__le16	vendor_id;		/* 0x22 */	__le16	subsystem_id;		/* 0x24 */	__le16	subsystem_vendor_id;	/* 0x26 */	u8	maxlat;			/* 0x28 */	u8	mingnt;			/* 0x29 */	__le16	cis_pointer_low;	/* 0x2A */	__le16	cis_pointer_high;	/* 0x2C */	__le16	csr18;			/* 0x2E */	u8	reserved_4[16];		/* 0x30 */	u8	d1_pwrdara;		/* 0x40 */	u8	d0_pwrdara;		/* 0x41 */	u8	d3_pwrdara;		/* 0x42 */	u8	d2_pwrdara;		/* 0x43 */	u8	antenna_power[14];	/* 0x44 */	__le16	cis_wordcnt;		/* 0x52 */	u8	tx_power[14];		/* 0x54 */	u8	lpf_cutoff[14];		/* 0x62 */	u8	lnags_threshold[14];	/* 0x70 */	__le16	checksum;		/* 0x7E */	u8	cis_data[0];		/* 0x80, 384 bytes */} __attribute__ ((packed));static const struct ieee80211_rate adm8211_rates[] = {	{ .rate = 10,	  .val = 10,	  .val2 = -10,	  .flags = IEEE80211_RATE_CCK_2 },	{ .rate = 20,	  .val = 20,	  .val2 = -20,	  .flags = IEEE80211_RATE_CCK_2 },	{ .rate = 55,	  .val = 55,	  .val2 = -55,	  .flags = IEEE80211_RATE_CCK_2 },	{ .rate = 110,	  .val = 110,	  .val2 = -110,	  .flags = IEEE80211_RATE_CCK_2 }};struct ieee80211_chan_range {	u8 min;	u8 max;};static const struct ieee80211_channel adm8211_channels[] = {	{ .chan = 1,	  .freq = 2412},	{ .chan = 2,	  .freq = 2417},	{ .chan = 3,	  .freq = 2422},	{ .chan = 4,	  .freq = 2427},	{ .chan = 5,	  .freq = 2432},	{ .chan = 6,	  .freq = 2437},	{ .chan = 7,	  .freq = 2442},	{ .chan = 8,	  .freq = 2447},	{ .chan = 9,	  .freq = 2452},	{ .chan = 10,	  .freq = 2457},	{ .chan = 11,	  .freq = 2462},	{ .chan = 12,	  .freq = 2467},	{ .chan = 13,	  .freq = 2472},	{ .chan = 14,	  .freq = 2484},};struct adm8211_priv {	struct pci_dev *pdev;	spinlock_t lock;	struct adm8211_csr __iomem *map;	struct adm8211_desc *rx_ring;	struct adm8211_desc *tx_ring;	dma_addr_t rx_ring_dma;	dma_addr_t tx_ring_dma;	struct adm8211_rx_ring_info *rx_buffers;	struct adm8211_tx_ring_info *tx_buffers;	unsigned int rx_ring_size, tx_ring_size;	unsigned int cur_tx, dirty_tx, cur_rx;	struct ieee80211_low_level_stats stats;	struct ieee80211_hw_mode modes[1];	struct ieee80211_channel channels[ARRAY_SIZE(adm8211_channels)];	struct ieee80211_rate rates[ARRAY_SIZE(adm8211_rates)];	int mode;	int channel;	u8 bssid[ETH_ALEN];	u8 ssid[32];	size_t ssid_len;	u8 soft_rx_crc;	u8 retry_limit;	u8 ant_power;	u8 tx_power;	u8 lpf_cutoff;	u8 lnags_threshold;	struct adm8211_eeprom *eeprom;	size_t eeprom_len;	u32 nar;#define ADM8211_TYPE_INTERSIL	0x00#define ADM8211_TYPE_RFMD	0x01#define ADM8211_TYPE_MARVEL	0x02#define ADM8211_TYPE_AIROHA	0x03#define ADM8211_TYPE_ADMTEK     0x05	unsigned int rf_type:3;	unsigned int bbp_type:3;	u8 specific_bbptype;	enum {		ADM8211_RFMD2948 = 0x0,		ADM8211_RFMD2958 = 0x1,		ADM8211_RFMD2958_RF3000_CONTROL_POWER = 0x2,		ADM8211_MAX2820 = 0x8,		ADM8211_AL2210L = 0xC,	/* Airoha */	} transceiver_type;};static const struct ieee80211_chan_range cranges[] = {	{1,  11},	/* FCC */	{1,  11},	/* IC */	{1,  13},	/* ETSI */	{10, 11},	/* SPAIN */	{10, 13},	/* FRANCE */	{14, 14},	/* MMK */	{1,  14},	/* MMK2 */};#endif /* ADM8211_H */

⌨️ 快捷键说明

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