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