180aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#ifndef __WINBOND_WBHAL_S_H 280aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#define __WINBOND_WBHAL_S_H 380aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg 480aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#include <linux/types.h> 5bd37b7fddf51431faf9c32cd22356421913cfce8Pekka Enberg#include <linux/if_ether.h> /* for ETH_ALEN */ 680aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg 75a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_LED_SET_MASK 0x001c 85a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_LED_SET_SHIFT 2 966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 105a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* supported RF type */ 1166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2825 0 1266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2827 1 1366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2828 2 1466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_MAXIM_2829 3 155a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_MAXIM_V1 15 1666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_AIROHA_2230 16 1766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_AIROHA_7230 17 185a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_AIROHA_2230S 18 195a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_WB_242 33 205a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define RF_WB_242_1 34 2166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define RF_DECIDE_BY_INF 255 2266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 235a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 245a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ---------------------------------------------------------------- 255a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * The follow define connect to upper layer 265a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * User must modify for connection between HAL and upper layer 275a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ---------------------------------------------------------------- 285a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 295a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 305a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 315a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================== 325a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Common define 335a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================== 345a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 355a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* Bit 5 */ 365a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_USB_MODE_BURST(_H) (_H->SoftwareSet & 0x20) 375a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 385a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* Scan interval */ 395a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define SCAN_MAX_CHNL_TIME (50) 405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* For TxL2 Frame typr recognise */ 4266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_3_DATA 0 4366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_MANAGEMENT 1 445a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FRAME_TYPE_802_11_MANAGEMENT_CHALLENGE 2 4566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_CONTROL 3 4666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_802_11_DATA 4 4766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define FRAME_TYPE_PROMISCUOUS 5 4866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 495a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* The follow definition is used for convert the frame------------ */ 505a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DOT_11_SEQUENCE_OFFSET 22 /* Sequence control offset */ 5166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_3_TYPE_OFFSET 12 525a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DOT_11_MAC_HEADER_SIZE 24 5366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DOT_11_SNAP_SIZE 6 545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DOT_11_TYPE_OFFSET 30 /* The start offset of 802.11 Frame. Type encapsulation. */ 5566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_SIFSTIME 10 565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define DEFAULT_FRAGMENT_THRESHOLD 2346 /* No fragment */ 5766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define DEFAULT_MSDU_LIFE_TIME 0xffff 5866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 595a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define LONG_PREAMBLE_PLUS_PLCPHEADER_TIME (144 + 48) 605a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME (72 + 24) 615a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION (16 + 4 + 6) 625a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define Tsym 4 6366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 645a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* Frame Type of Bits (2, 3)----------------------------------- */ 6566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_MANAGEMENT 0x00 6666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_CONTROL 0x04 6766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAC_TYPE_DATA 0x08 685a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MASK_FRAGMENT_NUMBER 0x000F 695a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define SEQUENCE_NUMBER_SHIFT 4 7066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 7166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_WOL_TYPE_WAKEUP_FRAME 0x01 7266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define HAL_WOL_TYPE_MAGIC_PACKET 0x02 7366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 745a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_WEP40 0 755a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_WEP104 1 765a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_TKIP 2 /* 128 bit key */ 775a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define HAL_KEYTYPE_AES_CCMP 3 /* 128 bit key */ 7866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 795a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* For VM state */ 8066101de10957e07a6fd0365d5af9adf650246d14Pavel Machekenum { 8166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_STOP = 0, 8266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_RUNNING, 8366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek VM_COMPLETED 8466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek}; 8566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 865a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================ 885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Normal Key table format 895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================ 905a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 925a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* The order of KEY index is MAPPING_KEY_START_INDEX > GROUP_KEY_START_INDEX */ 935a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_KEY_TABLE 24 /* 24 entry for storing key data */ 9466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define GROUP_KEY_START_INDEX 4 9566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MAPPING_KEY_START_INDEX 8 9666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 975a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 985a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 995a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Descriptor 1005a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 1015a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 1025a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_DESCRIPTOR_BUFFER_INDEX 8 /* Have to multiple of 2 */ 1035a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FLAG_ERROR_TX_MASK 0x000000bf 1045a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FLAG_ERROR_RX_MASK 0x0000083f 1055a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 1065a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define FLAG_BAND_RX_MASK 0x10000000 /* Bit 28 */ 1075a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 108c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enbergstruct R00_descriptor { 1095a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 11066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 1115a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 1125a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 11366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_or_buffer_status:1; 11466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_in_fifo:1; 11566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_RESERVED:2; 11666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_byte_count:12; 11766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_time_index:16; 11866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1195a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 1205a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 12166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_time_index:16; 12266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_receive_byte_count:12; 12366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_RESERVED:2; 12466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_in_fifo:1; 12566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R00_packet_or_buffer_status:1; 12666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1275a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 12866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 129c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg}; 13066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 131c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enbergstruct T00_descriptor { 1325a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 13366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 1345a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 1355a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 1365a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_first_mpdu:1; /* for hardware use */ 1375a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_last_mpdu:1; /* for hardware use */ 1385a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IsLastMpdu:1;/* 0:not 1:Yes for software used */ 1395a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IgnoreResult:1;/* The same mechanism with T00 setting. */ 1405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_RESERVED_ID:2;/* 3 bit ID reserved */ 1415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_tx_packet_id:4; 14266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED:4; 14366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_header_length:6; 14466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_frame_length:12; 14566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 1475a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 14866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_frame_length:12; 14966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_header_length:6; 15066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T00_RESERVED:4; 1515a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_tx_packet_id:4; 1525a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_RESERVED_ID:2; /* 3 bit ID reserved */ 1535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IgnoreResult:1; /* The same mechanism with T00 setting. */ 1545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_IsLastMpdu:1; /* 0:not 1:Yes for software used */ 1555a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_last_mpdu:1; /* for hardware use */ 1565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T00_first_mpdu:1; /* for hardware use */ 15766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1585a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 15966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 160c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg}; 16166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 162c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enbergstruct R01_descriptor { 1635a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 16466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 1655a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 1665a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 16766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_RESERVED:3; 16866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mod_type:1; 16966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_pre_type:1; 17066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_data_rate:3; 17166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_AGC_state:8; 17266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_LNA_state:2; 17366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_decryption_method:2; 17466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mic_error:1; 17566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_replay:1; 17666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_broadcast_frame:1; 17766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_multicast_frame:1; 17866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_directed_frame:1; 17966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_receive_frame_antenna_selection:1; 18066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_frame_receive_during_atim_window:1; 18166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_protocol_version_error:1; 18266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_authentication_frame_icv_error:1; 18366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_null_key_to_authentication_frame:1; 18466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_icv_error:1; 18566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_crc_error:1; 18666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 1875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 1885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 18966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_crc_error:1; 19066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_icv_error:1; 19166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_null_key_to_authentication_frame:1; 19266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_authentication_frame_icv_error:1; 19366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_protocol_version_error:1; 19466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_frame_receive_during_atim_window:1; 19566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_receive_frame_antenna_selection:1; 19666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_directed_frame:1; 19766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_multicast_frame:1; 19866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_broadcast_frame:1; 19966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_replay:1; 20066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mic_error:1; 20166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_decryption_method:2; 20266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_LNA_state:2; 20366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_AGC_state:8; 20466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_data_rate:3; 20566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_pre_type:1; 20666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_mod_type:1; 20766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R01_RESERVED:3; 20866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2095a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 21066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 211c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg}; 21266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 213c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enbergstruct T01_descriptor { 2145a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 21566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 2165a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 2175a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 21866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_rts_cts_duration:16; 21966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_fall_back_rate:3; 22066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_rts:1; 22166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_cts:1; 22266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_modulation_type:1; 22366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_plcp_header_length:1; 22466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_transmit_rate:3; 22566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_wep_id:2; 22666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_challenge_text:1; 22766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_inhibit_crc:1; 22866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_loop_back_wep_mode:1; 22966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_retry_abort_ebable:1; 23066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2315a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 2325a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 23366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_retry_abort_ebable:1; 23466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_loop_back_wep_mode:1; 23566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_inhibit_crc:1; 23666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_challenge_text:1; 23766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_wep_id:2; 23866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_transmit_rate:3; 23966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_plcp_header_length:1; 24066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_modulation_type:1; 24166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_cts:1; 24266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_add_rts:1; 24366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_fall_back_rate:3; 24466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T01_rts_cts_duration:16; 24566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 24766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 248c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg}; 24966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 250c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enbergstruct T02_descriptor { 2515a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 25266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 value; 2535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#ifdef _BIG_ENDIAN_ 2545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 2555a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IsLastMpdu:1; /* The same mechanism with T00 setting */ 2565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IgnoreResult:1; /* The same mechanism with T00 setting. */ 2575a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_RESERVED_ID:2; /* The same mechanism with T00 setting */ 25866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_Tx_PktID:4; 25966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_MPDU_Cnt:4; 26066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RTS_Cnt:4; 26166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED:7; 26266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_complete:1; 26366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort_due_to_TBTT:1; 26466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_effective_transmission_rate:1; 26566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_without_encryption_due_to_wep_on_false:1; 26666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_discard_due_to_null_wep_key:1; 26766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_1:1; 26866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_out_of_MaxTxMSDULiftTime:1; 26966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort:1; 27066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_fail:1; 27166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2725a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#else 2735a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 27466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_fail:1; 27566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort:1; 27666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_out_of_MaxTxMSDULiftTime:1; 27766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED_1:1; 27866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_discard_due_to_null_wep_key:1; 27966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_without_encryption_due_to_wep_on_false:1; 28066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_effective_transmission_rate:1; 28166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_abort_due_to_TBTT:1; 28266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_transmit_complete:1; 28366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RESERVED:7; 28466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_RTS_Cnt:4; 28566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_MPDU_Cnt:4; 28666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T02_Tx_PktID:4; 2875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_RESERVED_ID:2; /* The same mechanism with T00 setting */ 2885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IgnoreResult:1; /* The same mechanism with T00 setting. */ 2895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 T02_IsLastMpdu:1; /* The same mechanism with T00 setting */ 29066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 2915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#endif 29266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 293c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg}; 29466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2955a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindleystruct wb35_descriptor { /* Skip length = 8 DWORD */ 2965a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* ID for descriptor ---, The field doesn't be cleard in the operation of Descriptor definition */ 29766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Descriptor_ID; 2985a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* ----------------------The above region doesn't be cleared by DESCRIPTOR_RESET------ */ 29966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 RESERVED[3]; 30066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 30166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold; 3025a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 InternalUsed; /* Only can be used by operation of descriptor definition */ 3035a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 Type; /* 0: 802.3 1:802.11 data frame 2:802.11 management frame */ 30466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3055a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 PreambleMode;/* 0: short 1:long */ 30666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 TxRate; 30766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 FragmentCount; 3085a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 EapFix; /* For speed up key install */ 30966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3105a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R00 and T00 ------------------------------ */ 3115a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 312c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg struct R00_descriptor R00; 313c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg struct T00_descriptor T00; 31466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 31566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3165a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R01 and T01 ------------------------------ */ 3175a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 318c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg struct R01_descriptor R01; 319c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg struct T01_descriptor T01; 32066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 32166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3225a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R02 and T02 ------------------------------ */ 3235a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 3245a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 R02; 325c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg struct T02_descriptor T02; 32666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 32766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3285a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For R03 and T03 ------------------------------ */ 3295a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For software used */ 3305a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley union { 33166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 R03; 33266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 T03; 3335a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct { 33466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 buffer_number; 33566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 buffer_start_index; 33666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 buffer_total_size; 33766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 33866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek }; 33966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For storing the buffer */ 3415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 buffer_size[MAX_DESCRIPTOR_BUFFER_INDEX]; 3425a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley void *buffer_address[MAX_DESCRIPTOR_BUFFER_INDEX]; 34327d4642105b3fc6781e9110c7f4d0741434985caPekka Enberg}; 34466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3455a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_TXVGA_EEPROM 9 /* How many word(u16) of EEPROM will be used for TxVGA */ 3465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley#define MAX_RF_PARAMETER 32 34766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 348c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enbergstruct txvga_for_50 { 3495a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 ChanNo; 3505a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 TxVgaValue; 351c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg}; 35266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* 3545a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================================== 3555a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Device related include 3565a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ============================================== 3575a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 35866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3599ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35reg_s.h" 3609ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35tx_s.h" 3619ce922fde7fb44a8690aa37d3c7f4f0cf5d921caPekka Enberg#include "wb35rx_s.h" 36266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3635a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley/* For Hal using ============================================ */ 3648e41b4b65d20f1321bc969b5de6038d5be33c9bdPekka Enbergstruct hw_data { 3655a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For compatible with 33 */ 36666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 revision; 3675a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 BB3c_cal; /* The value for Tx calibration comes from EEPROM */ 3685a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 BB54_cal; /* The value for Rx calibration comes from EEPROM */ 36966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3705a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For surprise remove */ 3715a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 SurpriseRemove; /* 0: Normal 1: Surprise remove */ 37266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 IsKeyPreSet; 3735a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 CalOneTime; 37466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 37566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 VCO_trim; 37666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 37766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 FragCount; 3785a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 DMAFix; /* V1_DMA_FIX The variable can be removed if driver want to save mem space for V2. */ 3795a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 3805a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 3815a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * =============================================== 3825a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Definition for MAC address 3835a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * =============================================== 3845a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 3855a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 PermanentMacAddress[ETH_ALEN + 2]; /* The Ethernet addr that are stored in EEPROM. + 2 to 8-byte alignment */ 3865a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 CurrentMacAddress[ETH_ALEN + 2]; /* The Enthernet addr that are in used. + 2 to 8-byte alignment */ 3875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley 3885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 3895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 3905a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Definition for 802.11 3915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ========================================= 3925a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 3935a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 *bssid_pointer; /* Used by hal_get_bssid for return value */ 3945a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 bssid[8]; /* Only 6 byte will be used. 8 byte is required for read buffer */ 3955a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 ssid[32]; /* maximum ssid length is 32 byte */ 39666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 39766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 AID; 39866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 ssid_length; 39966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 Channel; 40066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 ListenInterval; 40266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 CapabilityInformation; 40366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 40466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 BeaconPeriod; 40566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 ProbeDelay; 40666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4075a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 bss_type;/* 0: IBSS_NET or 1:ESS_NET */ 4085a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 preamble;/* 0: short preamble, 1: long preamble */ 4095a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 slot_time_select; /* 9 or 20 value */ 4105a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 phy_type; /* Phy select */ 41166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 41266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 phy_para[MAX_RF_PARAMETER]; 41366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 phy_number; 41466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4155a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 CurrentRadioSw; /* 0:On 1:Off */ 4165a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 CurrentRadioHw; /* 0:On 1:Off */ 41766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4185a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 *power_save_point; /* Used by hal_get_power_save_mode for return value */ 41966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 cwmin; 42066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 desired_power_save; 4215a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 dtim; /* Is running dtim */ 4225a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 mapping_key_replace_index; /* In Key table, the next index be replaced */ 42366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 42466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 MaxReceiveLifeTime; 42566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold; 42666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 FragmentThreshold_tmp; 42766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u16 cwmax; 42866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4295a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 Key_slot[MAX_KEY_TABLE][8]; /* Ownership record for key slot. For Alignment */ 4305a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 Key_content[MAX_KEY_TABLE][12]; /* 10DW for each entry + 2 for burst command (Off and On valid bit) */ 43166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u8 CurrentDefaultKeyIndex; 43266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 CurrentDefaultKeyLength; 43366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4345a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 4355a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================================== 4365a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Variable for each module 4375a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * ================================================== 4385a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 4392894c6cd0ea84c30fc028ba92f8e61fbe7971e65Pekka Enberg struct usb_device *udev; 4405a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct wb35_reg reg; /* Need Wb35Reg.h */ 4415a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct wb35_tx Wb35Tx; /* Need Wb35Tx.h */ 4425a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct wb35_rx Wb35Rx; /* Need Wb35Rx.h */ 44366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4445a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley struct timer_list LEDTimer; /* For LED */ 44566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4465a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LEDpoint; /* For LED */ 44766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4485a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 dto_tx_retry_count; 4495a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 dto_tx_frag_count; 4505a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 rx_ok_count[13]; /* index=0: total rx ok */ 4515a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 rx_err_count[13]; /* index=0: total rx err */ 45266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4535a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* for Tx debug */ 45466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_TBTT_start_count; 45566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_ETR_count; 45666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_WepOn_false_count; 45766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_Null_key_count; 45866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 tx_retry_count[8]; 45966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4605a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 PowerIndexFromEEPROM; /* For 2412MHz */ 4615a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 power_index; 4625a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 IsWaitJoinComplete; /* TRUE: set join request */ 4635a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 band; 46466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4655a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 SoftwareSet; 4665a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 Reserved_s; 46766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4685a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 IsInitOK; /* 0: Driver starting 1: Driver init OK */ 46966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4705a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For Phy calibration */ 4715a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley s32 iq_rsdl_gain_tx_d2; 4725a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley s32 iq_rsdl_phase_tx_d2; 4735a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 txvga_setting_for_cal; 47466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4755a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 TxVgaSettingInEEPROM[(((MAX_TXVGA_EEPROM * 2) + 3) & ~0x03)]; /* For EEPROM value */ 4765a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u8 TxVgaFor24[16]; /* Max is 14, 2 for alignment */ 477c4d562a99fdf6ef66ee974f54efea66d09d504cfPekka Enberg struct txvga_for_50 TxVgaFor50[36]; /* 35 channels in 5G. 35x2 = 70 byte. 2 for alignments */ 47866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4795a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 Scan_Interval; 4805a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u16 RESERVED6; 48166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4825a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* LED control */ 48366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 LED_control; 4845a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* 4855a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * LED_control 4 byte: Gray_Led_1[3] Gray_Led_0[2] Led[1] Led[0] 4865a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Gray_Led 4875a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * For Led gray setting 4885a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Led 4895a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 0: normal control, 4905a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * LED behavior will decide by EEPROM setting 4915a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 1: Turn off specific LED 4925a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 2: Always on specific LED 4935a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 3: slow blinking specific LED 4945a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 4: fast blinking specific LED 4955a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 5: WPS led control is set. Led0 is Red, Led1 id Green 4965a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 4975a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * Led[1] is parameter for WPS LED mode 4985a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 1:InProgress 4995a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 2: Error 5005a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 3: Session overlap 5015a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley * 4: Success control 5025a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley */ 5035a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LED_LinkOn; /* Turn LED on control */ 5045a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LED_Scanning; /* Let LED in scan process control */ 5055a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 LED_Blinking; /* Temp variable for shining */ 50666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 RxByteCountLast; 50766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek u32 TxByteCountLast; 50866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5095a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley /* For global timer */ 5105a7df3c449e7db7cf4b7807862e11f11c47c2331Lars Lindley u32 time_count; /* TICK_TIME_100ms 1 = 100ms */ 5118e41b4b65d20f1321bc969b5de6038d5be33c9bdPekka Enberg}; 51266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 51380aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#endif 514