📄 ipw2200.h
字号:
#define IPW_ACTIVITY_LED (1<<4)#define IPW_ASSOCIATED_LED (1<<5)#define IPW_OFDM_LED (1<<6)#define IPW_RESET_REG_SW_RESET (1<<7)#define IPW_RESET_REG_MASTER_DISABLED (1<<8)#define IPW_RESET_REG_STOP_MASTER (1<<9)#define IPW_GATE_ODMA (1<<25)#define IPW_GATE_IDMA (1<<26)#define IPW_ARC_KESHET_CONFIG (1<<27)#define IPW_GATE_ADMA (1<<29)#define IPW_CSR_CIS_UPPER_BOUND 0x00000200#define IPW_DOMAIN_0_END 0x1000#define CLX_MEM_BAR_SIZE 0x1000#define IPW_BASEBAND_CONTROL_STATUS 0X00200000#define IPW_BASEBAND_TX_FIFO_WRITE 0X00200004#define IPW_BASEBAND_RX_FIFO_READ 0X00200004#define IPW_BASEBAND_CONTROL_STORE 0X00200010#define IPW_INTERNAL_CMD_EVENT 0X00300004#define IPW_BASEBAND_POWER_DOWN 0x00000001#define IPW_MEM_HALT_AND_RESET 0x003000e0/* defgroup bits_halt_reset MEM_HALT_AND_RESET register bits */#define IPW_BIT_HALT_RESET_ON 0x80000000#define IPW_BIT_HALT_RESET_OFF 0x00000000#define CB_LAST_VALID 0x20000000#define CB_INT_ENABLED 0x40000000#define CB_VALID 0x80000000#define CB_SRC_LE 0x08000000#define CB_DEST_LE 0x04000000#define CB_SRC_AUTOINC 0x00800000#define CB_SRC_IO_GATED 0x00400000#define CB_DEST_AUTOINC 0x00080000#define CB_SRC_SIZE_LONG 0x00200000#define CB_DEST_SIZE_LONG 0x00020000/* DMA DEFINES */#define DMA_CONTROL_SMALL_CB_CONST_VALUE 0x00540000#define DMA_CB_STOP_AND_ABORT 0x00000C00#define DMA_CB_START 0x00000100#define IPW_SHARED_SRAM_SIZE 0x00030000#define IPW_SHARED_SRAM_DMA_CONTROL 0x00027000#define CB_MAX_LENGTH 0x1FFF#define IPW_HOST_EEPROM_DATA_SRAM_SIZE 0xA18#define IPW_EEPROM_IMAGE_SIZE 0x100/* DMA defs */#define IPW_DMA_I_CURRENT_CB 0x003000D0#define IPW_DMA_O_CURRENT_CB 0x003000D4#define IPW_DMA_I_DMA_CONTROL 0x003000A4#define IPW_DMA_I_CB_BASE 0x003000A0#define IPW_TX_CMD_QUEUE_BD_BASE 0x00000200#define IPW_TX_CMD_QUEUE_BD_SIZE 0x00000204#define IPW_TX_QUEUE_0_BD_BASE 0x00000208#define IPW_TX_QUEUE_0_BD_SIZE (0x0000020C)#define IPW_TX_QUEUE_1_BD_BASE 0x00000210#define IPW_TX_QUEUE_1_BD_SIZE 0x00000214#define IPW_TX_QUEUE_2_BD_BASE 0x00000218#define IPW_TX_QUEUE_2_BD_SIZE (0x0000021C)#define IPW_TX_QUEUE_3_BD_BASE 0x00000220#define IPW_TX_QUEUE_3_BD_SIZE 0x00000224#define IPW_RX_BD_BASE 0x00000240#define IPW_RX_BD_SIZE 0x00000244#define IPW_RFDS_TABLE_LOWER 0x00000500#define IPW_TX_CMD_QUEUE_READ_INDEX 0x00000280#define IPW_TX_QUEUE_0_READ_INDEX 0x00000284#define IPW_TX_QUEUE_1_READ_INDEX 0x00000288#define IPW_TX_QUEUE_2_READ_INDEX (0x0000028C)#define IPW_TX_QUEUE_3_READ_INDEX 0x00000290#define IPW_RX_READ_INDEX (0x000002A0)#define IPW_TX_CMD_QUEUE_WRITE_INDEX (0x00000F80)#define IPW_TX_QUEUE_0_WRITE_INDEX (0x00000F84)#define IPW_TX_QUEUE_1_WRITE_INDEX (0x00000F88)#define IPW_TX_QUEUE_2_WRITE_INDEX (0x00000F8C)#define IPW_TX_QUEUE_3_WRITE_INDEX (0x00000F90)#define IPW_RX_WRITE_INDEX (0x00000FA0)/* * EEPROM Related Definitions */#define IPW_EEPROM_DATA_SRAM_ADDRESS (IPW_SHARED_LOWER_BOUND + 0x814)#define IPW_EEPROM_DATA_SRAM_SIZE (IPW_SHARED_LOWER_BOUND + 0x818)#define IPW_EEPROM_LOAD_DISABLE (IPW_SHARED_LOWER_BOUND + 0x81C)#define IPW_EEPROM_DATA (IPW_SHARED_LOWER_BOUND + 0x820)#define IPW_EEPROM_UPPER_ADDRESS (IPW_SHARED_LOWER_BOUND + 0x9E0)#define IPW_STATION_TABLE_LOWER (IPW_SHARED_LOWER_BOUND + 0xA0C)#define IPW_STATION_TABLE_UPPER (IPW_SHARED_LOWER_BOUND + 0xB0C)#define IPW_REQUEST_ATIM (IPW_SHARED_LOWER_BOUND + 0xB0C)#define IPW_ATIM_SENT (IPW_SHARED_LOWER_BOUND + 0xB10)#define IPW_WHO_IS_AWAKE (IPW_SHARED_LOWER_BOUND + 0xB14)#define IPW_DURING_ATIM_WINDOW (IPW_SHARED_LOWER_BOUND + 0xB18)#define MSB 1#define LSB 0#define WORD_TO_BYTE(_word) ((_word) * sizeof(u16))#define GET_EEPROM_ADDR(_wordoffset,_byteoffset) \ ( WORD_TO_BYTE(_wordoffset) + (_byteoffset) )/* EEPROM access by BYTE */#define EEPROM_PME_CAPABILITY (GET_EEPROM_ADDR(0x09,MSB)) /* 1 byte */#define EEPROM_MAC_ADDRESS (GET_EEPROM_ADDR(0x21,LSB)) /* 6 byte */#define EEPROM_VERSION (GET_EEPROM_ADDR(0x24,MSB)) /* 1 byte */#define EEPROM_NIC_TYPE (GET_EEPROM_ADDR(0x25,LSB)) /* 1 byte */#define EEPROM_SKU_CAPABILITY (GET_EEPROM_ADDR(0x25,MSB)) /* 1 byte */#define EEPROM_COUNTRY_CODE (GET_EEPROM_ADDR(0x26,LSB)) /* 3 bytes */#define EEPROM_IBSS_CHANNELS_BG (GET_EEPROM_ADDR(0x28,LSB)) /* 2 bytes */#define EEPROM_IBSS_CHANNELS_A (GET_EEPROM_ADDR(0x29,MSB)) /* 5 bytes */#define EEPROM_BSS_CHANNELS_BG (GET_EEPROM_ADDR(0x2c,LSB)) /* 2 bytes */#define EEPROM_HW_VERSION (GET_EEPROM_ADDR(0x72,LSB)) /* 2 bytes *//* NIC type as found in the one byte EEPROM_NIC_TYPE offset*/#define EEPROM_NIC_TYPE_0 0#define EEPROM_NIC_TYPE_1 1#define EEPROM_NIC_TYPE_2 2#define EEPROM_NIC_TYPE_3 3#define EEPROM_NIC_TYPE_4 4#define FW_MEM_REG_LOWER_BOUND 0x00300000#define FW_MEM_REG_EEPROM_ACCESS (FW_MEM_REG_LOWER_BOUND + 0x40)#define IPW_EVENT_REG (FW_MEM_REG_LOWER_BOUND + 0x04)#define EEPROM_BIT_SK (1<<0)#define EEPROM_BIT_CS (1<<1)#define EEPROM_BIT_DI (1<<2)#define EEPROM_BIT_DO (1<<4)#define EEPROM_CMD_READ 0x2/* Interrupts masks */#define IPW_INTA_NONE 0x00000000#define IPW_INTA_BIT_RX_TRANSFER 0x00000002#define IPW_INTA_BIT_STATUS_CHANGE 0x00000010#define IPW_INTA_BIT_BEACON_PERIOD_EXPIRED 0x00000020//Inta Bits for CF#define IPW_INTA_BIT_TX_CMD_QUEUE 0x00000800#define IPW_INTA_BIT_TX_QUEUE_1 0x00001000#define IPW_INTA_BIT_TX_QUEUE_2 0x00002000#define IPW_INTA_BIT_TX_QUEUE_3 0x00004000#define IPW_INTA_BIT_TX_QUEUE_4 0x00008000#define IPW_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE 0x00010000#define IPW_INTA_BIT_PREPARE_FOR_POWER_DOWN 0x00100000#define IPW_INTA_BIT_POWER_DOWN 0x00200000#define IPW_INTA_BIT_FW_INITIALIZATION_DONE 0x01000000#define IPW_INTA_BIT_FW_CARD_DISABLE_PHY_OFF_DONE 0x02000000#define IPW_INTA_BIT_RF_KILL_DONE 0x04000000#define IPW_INTA_BIT_FATAL_ERROR 0x40000000#define IPW_INTA_BIT_PARITY_ERROR 0x80000000/* Interrupts enabled at init time. */#define IPW_INTA_MASK_ALL \ (IPW_INTA_BIT_TX_QUEUE_1 | \ IPW_INTA_BIT_TX_QUEUE_2 | \ IPW_INTA_BIT_TX_QUEUE_3 | \ IPW_INTA_BIT_TX_QUEUE_4 | \ IPW_INTA_BIT_TX_CMD_QUEUE | \ IPW_INTA_BIT_RX_TRANSFER | \ IPW_INTA_BIT_FATAL_ERROR | \ IPW_INTA_BIT_PARITY_ERROR | \ IPW_INTA_BIT_STATUS_CHANGE | \ IPW_INTA_BIT_FW_INITIALIZATION_DONE | \ IPW_INTA_BIT_BEACON_PERIOD_EXPIRED | \ IPW_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE | \ IPW_INTA_BIT_PREPARE_FOR_POWER_DOWN | \ IPW_INTA_BIT_POWER_DOWN | \ IPW_INTA_BIT_RF_KILL_DONE )/* FW event log definitions */#define EVENT_ELEM_SIZE (3 * sizeof(u32))#define EVENT_START_OFFSET (1 * sizeof(u32) + 2 * sizeof(u16))/* FW error log definitions */#define ERROR_ELEM_SIZE (7 * sizeof(u32))#define ERROR_START_OFFSET (1 * sizeof(u32))/* TX power level (dbm) */#define IPW_TX_POWER_MIN -12#define IPW_TX_POWER_MAX 20#define IPW_TX_POWER_DEFAULT IPW_TX_POWER_MAXenum { IPW_FW_ERROR_OK = 0, IPW_FW_ERROR_FAIL, IPW_FW_ERROR_MEMORY_UNDERFLOW, IPW_FW_ERROR_MEMORY_OVERFLOW, IPW_FW_ERROR_BAD_PARAM, IPW_FW_ERROR_BAD_CHECKSUM, IPW_FW_ERROR_NMI_INTERRUPT, IPW_FW_ERROR_BAD_DATABASE, IPW_FW_ERROR_ALLOC_FAIL, IPW_FW_ERROR_DMA_UNDERRUN, IPW_FW_ERROR_DMA_STATUS, IPW_FW_ERROR_DINO_ERROR, IPW_FW_ERROR_EEPROM_ERROR, IPW_FW_ERROR_SYSASSERT, IPW_FW_ERROR_FATAL_ERROR};#define AUTH_OPEN 0#define AUTH_SHARED_KEY 1#define AUTH_IGNORE 3#define HC_ASSOCIATE 0#define HC_REASSOCIATE 1#define HC_DISASSOCIATE 2#define HC_IBSS_START 3#define HC_IBSS_RECONF 4#define HC_DISASSOC_QUIET 5#define HC_QOS_SUPPORT_ASSOC 0x01#define IPW_RATE_CAPABILITIES 1#define IPW_RATE_CONNECT 0/* * Rate values and masks */#define IPW_TX_RATE_1MB 0x0A#define IPW_TX_RATE_2MB 0x14#define IPW_TX_RATE_5MB 0x37#define IPW_TX_RATE_6MB 0x0D#define IPW_TX_RATE_9MB 0x0F#define IPW_TX_RATE_11MB 0x6E#define IPW_TX_RATE_12MB 0x05#define IPW_TX_RATE_18MB 0x07#define IPW_TX_RATE_24MB 0x09#define IPW_TX_RATE_36MB 0x0B#define IPW_TX_RATE_48MB 0x01#define IPW_TX_RATE_54MB 0x03#define IPW_ORD_TABLE_ID_MASK 0x0000FF00#define IPW_ORD_TABLE_VALUE_MASK 0x000000FF#define IPW_ORD_TABLE_0_MASK 0x0000F000#define IPW_ORD_TABLE_1_MASK 0x0000F100#define IPW_ORD_TABLE_2_MASK 0x0000F200#define IPW_ORD_TABLE_3_MASK 0x0000F300#define IPW_ORD_TABLE_4_MASK 0x0000F400#define IPW_ORD_TABLE_5_MASK 0x0000F500#define IPW_ORD_TABLE_6_MASK 0x0000F600#define IPW_ORD_TABLE_7_MASK 0x0000F700/* * Table 0 Entries (all entries are 32 bits) */enum { IPW_ORD_STAT_TX_CURR_RATE = IPW_ORD_TABLE_0_MASK + 1, IPW_ORD_STAT_FRAG_TRESHOLD, IPW_ORD_STAT_RTS_THRESHOLD, IPW_ORD_STAT_TX_HOST_REQUESTS, IPW_ORD_STAT_TX_HOST_COMPLETE, IPW_ORD_STAT_TX_DIR_DATA, IPW_ORD_STAT_TX_DIR_DATA_B_1, IPW_ORD_STAT_TX_DIR_DATA_B_2, IPW_ORD_STAT_TX_DIR_DATA_B_5_5, IPW_ORD_STAT_TX_DIR_DATA_B_11, /* Hole */ IPW_ORD_STAT_TX_DIR_DATA_G_1 = IPW_ORD_TABLE_0_MASK + 19, IPW_ORD_STAT_TX_DIR_DATA_G_2, IPW_ORD_STAT_TX_DIR_DATA_G_5_5, IPW_ORD_STAT_TX_DIR_DATA_G_6, IPW_ORD_STAT_TX_DIR_DATA_G_9, IPW_ORD_STAT_TX_DIR_DATA_G_11, IPW_ORD_STAT_TX_DIR_DATA_G_12, IPW_ORD_STAT_TX_DIR_DATA_G_18, IPW_ORD_STAT_TX_DIR_DATA_G_24, IPW_ORD_STAT_TX_DIR_DATA_G_36, IPW_ORD_STAT_TX_DIR_DATA_G_48, IPW_ORD_STAT_TX_DIR_DATA_G_54, IPW_ORD_STAT_TX_NON_DIR_DATA, IPW_ORD_STAT_TX_NON_DIR_DATA_B_1, IPW_ORD_STAT_TX_NON_DIR_DATA_B_2, IPW_ORD_STAT_TX_NON_DIR_DATA_B_5_5, IPW_ORD_STAT_TX_NON_DIR_DATA_B_11, /* Hole */ IPW_ORD_STAT_TX_NON_DIR_DATA_G_1 = IPW_ORD_TABLE_0_MASK + 44, IPW_ORD_STAT_TX_NON_DIR_DATA_G_2, IPW_ORD_STAT_TX_NON_DIR_DATA_G_5_5, IPW_ORD_STAT_TX_NON_DIR_DATA_G_6, IPW_ORD_STAT_TX_NON_DIR_DATA_G_9, IPW_ORD_STAT_TX_NON_DIR_DATA_G_11, IPW_ORD_STAT_TX_NON_DIR_DATA_G_12, IPW_ORD_STAT_TX_NON_DIR_DATA_G_18, IPW_ORD_STAT_TX_NON_DIR_DATA_G_24, IPW_ORD_STAT_TX_NON_DIR_DATA_G_36, IPW_ORD_STAT_TX_NON_DIR_DATA_G_48, IPW_ORD_STAT_TX_NON_DIR_DATA_G_54, IPW_ORD_STAT_TX_RETRY, IPW_ORD_STAT_TX_FAILURE, IPW_ORD_STAT_RX_ERR_CRC, IPW_ORD_STAT_RX_ERR_ICV, IPW_ORD_STAT_RX_NO_BUFFER, IPW_ORD_STAT_FULL_SCANS, IPW_ORD_STAT_PARTIAL_SCANS, IPW_ORD_STAT_TGH_ABORTED_SCANS, IPW_ORD_STAT_TX_TOTAL_BYTES, IPW_ORD_STAT_CURR_RSSI_RAW, IPW_ORD_STAT_RX_BEACON, IPW_ORD_STAT_MISSED_BEACONS, IPW_ORD_TABLE_0_LAST};#define IPW_RSSI_TO_DBM 112/* Table 1 Entries */enum { IPW_ORD_TABLE_1_LAST = IPW_ORD_TABLE_1_MASK | 1,};/* * Table 2 Entries * * FW_VERSION: 16 byte string * FW_DATE: 16 byte string (only 14 bytes used) * UCODE_VERSION: 4 byte version code * UCODE_DATE: 5 bytes code code * ADDAPTER_MAC: 6 byte MAC address * RTC: 4 byte clock */enum { IPW_ORD_STAT_FW_VERSION = IPW_ORD_TABLE_2_MASK | 1, IPW_ORD_STAT_FW_DATE, IPW_ORD_STAT_UCODE_VERSION, IPW_ORD_STAT_UCODE_DATE, IPW_ORD_STAT_ADAPTER_MAC, IPW_ORD_STAT_RTC, IPW_ORD_TABLE_2_LAST};/* Table 3 */enum { IPW_ORD_STAT_TX_PACKET = IPW_ORD_TABLE_3_MASK | 0, IPW_ORD_STAT_TX_PACKET_FAILURE, IPW_ORD_STAT_TX_PACKET_SUCCESS, IPW_ORD_STAT_TX_PACKET_ABORTED, IPW_ORD_TABLE_3_LAST};/* Table 4 */enum { IPW_ORD_TABLE_4_LAST = IPW_ORD_TABLE_4_MASK};/* Table 5 */enum { IPW_ORD_STAT_AVAILABLE_AP_COUNT = IPW_ORD_TABLE_5_MASK, IPW_ORD_STAT_AP_ASSNS, IPW_ORD_STAT_ROAM, IPW_ORD_STAT_ROAM_CAUSE_MISSED_BEACONS, IPW_ORD_STAT_ROAM_CAUSE_UNASSOC, IPW_ORD_STAT_ROAM_CAUSE_RSSI, IPW_ORD_STAT_ROAM_CAUSE_LINK_QUALITY, IPW_ORD_STAT_ROAM_CAUSE_AP_LOAD_BALANCE, IPW_ORD_STAT_ROAM_CAUSE_AP_NO_TX, IPW_ORD_STAT_LINK_UP, IPW_ORD_STAT_LINK_DOWN, IPW_ORD_ANTENNA_DIVERSITY, IPW_ORD_CURR_FREQ, IPW_ORD_TABLE_5_LAST};/* Table 6 */enum { IPW_ORD_COUNTRY_CODE = IPW_ORD_TABLE_6_MASK, IPW_ORD_CURR_BSSID, IPW_ORD_CURR_SSID, IPW_ORD_TABLE_6_LAST};/* Table 7 */enum { IPW_ORD_STAT_PERCENT_MISSED_BEACONS = IPW_ORD_TABLE_7_MASK, IPW_ORD_STAT_PERCENT_TX_RETRIES, IPW_ORD_STAT_PERCENT_LINK_QUALITY, IPW_ORD_STAT_CURR_RSSI_DBM, IPW_ORD_TABLE_7_LAST};#define IPW_ERROR_LOG (IPW_SHARED_LOWER_BOUND + 0x410)#define IPW_EVENT_LOG (IPW_SHARED_LOWER_BOUND + 0x414)#define IPW_ORDINALS_TABLE_LOWER (IPW_SHARED_LOWER_BOUND + 0x500)#define IPW_ORDINALS_TABLE_0 (IPW_SHARED_LOWER_BOUND + 0x180)#define IPW_ORDINALS_TABLE_1 (IPW_SHARED_LOWER_BOUND + 0x184)#define IPW_ORDINALS_TABLE_2 (IPW_SHARED_LOWER_BOUND + 0x188)#define IPW_MEM_FIXED_OVERRIDE (IPW_SHARED_LOWER_BOUND + 0x41C)struct ipw_fixed_rate { u16 tx_rates; u16 reserved;} __attribute__ ((packed));#define IPW_INDIRECT_ADDR_MASK (~0x3ul)struct host_cmd { u8 cmd; u8 len; u16 reserved; u32 param[TFD_CMD_IMMEDIATE_PAYLOAD_LENGTH];} __attribute__ ((packed));struct ipw_cmd_log { unsigned long jiffies; int retcode; struct host_cmd cmd;};#define CFG_BT_COEXISTENCE_MIN 0x00#define CFG_BT_COEXISTENCE_DEFER 0x02#define CFG_BT_COEXISTENCE_KILL 0x04#define CFG_BT_COEXISTENCE_WME_OVER_BT 0x08#define CFG_BT_COEXISTENCE_OOB 0x10#define CFG_BT_COEXISTENCE_MAX 0xFF#define CFG_BT_COEXISTENCE_DEF 0x80 /* read Bt from EEPROM */#define CFG_CTS_TO_ITSELF_ENABLED_MIN 0x0#define CFG_CTS_TO_ITSELF_ENABLED_MAX 0x1#define CFG_CTS_TO_ITSELF_ENABLED_DEF CFG_CTS_TO_ITSELF_ENABLED_MIN#define CFG_SYS_ANTENNA_BOTH 0x000#define CFG_SYS_ANTENNA_A 0x001#define CFG_SYS_ANTENNA_B 0x003/* * The definitions below were lifted off the ipw2100 driver, which only * supports 'b' mode, so I'm sure these are not exactly correct. * * Somebody fix these!! */#define REG_MIN_CHANNEL 0#define REG_MAX_CHANNEL 14#define REG_CHANNEL_MASK 0x00003FFF#define IPW_IBSS_11B_DEFAULT_MASK 0x87ff#define IPW_MAX_CONFIG_RETRIES 10static inline u32 frame_hdr_len(struct ieee80211_hdr_4addr *hdr){ u32 retval; u16 fc; retval = sizeof(struct ieee80211_hdr_3addr); fc = le16_to_cpu(hdr->frame_ctl); /* * Function ToDS FromDS * IBSS 0 0 * To AP 1 0 * From AP 0 1 * WDS (bridge) 1 1 * * Only WDS frames use Address4 among them. --YZ */ if (!(fc & IEEE80211_FCTL_TODS) || !(fc & IEEE80211_FCTL_FROMDS)) retval -= ETH_ALEN; return retval;}#endif /* __ipw2200_h__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -