158391efdSNathan Chancellor /* SPDX-License-Identifier: GPL-2.0 */ 2554c0a3aSHans de Goede /****************************************************************************** 3554c0a3aSHans de Goede * 4554c0a3aSHans de Goede * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. 5554c0a3aSHans de Goede * 6554c0a3aSHans de Goede ******************************************************************************/ 7554c0a3aSHans de Goede 8554c0a3aSHans de Goede 9554c0a3aSHans de Goede #ifndef __HALDMOUTSRC_H__ 10554c0a3aSHans de Goede #define __HALDMOUTSRC_H__ 11554c0a3aSHans de Goede 12554c0a3aSHans de Goede #include "odm_EdcaTurboCheck.h" 13554c0a3aSHans de Goede #include "odm_DIG.h" 14554c0a3aSHans de Goede #include "odm_DynamicBBPowerSaving.h" 15554c0a3aSHans de Goede #include "odm_DynamicTxPower.h" 16554c0a3aSHans de Goede #include "odm_CfoTracking.h" 17554c0a3aSHans de Goede 18554c0a3aSHans de Goede #define TP_MODE 0 19554c0a3aSHans de Goede #define RSSI_MODE 1 20554c0a3aSHans de Goede #define TRAFFIC_LOW 0 21554c0a3aSHans de Goede #define TRAFFIC_HIGH 1 22554c0a3aSHans de Goede #define NONE 0 23554c0a3aSHans de Goede 24554c0a3aSHans de Goede /* 3 Tx Power Tracking */ 25554c0a3aSHans de Goede /* 3 ============================================================ */ 26554c0a3aSHans de Goede #define DPK_DELTA_MAPPING_NUM 13 27554c0a3aSHans de Goede #define index_mapping_HP_NUM 15 28554c0a3aSHans de Goede #define OFDM_TABLE_SIZE 43 29554c0a3aSHans de Goede #define CCK_TABLE_SIZE 33 30554c0a3aSHans de Goede #define TXSCALE_TABLE_SIZE 37 31554c0a3aSHans de Goede #define TXPWR_TRACK_TABLE_SIZE 30 32554c0a3aSHans de Goede #define DELTA_SWINGIDX_SIZE 30 33554c0a3aSHans de Goede #define BAND_NUM 4 34554c0a3aSHans de Goede 35554c0a3aSHans de Goede /* 3 PSD Handler */ 36554c0a3aSHans de Goede /* 3 ============================================================ */ 37554c0a3aSHans de Goede 38554c0a3aSHans de Goede #define AFH_PSD 1 /* 0:normal PSD scan, 1: only do 20 pts PSD */ 39554c0a3aSHans de Goede #define MODE_40M 0 /* 0:20M, 1:40M */ 40554c0a3aSHans de Goede #define PSD_TH2 3 41554c0a3aSHans de Goede #define PSD_CHMIN 20 /* Minimum channel number for BT AFH */ 42554c0a3aSHans de Goede #define SIR_STEP_SIZE 3 43554c0a3aSHans de Goede #define Smooth_Size_1 5 44554c0a3aSHans de Goede #define Smooth_TH_1 3 45554c0a3aSHans de Goede #define Smooth_Size_2 10 46554c0a3aSHans de Goede #define Smooth_TH_2 4 47554c0a3aSHans de Goede #define Smooth_Size_3 20 48554c0a3aSHans de Goede #define Smooth_TH_3 4 49554c0a3aSHans de Goede #define Smooth_Step_Size 5 50554c0a3aSHans de Goede #define Adaptive_SIR 1 51554c0a3aSHans de Goede #define PSD_RESCAN 4 52554c0a3aSHans de Goede #define PSD_SCAN_INTERVAL 700 /* ms */ 53554c0a3aSHans de Goede 54554c0a3aSHans de Goede /* 8723A High Power IGI Setting */ 55554c0a3aSHans de Goede #define DM_DIG_HIGH_PWR_IGI_LOWER_BOUND 0x22 56554c0a3aSHans de Goede #define DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28 57554c0a3aSHans de Goede #define DM_DIG_HIGH_PWR_THRESHOLD 0x3a 58554c0a3aSHans de Goede #define DM_DIG_LOW_PWR_THRESHOLD 0x14 59554c0a3aSHans de Goede 60554c0a3aSHans de Goede /* ANT Test */ 61554c0a3aSHans de Goede #define ANTTESTALL 0x00 /* Ant A or B will be Testing */ 62554c0a3aSHans de Goede #define ANTTESTA 0x01 /* Ant A will be Testing */ 63554c0a3aSHans de Goede #define ANTTESTB 0x02 /* Ant B will be testing */ 64554c0a3aSHans de Goede 65554c0a3aSHans de Goede #define PS_MODE_ACTIVE 0x01 66554c0a3aSHans de Goede 67554c0a3aSHans de Goede /* for 8723A Ant Definition--2012--06--07 due to different IC may be different ANT define */ 68554c0a3aSHans de Goede #define MAIN_ANT 1 /* Ant A or Ant Main */ 69554c0a3aSHans de Goede #define AUX_ANT 2 /* AntB or Ant Aux */ 70554c0a3aSHans de Goede #define MAX_ANT 3 /* 3 for AP using */ 71554c0a3aSHans de Goede 72554c0a3aSHans de Goede /* Antenna Diversity Type */ 73554c0a3aSHans de Goede #define SW_ANTDIV 0 74554c0a3aSHans de Goede #define HW_ANTDIV 1 75554c0a3aSHans de Goede /* structure and define */ 76554c0a3aSHans de Goede 77554c0a3aSHans de Goede /* Remove DIG by Yuchen */ 78554c0a3aSHans de Goede 79554c0a3aSHans de Goede /* Remoce BB power saving by Yuchn */ 80554c0a3aSHans de Goede 81554c0a3aSHans de Goede /* Remove DIG by yuchen */ 82554c0a3aSHans de Goede 83005fb2deSMadhumitha Prabakaran struct dynamic_primary_CCA { 84554c0a3aSHans de Goede u8 PriCCA_flag; 85554c0a3aSHans de Goede u8 intf_flag; 86554c0a3aSHans de Goede u8 intf_type; 87554c0a3aSHans de Goede u8 DupRTS_flag; 88554c0a3aSHans de Goede u8 Monitor_flag; 89554c0a3aSHans de Goede u8 CH_offset; 90554c0a3aSHans de Goede u8 MF_state; 91005fb2deSMadhumitha Prabakaran }; 92554c0a3aSHans de Goede 93f8010da6SMarco Cesati struct ra_t { 94554c0a3aSHans de Goede u8 firstconnect; 95694a76b9SMarco Cesati }; 96554c0a3aSHans de Goede 97f8010da6SMarco Cesati struct rxhp_t { 98554c0a3aSHans de Goede u8 RXHP_flag; 99554c0a3aSHans de Goede u8 PSD_func_trigger; 100554c0a3aSHans de Goede u8 PSD_bitmap_RXHP[80]; 101554c0a3aSHans de Goede u8 Pre_IGI; 102554c0a3aSHans de Goede u8 Cur_IGI; 103554c0a3aSHans de Goede u8 Pre_pw_th; 104554c0a3aSHans de Goede u8 Cur_pw_th; 105554c0a3aSHans de Goede bool First_time_enter; 106554c0a3aSHans de Goede bool RXHP_enable; 107554c0a3aSHans de Goede u8 TP_Mode; 10888e5d862SMarco Cesati struct timer_list PSDTimer; 109694a76b9SMarco Cesati }; 110554c0a3aSHans de Goede 111554c0a3aSHans de Goede #define ASSOCIATE_ENTRY_NUM 32 /* Max size of AsocEntry[]. */ 112554c0a3aSHans de Goede #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM 113554c0a3aSHans de Goede 114554c0a3aSHans de Goede /* This indicates two different the steps. */ 115554c0a3aSHans de Goede /* In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. */ 116554c0a3aSHans de Goede /* In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK */ 117554c0a3aSHans de Goede /* with original RSSI to determine if it is necessary to switch antenna. */ 118554c0a3aSHans de Goede #define SWAW_STEP_PEAK 0 119554c0a3aSHans de Goede #define SWAW_STEP_DETERMINE 1 120554c0a3aSHans de Goede 121554c0a3aSHans de Goede #define TP_MODE 0 122554c0a3aSHans de Goede #define RSSI_MODE 1 123554c0a3aSHans de Goede #define TRAFFIC_LOW 0 124554c0a3aSHans de Goede #define TRAFFIC_HIGH 1 125554c0a3aSHans de Goede #define TRAFFIC_UltraLOW 2 126554c0a3aSHans de Goede 127f8010da6SMarco Cesati struct swat_t { /* _SW_Antenna_Switch_ */ 128554c0a3aSHans de Goede u8 Double_chk_flag; 129554c0a3aSHans de Goede u8 try_flag; 130554c0a3aSHans de Goede s32 PreRSSI; 131554c0a3aSHans de Goede u8 CurAntenna; 132554c0a3aSHans de Goede u8 PreAntenna; 133554c0a3aSHans de Goede u8 RSSI_Trying; 134554c0a3aSHans de Goede u8 TestMode; 135554c0a3aSHans de Goede u8 bTriggerAntennaSwitch; 136554c0a3aSHans de Goede u8 SelectAntennaMap; 137554c0a3aSHans de Goede u8 RSSI_target; 138554c0a3aSHans de Goede u8 reset_idx; 139554c0a3aSHans de Goede u16 Single_Ant_Counter; 140554c0a3aSHans de Goede u16 Dual_Ant_Counter; 141554c0a3aSHans de Goede u16 Aux_FailDetec_Counter; 142554c0a3aSHans de Goede u16 Retry_Counter; 143554c0a3aSHans de Goede 144554c0a3aSHans de Goede /* Before link Antenna Switch check */ 145554c0a3aSHans de Goede u8 SWAS_NoLink_State; 146554c0a3aSHans de Goede u32 SWAS_NoLink_BK_Reg860; 147554c0a3aSHans de Goede u32 SWAS_NoLink_BK_Reg92c; 148554c0a3aSHans de Goede u32 SWAS_NoLink_BK_Reg948; 149554c0a3aSHans de Goede bool ANTA_ON; /* To indicate Ant A is or not */ 150554c0a3aSHans de Goede bool ANTB_ON; /* To indicate Ant B is on or not */ 151554c0a3aSHans de Goede bool Pre_Aux_FailDetec; 152554c0a3aSHans de Goede bool RSSI_AntDect_bResult; 153554c0a3aSHans de Goede u8 Ant2G; 154554c0a3aSHans de Goede 155554c0a3aSHans de Goede s32 RSSI_sum_A; 156554c0a3aSHans de Goede s32 RSSI_sum_B; 157554c0a3aSHans de Goede s32 RSSI_cnt_A; 158554c0a3aSHans de Goede s32 RSSI_cnt_B; 159554c0a3aSHans de Goede 160554c0a3aSHans de Goede u64 lastTxOkCnt; 161554c0a3aSHans de Goede u64 lastRxOkCnt; 162554c0a3aSHans de Goede u64 TXByteCnt_A; 163554c0a3aSHans de Goede u64 TXByteCnt_B; 164554c0a3aSHans de Goede u64 RXByteCnt_A; 165554c0a3aSHans de Goede u64 RXByteCnt_B; 166554c0a3aSHans de Goede u8 TrafficLoad; 167554c0a3aSHans de Goede u8 Train_time; 168554c0a3aSHans de Goede u8 Train_time_flag; 16988e5d862SMarco Cesati struct timer_list SwAntennaSwitchTimer; 17088e5d862SMarco Cesati struct timer_list SwAntennaSwitchTimer_8723B; 171554c0a3aSHans de Goede u32 PktCnt_SWAntDivByCtrlFrame; 172554c0a3aSHans de Goede bool bSWAntDivByCtrlFrame; 173694a76b9SMarco Cesati }; 174554c0a3aSHans de Goede 175554c0a3aSHans de Goede /* Remove Edca by YuChen */ 176554c0a3aSHans de Goede 177554c0a3aSHans de Goede 178f8010da6SMarco Cesati struct odm_rate_adaptive { 179554c0a3aSHans de Goede u8 Type; /* DM_Type_ByFW/DM_Type_ByDriver */ 180554c0a3aSHans de Goede u8 LdpcThres; /* if RSSI > LdpcThres => switch from LPDC to BCC */ 181554c0a3aSHans de Goede bool bUseLdpc; 182554c0a3aSHans de Goede bool bLowerRtsRate; 183554c0a3aSHans de Goede u8 HighRSSIThresh; /* if RSSI > HighRSSIThresh => RATRState is DM_RATR_STA_HIGH */ 184554c0a3aSHans de Goede u8 LowRSSIThresh; /* if RSSI <= LowRSSIThresh => RATRState is DM_RATR_STA_LOW */ 185554c0a3aSHans de Goede u8 RATRState; /* Current RSSI level, DM_RATR_STA_HIGH/DM_RATR_STA_MIDDLE/DM_RATR_STA_LOW */ 186554c0a3aSHans de Goede 187694a76b9SMarco Cesati }; 188554c0a3aSHans de Goede 189554c0a3aSHans de Goede #define IQK_MAC_REG_NUM 4 190554c0a3aSHans de Goede #define IQK_ADDA_REG_NUM 16 191554c0a3aSHans de Goede #define IQK_BB_REG_NUM_MAX 10 192554c0a3aSHans de Goede #define IQK_BB_REG_NUM 9 193554c0a3aSHans de Goede #define HP_THERMAL_NUM 8 194554c0a3aSHans de Goede 195554c0a3aSHans de Goede #define AVG_THERMAL_NUM 8 196*11454ddeSDeepak R Varma #define IQK_MATRIX_REG_NUM 8 197*11454ddeSDeepak R Varma #define IQK_MATRIX_SETTINGS_NUM 14 /* Channels_2_4G_NUM */ 198554c0a3aSHans de Goede 199554c0a3aSHans de Goede #define DM_Type_ByFW 0 200554c0a3aSHans de Goede #define DM_Type_ByDriver 1 201554c0a3aSHans de Goede 202554c0a3aSHans de Goede /* */ 203554c0a3aSHans de Goede /* Declare for common info */ 204554c0a3aSHans de Goede /* */ 205554c0a3aSHans de Goede #define MAX_PATH_NUM_92CS 2 206554c0a3aSHans de Goede #define MAX_PATH_NUM_8188E 1 207554c0a3aSHans de Goede #define MAX_PATH_NUM_8192E 2 208554c0a3aSHans de Goede #define MAX_PATH_NUM_8723B 1 209554c0a3aSHans de Goede #define MAX_PATH_NUM_8812A 2 210554c0a3aSHans de Goede #define MAX_PATH_NUM_8821A 1 211554c0a3aSHans de Goede #define MAX_PATH_NUM_8814A 4 212554c0a3aSHans de Goede #define MAX_PATH_NUM_8822B 2 213554c0a3aSHans de Goede 214554c0a3aSHans de Goede #define IQK_THRESHOLD 8 215554c0a3aSHans de Goede #define DPK_THRESHOLD 4 216554c0a3aSHans de Goede 217ec57f864SQuytelda Kahja struct odm_phy_info { 218ec57f864SQuytelda Kahja /* 219ec57f864SQuytelda Kahja * Be care, if you want to add any element, please insert it between 220ec57f864SQuytelda Kahja * rx_pwd_ball and signal_strength. 221ec57f864SQuytelda Kahja */ 222ec57f864SQuytelda Kahja u8 rx_pwd_ba11; 223554c0a3aSHans de Goede 224ec57f864SQuytelda Kahja u8 signal_quality; /* in 0-100 index. */ 225ec57f864SQuytelda Kahja s8 rx_mimo_signal_quality[4]; /* per-path's EVM */ 226ec57f864SQuytelda Kahja u8 rx_mimo_evm_dbm[4]; /* per-path's EVM dbm */ 227554c0a3aSHans de Goede 228ec57f864SQuytelda Kahja u8 rx_mimo_signal_strength[4]; /* in 0~100 index */ 229554c0a3aSHans de Goede 230ec57f864SQuytelda Kahja u16 cfo_short[4]; /* per-path's Cfo_short */ 231ec57f864SQuytelda Kahja u16 cfo_tail[4]; /* per-path's Cfo_tail */ 232554c0a3aSHans de Goede 233ec57f864SQuytelda Kahja s8 rx_power; /* in dBm Translate from PWdB */ 234554c0a3aSHans de Goede 235ec57f864SQuytelda Kahja /* 236ec57f864SQuytelda Kahja * Real power in dBm for this packet, no beautification and 237ec57f864SQuytelda Kahja * aggregation. Keep this raw info to be used for the other procedures. 238ec57f864SQuytelda Kahja */ 239ec57f864SQuytelda Kahja s8 recv_signal_power; 240ec57f864SQuytelda Kahja u8 bt_rx_rssi_percentage; 241ec57f864SQuytelda Kahja u8 signal_strength; /* in 0-100 index. */ 242554c0a3aSHans de Goede 243ec57f864SQuytelda Kahja s8 rx_pwr[4]; /* per-path's pwdb */ 244ec57f864SQuytelda Kahja 245ec57f864SQuytelda Kahja u8 rx_snr[4]; /* per-path's SNR */ 246ec57f864SQuytelda Kahja u8 band_width; 247ec57f864SQuytelda Kahja u8 bt_coex_pwr_adjust; 248ec57f864SQuytelda Kahja }; 249554c0a3aSHans de Goede 2503df3602aSQuytelda Kahja struct odm_packet_info { 2513df3602aSQuytelda Kahja u8 data_rate; 2523df3602aSQuytelda Kahja u8 station_id; 2533df3602aSQuytelda Kahja bool bssid_match; 2543df3602aSQuytelda Kahja bool to_self; 2553df3602aSQuytelda Kahja bool is_beacon; 2563df3602aSQuytelda Kahja }; 257554c0a3aSHans de Goede 2583322d579SBhanusree Pola struct odm_phy_dbg_info { 259554c0a3aSHans de Goede /* ODM Write, debug info */ 260554c0a3aSHans de Goede s8 RxSNRdB[4]; 261554c0a3aSHans de Goede u32 NumQryPhyStatus; 262554c0a3aSHans de Goede u32 NumQryPhyStatusCCK; 263554c0a3aSHans de Goede u32 NumQryPhyStatusOFDM; 264554c0a3aSHans de Goede u8 NumQryBeaconPkt; 265554c0a3aSHans de Goede /* Others */ 266554c0a3aSHans de Goede s32 RxEVM[4]; 267554c0a3aSHans de Goede 2683322d579SBhanusree Pola }; 269554c0a3aSHans de Goede 2703322d579SBhanusree Pola struct odm_mac_status_info { 271554c0a3aSHans de Goede u8 test; 2723322d579SBhanusree Pola }; 273554c0a3aSHans de Goede 274554c0a3aSHans de Goede /* */ 275554c0a3aSHans de Goede /* 2011/10/20 MH Define Common info enum for all team. */ 276554c0a3aSHans de Goede /* */ 277f8010da6SMarco Cesati enum odm_cmninfo_e { 278554c0a3aSHans de Goede /* Fixed value: */ 279554c0a3aSHans de Goede 280554c0a3aSHans de Goede /* HOOK BEFORE REG INIT----------- */ 281554c0a3aSHans de Goede ODM_CMNINFO_PLATFORM = 0, 282554c0a3aSHans de Goede ODM_CMNINFO_ABILITY, /* ODM_ABILITY_E */ 283554c0a3aSHans de Goede ODM_CMNINFO_INTERFACE, /* ODM_INTERFACE_E */ 284554c0a3aSHans de Goede ODM_CMNINFO_IC_TYPE, /* ODM_IC_TYPE_E */ 285554c0a3aSHans de Goede ODM_CMNINFO_CUT_VER, /* ODM_CUT_VERSION_E */ 286554c0a3aSHans de Goede ODM_CMNINFO_FAB_VER, /* ODM_FAB_E */ 287554c0a3aSHans de Goede ODM_CMNINFO_RFE_TYPE, 288554c0a3aSHans de Goede ODM_CMNINFO_PACKAGE_TYPE, 289554c0a3aSHans de Goede ODM_CMNINFO_EXT_LNA, /* true */ 290554c0a3aSHans de Goede ODM_CMNINFO_EXT_PA, 291554c0a3aSHans de Goede ODM_CMNINFO_GPA, 292554c0a3aSHans de Goede ODM_CMNINFO_APA, 293554c0a3aSHans de Goede ODM_CMNINFO_GLNA, 294554c0a3aSHans de Goede ODM_CMNINFO_ALNA, 295554c0a3aSHans de Goede ODM_CMNINFO_EXT_TRSW, 296554c0a3aSHans de Goede ODM_CMNINFO_PATCH_ID, /* CUSTOMER ID */ 297554c0a3aSHans de Goede ODM_CMNINFO_BINHCT_TEST, 298554c0a3aSHans de Goede ODM_CMNINFO_BWIFI_TEST, 299554c0a3aSHans de Goede ODM_CMNINFO_SMART_CONCURRENT, 300554c0a3aSHans de Goede /* HOOK BEFORE REG INIT----------- */ 301554c0a3aSHans de Goede 302554c0a3aSHans de Goede /* Dynamic value: */ 303554c0a3aSHans de Goede /* POINTER REFERENCE----------- */ 304554c0a3aSHans de Goede ODM_CMNINFO_MAC_PHY_MODE, /* ODM_MAC_PHY_MODE_E */ 305554c0a3aSHans de Goede ODM_CMNINFO_TX_UNI, 306554c0a3aSHans de Goede ODM_CMNINFO_RX_UNI, 307554c0a3aSHans de Goede ODM_CMNINFO_WM_MODE, /* ODM_WIRELESS_MODE_E */ 308554c0a3aSHans de Goede ODM_CMNINFO_SEC_CHNL_OFFSET, /* ODM_SEC_CHNL_OFFSET_E */ 309554c0a3aSHans de Goede ODM_CMNINFO_SEC_MODE, /* ODM_SECURITY_E */ 310554c0a3aSHans de Goede ODM_CMNINFO_BW, /* ODM_BW_E */ 311554c0a3aSHans de Goede ODM_CMNINFO_CHNL, 312554c0a3aSHans de Goede ODM_CMNINFO_FORCED_RATE, 313554c0a3aSHans de Goede 314554c0a3aSHans de Goede ODM_CMNINFO_DMSP_GET_VALUE, 315554c0a3aSHans de Goede ODM_CMNINFO_BUDDY_ADAPTOR, 316554c0a3aSHans de Goede ODM_CMNINFO_DMSP_IS_MASTER, 317554c0a3aSHans de Goede ODM_CMNINFO_SCAN, 318554c0a3aSHans de Goede ODM_CMNINFO_POWER_SAVING, 319554c0a3aSHans de Goede ODM_CMNINFO_ONE_PATH_CCA, /* ODM_CCA_PATH_E */ 320554c0a3aSHans de Goede ODM_CMNINFO_DRV_STOP, 321554c0a3aSHans de Goede ODM_CMNINFO_PNP_IN, 322554c0a3aSHans de Goede ODM_CMNINFO_INIT_ON, 323554c0a3aSHans de Goede ODM_CMNINFO_ANT_TEST, 324554c0a3aSHans de Goede ODM_CMNINFO_NET_CLOSED, 325554c0a3aSHans de Goede ODM_CMNINFO_MP_MODE, 326554c0a3aSHans de Goede /* ODM_CMNINFO_RTSTA_AID, For win driver only? */ 327554c0a3aSHans de Goede ODM_CMNINFO_FORCED_IGI_LB, 328554c0a3aSHans de Goede ODM_CMNINFO_IS1ANTENNA, 329554c0a3aSHans de Goede ODM_CMNINFO_RFDEFAULTPATH, 330554c0a3aSHans de Goede /* POINTER REFERENCE----------- */ 331554c0a3aSHans de Goede 332554c0a3aSHans de Goede /* CALL BY VALUE------------- */ 333554c0a3aSHans de Goede ODM_CMNINFO_WIFI_DIRECT, 334554c0a3aSHans de Goede ODM_CMNINFO_WIFI_DISPLAY, 335554c0a3aSHans de Goede ODM_CMNINFO_LINK_IN_PROGRESS, 336554c0a3aSHans de Goede ODM_CMNINFO_LINK, 337554c0a3aSHans de Goede ODM_CMNINFO_STATION_STATE, 338554c0a3aSHans de Goede ODM_CMNINFO_RSSI_MIN, 339554c0a3aSHans de Goede ODM_CMNINFO_DBG_COMP, /* u64 */ 340554c0a3aSHans de Goede ODM_CMNINFO_DBG_LEVEL, /* u32 */ 341554c0a3aSHans de Goede ODM_CMNINFO_RA_THRESHOLD_HIGH, /* u8 */ 342554c0a3aSHans de Goede ODM_CMNINFO_RA_THRESHOLD_LOW, /* u8 */ 343554c0a3aSHans de Goede ODM_CMNINFO_RF_ANTENNA_TYPE, /* u8 */ 344554c0a3aSHans de Goede ODM_CMNINFO_BT_ENABLED, 345554c0a3aSHans de Goede ODM_CMNINFO_BT_HS_CONNECT_PROCESS, 346554c0a3aSHans de Goede ODM_CMNINFO_BT_HS_RSSI, 347554c0a3aSHans de Goede ODM_CMNINFO_BT_OPERATION, 348554c0a3aSHans de Goede ODM_CMNINFO_BT_LIMITED_DIG, /* Need to Limited Dig or not */ 349554c0a3aSHans de Goede ODM_CMNINFO_BT_DISABLE_EDCA, 350554c0a3aSHans de Goede /* CALL BY VALUE------------- */ 351554c0a3aSHans de Goede 352554c0a3aSHans de Goede /* Dynamic ptr array hook itms. */ 353554c0a3aSHans de Goede ODM_CMNINFO_STA_STATUS, 354554c0a3aSHans de Goede ODM_CMNINFO_PHY_STATUS, 355554c0a3aSHans de Goede ODM_CMNINFO_MAC_STATUS, 356554c0a3aSHans de Goede 357554c0a3aSHans de Goede ODM_CMNINFO_MAX, 358694a76b9SMarco Cesati }; 359554c0a3aSHans de Goede 360554c0a3aSHans de Goede /* 2011/10/20 MH Define ODM support ability. ODM_CMNINFO_ABILITY */ 3617f577147SMarco Cesati enum { /* _ODM_Support_Ability_Definition */ 362554c0a3aSHans de Goede /* */ 363554c0a3aSHans de Goede /* BB ODM section BIT 0-15 */ 364554c0a3aSHans de Goede /* */ 365554c0a3aSHans de Goede ODM_BB_DIG = BIT0, 366554c0a3aSHans de Goede ODM_BB_RA_MASK = BIT1, 367554c0a3aSHans de Goede ODM_BB_DYNAMIC_TXPWR = BIT2, 368554c0a3aSHans de Goede ODM_BB_FA_CNT = BIT3, 369554c0a3aSHans de Goede ODM_BB_RSSI_MONITOR = BIT4, 370554c0a3aSHans de Goede ODM_BB_CCK_PD = BIT5, 371554c0a3aSHans de Goede ODM_BB_ANT_DIV = BIT6, 372554c0a3aSHans de Goede ODM_BB_PWR_SAVE = BIT7, 373554c0a3aSHans de Goede ODM_BB_PWR_TRAIN = BIT8, 374554c0a3aSHans de Goede ODM_BB_RATE_ADAPTIVE = BIT9, 375554c0a3aSHans de Goede ODM_BB_PATH_DIV = BIT10, 376554c0a3aSHans de Goede ODM_BB_PSD = BIT11, 377554c0a3aSHans de Goede ODM_BB_RXHP = BIT12, 378554c0a3aSHans de Goede ODM_BB_ADAPTIVITY = BIT13, 379554c0a3aSHans de Goede ODM_BB_CFO_TRACKING = BIT14, 380554c0a3aSHans de Goede 381554c0a3aSHans de Goede /* MAC DM section BIT 16-23 */ 382554c0a3aSHans de Goede ODM_MAC_EDCA_TURBO = BIT16, 383554c0a3aSHans de Goede ODM_MAC_EARLY_MODE = BIT17, 384554c0a3aSHans de Goede 385554c0a3aSHans de Goede /* RF ODM section BIT 24-31 */ 386554c0a3aSHans de Goede ODM_RF_TX_PWR_TRACK = BIT24, 387554c0a3aSHans de Goede ODM_RF_RX_GAIN_TRACK = BIT25, 388554c0a3aSHans de Goede ODM_RF_CALIBRATION = BIT26, 389694a76b9SMarco Cesati }; 390554c0a3aSHans de Goede 391554c0a3aSHans de Goede /* ODM_CMNINFO_INTERFACE */ 3927f577147SMarco Cesati enum { /* tag_ODM_Support_Interface_Definition */ 393554c0a3aSHans de Goede ODM_ITRF_SDIO = 0x4, 394554c0a3aSHans de Goede ODM_ITRF_ALL = 0x7, 395694a76b9SMarco Cesati }; 396554c0a3aSHans de Goede 397554c0a3aSHans de Goede /* ODM_CMNINFO_IC_TYPE */ 3987f577147SMarco Cesati enum { /* tag_ODM_Support_IC_Type_Definition */ 399554c0a3aSHans de Goede ODM_RTL8723B = BIT8, 400694a76b9SMarco Cesati }; 401554c0a3aSHans de Goede 402554c0a3aSHans de Goede /* ODM_CMNINFO_CUT_VER */ 4037f577147SMarco Cesati enum { /* tag_ODM_Cut_Version_Definition */ 404554c0a3aSHans de Goede ODM_CUT_A = 0, 405554c0a3aSHans de Goede ODM_CUT_B = 1, 406554c0a3aSHans de Goede ODM_CUT_C = 2, 407554c0a3aSHans de Goede ODM_CUT_D = 3, 408554c0a3aSHans de Goede ODM_CUT_E = 4, 409554c0a3aSHans de Goede ODM_CUT_F = 5, 410554c0a3aSHans de Goede 411554c0a3aSHans de Goede ODM_CUT_I = 8, 412554c0a3aSHans de Goede ODM_CUT_J = 9, 413554c0a3aSHans de Goede ODM_CUT_K = 10, 414554c0a3aSHans de Goede ODM_CUT_TEST = 15, 415694a76b9SMarco Cesati }; 416554c0a3aSHans de Goede 417554c0a3aSHans de Goede /* ODM_CMNINFO_FAB_VER */ 4187f577147SMarco Cesati enum { /* tag_ODM_Fab_Version_Definition */ 419554c0a3aSHans de Goede ODM_TSMC = 0, 420554c0a3aSHans de Goede ODM_UMC = 1, 421694a76b9SMarco Cesati }; 422554c0a3aSHans de Goede 423554c0a3aSHans de Goede /* */ 424554c0a3aSHans de Goede /* For example 1T2R (A+AB = BIT0|BIT4|BIT5) */ 425554c0a3aSHans de Goede /* */ 4267f577147SMarco Cesati enum { /* tag_ODM_RF_Type_Definition */ 427554c0a3aSHans de Goede ODM_1T1R = 0, 428554c0a3aSHans de Goede ODM_1T2R = 1, 429554c0a3aSHans de Goede ODM_2T2R = 2, 430554c0a3aSHans de Goede ODM_2T3R = 3, 431554c0a3aSHans de Goede ODM_2T4R = 4, 432554c0a3aSHans de Goede ODM_3T3R = 5, 433554c0a3aSHans de Goede ODM_3T4R = 6, 434554c0a3aSHans de Goede ODM_4T4R = 7, 435694a76b9SMarco Cesati }; 436554c0a3aSHans de Goede 437554c0a3aSHans de Goede /* */ 438554c0a3aSHans de Goede /* ODM Dynamic common info value definition */ 439554c0a3aSHans de Goede /* */ 440554c0a3aSHans de Goede 441554c0a3aSHans de Goede /* ODM_CMNINFO_WM_MODE */ 4427f577147SMarco Cesati enum { /* tag_Wireless_Mode_Definition */ 443cb514b30SR Veera Kumar ODM_WM_UNKNOWN = 0x0, 444554c0a3aSHans de Goede ODM_WM_B = BIT0, 445554c0a3aSHans de Goede ODM_WM_G = BIT1, 446554c0a3aSHans de Goede ODM_WM_N24G = BIT3, 447554c0a3aSHans de Goede ODM_WM_AUTO = BIT5, 448694a76b9SMarco Cesati }; 449554c0a3aSHans de Goede 450554c0a3aSHans de Goede /* ODM_CMNINFO_BW */ 4517f577147SMarco Cesati enum { /* tag_Bandwidth_Definition */ 452554c0a3aSHans de Goede ODM_BW20M = 0, 453554c0a3aSHans de Goede ODM_BW40M = 1, 454694a76b9SMarco Cesati }; 455554c0a3aSHans de Goede 4566a782e4aSFabio Aiuto /* For AC-series IC, external PA & LNA can be individually added on 2.4G */ 457554c0a3aSHans de Goede 458f8010da6SMarco Cesati enum odm_type_gpa_e { /* tag_ODM_TYPE_GPA_Definition */ 459554c0a3aSHans de Goede TYPE_GPA0 = 0, 460554c0a3aSHans de Goede TYPE_GPA1 = BIT(1)|BIT(0) 461694a76b9SMarco Cesati }; 462554c0a3aSHans de Goede 463f8010da6SMarco Cesati enum odm_type_apa_e { /* tag_ODM_TYPE_APA_Definition */ 464554c0a3aSHans de Goede TYPE_APA0 = 0, 465554c0a3aSHans de Goede TYPE_APA1 = BIT(1)|BIT(0) 466694a76b9SMarco Cesati }; 467554c0a3aSHans de Goede 468f8010da6SMarco Cesati enum odm_type_glna_e { /* tag_ODM_TYPE_GLNA_Definition */ 469554c0a3aSHans de Goede TYPE_GLNA0 = 0, 470554c0a3aSHans de Goede TYPE_GLNA1 = BIT(2)|BIT(0), 471554c0a3aSHans de Goede TYPE_GLNA2 = BIT(3)|BIT(1), 472554c0a3aSHans de Goede TYPE_GLNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0) 473694a76b9SMarco Cesati }; 474554c0a3aSHans de Goede 475f8010da6SMarco Cesati enum odm_type_alna_e { /* tag_ODM_TYPE_ALNA_Definition */ 476554c0a3aSHans de Goede TYPE_ALNA0 = 0, 477554c0a3aSHans de Goede TYPE_ALNA1 = BIT(2)|BIT(0), 478554c0a3aSHans de Goede TYPE_ALNA2 = BIT(3)|BIT(1), 479554c0a3aSHans de Goede TYPE_ALNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0) 480694a76b9SMarco Cesati }; 481554c0a3aSHans de Goede 482554c0a3aSHans de Goede /* Remove PATHDIV_PARA struct to odm_PathDiv.h */ 483554c0a3aSHans de Goede 484f8010da6SMarco Cesati struct odm_rf_cal_t { /* ODM_RF_Calibration_Structure */ 485554c0a3aSHans de Goede /* for tx power tracking */ 486554c0a3aSHans de Goede 487554c0a3aSHans de Goede u32 RegA24; /* for TempCCK */ 488554c0a3aSHans de Goede s32 RegE94; 489554c0a3aSHans de Goede s32 RegE9C; 490554c0a3aSHans de Goede s32 RegEB4; 491554c0a3aSHans de Goede s32 RegEBC; 492554c0a3aSHans de Goede 493554c0a3aSHans de Goede u8 TXPowercount; 494554c0a3aSHans de Goede bool bTXPowerTrackingInit; 495554c0a3aSHans de Goede bool bTXPowerTracking; 496554c0a3aSHans de Goede u8 TxPowerTrackControl; /* for mp mode, turn off txpwrtracking as default */ 497554c0a3aSHans de Goede u8 TM_Trigger; 498554c0a3aSHans de Goede 499554c0a3aSHans de Goede u8 ThermalMeter[2]; /* ThermalMeter, index 0 for RFIC0, and 1 for RFIC1 */ 500554c0a3aSHans de Goede u8 ThermalValue; 501554c0a3aSHans de Goede u8 ThermalValue_LCK; 502554c0a3aSHans de Goede u8 ThermalValue_IQK; 503554c0a3aSHans de Goede u8 ThermalValue_DPK; 504554c0a3aSHans de Goede u8 ThermalValue_AVG[AVG_THERMAL_NUM]; 505554c0a3aSHans de Goede u8 ThermalValue_AVG_index; 506554c0a3aSHans de Goede u8 ThermalValue_RxGain; 507554c0a3aSHans de Goede u8 ThermalValue_Crystal; 508554c0a3aSHans de Goede u8 ThermalValue_DPKstore; 509554c0a3aSHans de Goede u8 ThermalValue_DPKtrack; 510554c0a3aSHans de Goede bool TxPowerTrackingInProgress; 511554c0a3aSHans de Goede 512554c0a3aSHans de Goede bool bReloadtxpowerindex; 513554c0a3aSHans de Goede u8 bRfPiEnable; 514554c0a3aSHans de Goede u32 TXPowerTrackingCallbackCnt; /* cosa add for debug */ 515554c0a3aSHans de Goede 516554c0a3aSHans de Goede /* Tx power Tracking ------------------------- */ 517554c0a3aSHans de Goede u8 bCCKinCH14; 518554c0a3aSHans de Goede u8 CCK_index; 519554c0a3aSHans de Goede u8 OFDM_index[MAX_RF_PATH]; 520554c0a3aSHans de Goede s8 PowerIndexOffset[MAX_RF_PATH]; 521554c0a3aSHans de Goede s8 DeltaPowerIndex[MAX_RF_PATH]; 522554c0a3aSHans de Goede s8 DeltaPowerIndexLast[MAX_RF_PATH]; 523554c0a3aSHans de Goede bool bTxPowerChanged; 524554c0a3aSHans de Goede 525554c0a3aSHans de Goede u8 ThermalValue_HP[HP_THERMAL_NUM]; 526554c0a3aSHans de Goede u8 ThermalValue_HP_index; 527*11454ddeSDeepak R Varma s32 iqk_matrix_regs_setting_value[IQK_MATRIX_SETTINGS_NUM][IQK_MATRIX_REG_NUM]; 528554c0a3aSHans de Goede bool bNeedIQK; 529554c0a3aSHans de Goede bool bIQKInProgress; 530554c0a3aSHans de Goede u8 Delta_IQK; 531554c0a3aSHans de Goede u8 Delta_LCK; 5329e749e6fSFabio Aiuto s8 BBSwingDiff2G; /* Unit: dB */ 533554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE]; 534554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE]; 535554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE]; 536554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE]; 537554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE]; 538554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE]; 539554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE]; 540554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE]; 541554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE]; 542554c0a3aSHans de Goede u8 DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE]; 543554c0a3aSHans de Goede 544554c0a3aSHans de Goede /* */ 545554c0a3aSHans de Goede 546554c0a3aSHans de Goede /* for IQK */ 547554c0a3aSHans de Goede u32 RegC04; 548554c0a3aSHans de Goede u32 Reg874; 549554c0a3aSHans de Goede u32 RegC08; 550554c0a3aSHans de Goede u32 RegB68; 551554c0a3aSHans de Goede u32 RegB6C; 552554c0a3aSHans de Goede u32 Reg870; 553554c0a3aSHans de Goede u32 Reg860; 554554c0a3aSHans de Goede u32 Reg864; 555554c0a3aSHans de Goede 556554c0a3aSHans de Goede bool bIQKInitialized; 557554c0a3aSHans de Goede bool bLCKInProgress; 558554c0a3aSHans de Goede bool bAntennaDetected; 559554c0a3aSHans de Goede u32 ADDA_backup[IQK_ADDA_REG_NUM]; 560554c0a3aSHans de Goede u32 IQK_MAC_backup[IQK_MAC_REG_NUM]; 561554c0a3aSHans de Goede u32 IQK_BB_backup_recover[9]; 562554c0a3aSHans de Goede u32 IQK_BB_backup[IQK_BB_REG_NUM]; 563554c0a3aSHans de Goede u32 TxIQC_8723B[2][3][2]; /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}} */ 564554c0a3aSHans de Goede u32 RxIQC_8723B[2][2][2]; /* { {S1: 0xc14, 0xca0} , {S0: 0xc14, 0xca0}} */ 565554c0a3aSHans de Goede 566554c0a3aSHans de Goede /* for APK */ 567554c0a3aSHans de Goede u32 APKoutput[2][2]; /* path A/B; output1_1a/output1_2a */ 568554c0a3aSHans de Goede u8 bAPKdone; 569554c0a3aSHans de Goede u8 bAPKThermalMeterIgnore; 570554c0a3aSHans de Goede 571554c0a3aSHans de Goede /* DPK */ 572554c0a3aSHans de Goede bool bDPKFail; 573554c0a3aSHans de Goede u8 bDPdone; 574554c0a3aSHans de Goede u8 bDPPathAOK; 575554c0a3aSHans de Goede u8 bDPPathBOK; 576554c0a3aSHans de Goede 577554c0a3aSHans de Goede u32 TxLOK[2]; 578554c0a3aSHans de Goede 579694a76b9SMarco Cesati }; 580554c0a3aSHans de Goede /* */ 581554c0a3aSHans de Goede /* ODM Dynamic common info value definition */ 582554c0a3aSHans de Goede /* */ 583554c0a3aSHans de Goede 584f8010da6SMarco Cesati struct fat_t { /* _FAST_ANTENNA_TRAINNING_ */ 585554c0a3aSHans de Goede u8 Bssid[6]; 586554c0a3aSHans de Goede u8 antsel_rx_keep_0; 587554c0a3aSHans de Goede u8 antsel_rx_keep_1; 588554c0a3aSHans de Goede u8 antsel_rx_keep_2; 589554c0a3aSHans de Goede u8 antsel_rx_keep_3; 590554c0a3aSHans de Goede u32 antSumRSSI[7]; 591554c0a3aSHans de Goede u32 antRSSIcnt[7]; 592554c0a3aSHans de Goede u32 antAveRSSI[7]; 593554c0a3aSHans de Goede u8 FAT_State; 594554c0a3aSHans de Goede u32 TrainIdx; 595554c0a3aSHans de Goede u8 antsel_a[ODM_ASSOCIATE_ENTRY_NUM]; 596554c0a3aSHans de Goede u8 antsel_b[ODM_ASSOCIATE_ENTRY_NUM]; 597554c0a3aSHans de Goede u8 antsel_c[ODM_ASSOCIATE_ENTRY_NUM]; 598554c0a3aSHans de Goede u32 MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM]; 599554c0a3aSHans de Goede u32 AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM]; 600554c0a3aSHans de Goede u32 MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM]; 601554c0a3aSHans de Goede u32 AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM]; 602554c0a3aSHans de Goede u8 RxIdleAnt; 603554c0a3aSHans de Goede bool bBecomeLinked; 604554c0a3aSHans de Goede u32 MinMaxRSSI; 605554c0a3aSHans de Goede u8 idx_AntDiv_counter_2G; 606554c0a3aSHans de Goede u32 CCK_counter_main; 607554c0a3aSHans de Goede u32 CCK_counter_aux; 608554c0a3aSHans de Goede u32 OFDM_counter_main; 609554c0a3aSHans de Goede u32 OFDM_counter_aux; 610554c0a3aSHans de Goede 611554c0a3aSHans de Goede u32 CCK_CtrlFrame_Cnt_main; 612554c0a3aSHans de Goede u32 CCK_CtrlFrame_Cnt_aux; 613554c0a3aSHans de Goede u32 OFDM_CtrlFrame_Cnt_main; 614554c0a3aSHans de Goede u32 OFDM_CtrlFrame_Cnt_aux; 615554c0a3aSHans de Goede u32 MainAnt_CtrlFrame_Sum; 616554c0a3aSHans de Goede u32 AuxAnt_CtrlFrame_Sum; 617554c0a3aSHans de Goede u32 MainAnt_CtrlFrame_Cnt; 618554c0a3aSHans de Goede u32 AuxAnt_CtrlFrame_Cnt; 619554c0a3aSHans de Goede 620694a76b9SMarco Cesati }; 621554c0a3aSHans de Goede 6227f577147SMarco Cesati enum { 623554c0a3aSHans de Goede NO_ANTDIV = 0xFF, 624554c0a3aSHans de Goede CG_TRX_HW_ANTDIV = 0x01, 625554c0a3aSHans de Goede CGCS_RX_HW_ANTDIV = 0x02, 626554c0a3aSHans de Goede FIXED_HW_ANTDIV = 0x03, 627554c0a3aSHans de Goede CG_TRX_SMART_ANTDIV = 0x04, 628554c0a3aSHans de Goede CGCS_RX_SW_ANTDIV = 0x05, 629554c0a3aSHans de Goede S0S1_SW_ANTDIV = 0x06 /* 8723B intrnal switch S0 S1 */ 630694a76b9SMarco Cesati }; 631554c0a3aSHans de Goede 632f8010da6SMarco Cesati struct pathdiv_t { /* _ODM_PATH_DIVERSITY_ */ 633554c0a3aSHans de Goede u8 RespTxPath; 634554c0a3aSHans de Goede u8 PathSel[ODM_ASSOCIATE_ENTRY_NUM]; 635554c0a3aSHans de Goede u32 PathA_Sum[ODM_ASSOCIATE_ENTRY_NUM]; 636554c0a3aSHans de Goede u32 PathB_Sum[ODM_ASSOCIATE_ENTRY_NUM]; 637554c0a3aSHans de Goede u32 PathA_Cnt[ODM_ASSOCIATE_ENTRY_NUM]; 638554c0a3aSHans de Goede u32 PathB_Cnt[ODM_ASSOCIATE_ENTRY_NUM]; 639694a76b9SMarco Cesati }; 640554c0a3aSHans de Goede 641f8010da6SMarco Cesati enum phy_reg_pg_type { /* _BASEBAND_CONFIG_PHY_REG_PG_VALUE_TYPE */ 642554c0a3aSHans de Goede PHY_REG_PG_RELATIVE_VALUE = 0, 643554c0a3aSHans de Goede PHY_REG_PG_EXACT_VALUE = 1 644694a76b9SMarco Cesati }; 645554c0a3aSHans de Goede 646554c0a3aSHans de Goede /* */ 647554c0a3aSHans de Goede /* Antenna detection information from single tone mechanism, added by Roger, 2012.11.27. */ 648554c0a3aSHans de Goede /* */ 649f8010da6SMarco Cesati struct ant_detected_info { 650554c0a3aSHans de Goede bool bAntDetected; 651554c0a3aSHans de Goede u32 dBForAntA; 652554c0a3aSHans de Goede u32 dBForAntB; 653554c0a3aSHans de Goede u32 dBForAntO; 654694a76b9SMarco Cesati }; 655554c0a3aSHans de Goede 656554c0a3aSHans de Goede /* */ 657554c0a3aSHans de Goede /* 2011/09/22 MH Copy from SD4 defined structure. We use to support PHY DM integration. */ 658554c0a3aSHans de Goede /* */ 659f8010da6SMarco Cesati struct dm_odm_t { /* DM_Out_Source_Dynamic_Mechanism_Structure */ 66088e5d862SMarco Cesati /* struct timer_list FastAntTrainingTimer; */ 661554c0a3aSHans de Goede /* */ 662554c0a3aSHans de Goede /* Add for different team use temporarily */ 663554c0a3aSHans de Goede /* */ 664554c0a3aSHans de Goede struct adapter *Adapter; /* For CE/NIC team */ 665554c0a3aSHans de Goede /* WHen you use Adapter or priv pointer, you must make sure the pointer is ready. */ 666554c0a3aSHans de Goede bool odm_ready; 667554c0a3aSHans de Goede 668f8010da6SMarco Cesati enum phy_reg_pg_type PhyRegPgValueType; 669554c0a3aSHans de Goede u8 PhyRegPgVersion; 670554c0a3aSHans de Goede 671554c0a3aSHans de Goede u32 NumQryPhyStatusAll; /* CCK + OFDM */ 672554c0a3aSHans de Goede u32 LastNumQryPhyStatusAll; 673554c0a3aSHans de Goede u32 RxPWDBAve; 674554c0a3aSHans de Goede bool MPDIG_2G; /* off MPDIG */ 675554c0a3aSHans de Goede u8 Times_2G; 676554c0a3aSHans de Goede 677554c0a3aSHans de Goede /* ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */ 678554c0a3aSHans de Goede bool bCckHighPower; 679554c0a3aSHans de Goede u8 RFPathRxEnable; /* ODM_CMNINFO_RFPATH_ENABLE */ 680554c0a3aSHans de Goede u8 ControlChannel; 681554c0a3aSHans de Goede /* ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */ 682554c0a3aSHans de Goede 683554c0a3aSHans de Goede /* REMOVED COMMON INFO---------- */ 684554c0a3aSHans de Goede /* u8 PseudoMacPhyMode; */ 685554c0a3aSHans de Goede /* bool *BTCoexist; */ 686554c0a3aSHans de Goede /* bool PseudoBtCoexist; */ 687554c0a3aSHans de Goede /* u8 OPMode; */ 688554c0a3aSHans de Goede /* bool bAPMode; */ 689554c0a3aSHans de Goede /* bool bClientMode; */ 690554c0a3aSHans de Goede /* bool bAdHocMode; */ 691554c0a3aSHans de Goede /* bool bSlaveOfDMSP; */ 692554c0a3aSHans de Goede /* REMOVED COMMON INFO---------- */ 693554c0a3aSHans de Goede 694554c0a3aSHans de Goede /* 1 COMMON INFORMATION */ 695554c0a3aSHans de Goede 696554c0a3aSHans de Goede /* */ 697554c0a3aSHans de Goede /* Init Value */ 698554c0a3aSHans de Goede /* */ 699554c0a3aSHans de Goede /* HOOK BEFORE REG INIT----------- */ 700554c0a3aSHans de Goede /* ODM Platform info AP/ADSL/CE/MP = 1/2/3/4 */ 701554c0a3aSHans de Goede u8 SupportPlatform; 70251a2ee0aSArnd Bergmann /* ODM Support Ability DIG/RATR/TX_PWR_TRACK/... = 1/2/3/... */ 703554c0a3aSHans de Goede u32 SupportAbility; 704554c0a3aSHans de Goede /* ODM PCIE/USB/SDIO = 1/2/3 */ 705554c0a3aSHans de Goede u8 SupportInterface; 706554c0a3aSHans de Goede /* ODM composite or independent. Bit oriented/ 92C+92D+ .... or any other type = 1/2/3/... */ 707554c0a3aSHans de Goede u32 SupportICType; 708554c0a3aSHans de Goede /* Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/... */ 709554c0a3aSHans de Goede u8 CutVersion; 710554c0a3aSHans de Goede /* Fab Version TSMC/UMC = 0/1 */ 711554c0a3aSHans de Goede u8 FabVersion; 712554c0a3aSHans de Goede /* RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/... */ 713554c0a3aSHans de Goede u8 RFEType; 714554c0a3aSHans de Goede /* Board Type Normal/HighPower/MiniCard/SLIM/Combo/... = 0/1/2/3/4/... */ 715554c0a3aSHans de Goede u8 BoardType; 716554c0a3aSHans de Goede u8 PackageType; 717554c0a3aSHans de Goede u8 TypeGLNA; 718554c0a3aSHans de Goede u8 TypeGPA; 719554c0a3aSHans de Goede u8 TypeALNA; 720554c0a3aSHans de Goede u8 TypeAPA; 721554c0a3aSHans de Goede /* with external LNA NO/Yes = 0/1 */ 722554c0a3aSHans de Goede u8 ExtLNA; 723554c0a3aSHans de Goede /* with external PA NO/Yes = 0/1 */ 724554c0a3aSHans de Goede u8 ExtPA; 725554c0a3aSHans de Goede /* with external TRSW NO/Yes = 0/1 */ 726554c0a3aSHans de Goede u8 ExtTRSW; 727554c0a3aSHans de Goede u8 PatchID; /* Customer ID */ 728554c0a3aSHans de Goede bool bInHctTest; 729554c0a3aSHans de Goede bool bWIFITest; 730554c0a3aSHans de Goede 731554c0a3aSHans de Goede bool bDualMacSmartConcurrent; 732554c0a3aSHans de Goede u32 BK_SupportAbility; 733554c0a3aSHans de Goede u8 AntDivType; 734554c0a3aSHans de Goede /* HOOK BEFORE REG INIT----------- */ 735554c0a3aSHans de Goede 736554c0a3aSHans de Goede /* */ 737554c0a3aSHans de Goede /* Dynamic Value */ 738554c0a3aSHans de Goede /* */ 739554c0a3aSHans de Goede /* POINTER REFERENCE----------- */ 740554c0a3aSHans de Goede 741554c0a3aSHans de Goede u8 u8_temp; 742554c0a3aSHans de Goede bool bool_temp; 743554c0a3aSHans de Goede struct adapter *adapter_temp; 744554c0a3aSHans de Goede 745554c0a3aSHans de Goede /* MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */ 746554c0a3aSHans de Goede u8 *pMacPhyMode; 747554c0a3aSHans de Goede /* TX Unicast byte count */ 748554c0a3aSHans de Goede u64 *pNumTxBytesUnicast; 749554c0a3aSHans de Goede /* RX Unicast byte count */ 750554c0a3aSHans de Goede u64 *pNumRxBytesUnicast; 751554c0a3aSHans de Goede /* Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */ 752554c0a3aSHans de Goede u8 *pwirelessmode; /* ODM_WIRELESS_MODE_E */ 753554c0a3aSHans de Goede /* Secondary channel offset don't_care/below/above = 0/1/2 */ 754554c0a3aSHans de Goede u8 *pSecChOffset; 755554c0a3aSHans de Goede /* Security mode Open/WEP/AES/TKIP = 0/1/2/3 */ 756554c0a3aSHans de Goede u8 *pSecurity; 757554c0a3aSHans de Goede /* BW info 20M/40M/80M = 0/1/2 */ 758554c0a3aSHans de Goede u8 *pBandWidth; 759554c0a3aSHans de Goede /* Central channel location Ch1/Ch2/.... */ 760554c0a3aSHans de Goede u8 *pChannel; /* central channel number */ 761554c0a3aSHans de Goede bool DPK_Done; 762554c0a3aSHans de Goede /* Common info for 92D DMSP */ 763554c0a3aSHans de Goede 764554c0a3aSHans de Goede bool *pbGetValueFromOtherMac; 765554c0a3aSHans de Goede struct adapter **pBuddyAdapter; 766554c0a3aSHans de Goede bool *pbMasterOfDMSP; /* MAC0: master, MAC1: slave */ 767554c0a3aSHans de Goede /* Common info for Status */ 768554c0a3aSHans de Goede bool *pbScanInProcess; 769554c0a3aSHans de Goede bool *pbPowerSaving; 770554c0a3aSHans de Goede /* CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E. */ 771554c0a3aSHans de Goede u8 *pOnePathCCA; 772554c0a3aSHans de Goede /* pMgntInfo->AntennaTest */ 773554c0a3aSHans de Goede u8 *pAntennaTest; 774554c0a3aSHans de Goede bool *pbNet_closed; 775554c0a3aSHans de Goede u8 *mp_mode; 776554c0a3aSHans de Goede /* u8 *pAidMap; */ 777554c0a3aSHans de Goede u8 *pu1ForcedIgiLb; 778554c0a3aSHans de Goede /* For 8723B IQK----------- */ 779554c0a3aSHans de Goede bool *pIs1Antenna; 780554c0a3aSHans de Goede u8 *pRFDefaultPath; 781554c0a3aSHans de Goede /* 0:S1, 1:S0 */ 782554c0a3aSHans de Goede 783554c0a3aSHans de Goede /* POINTER REFERENCE----------- */ 784554c0a3aSHans de Goede u16 *pForcedDataRate; 785554c0a3aSHans de Goede /* CALL BY VALUE------------- */ 786554c0a3aSHans de Goede bool bLinkInProcess; 787554c0a3aSHans de Goede bool bWIFI_Direct; 788554c0a3aSHans de Goede bool bWIFI_Display; 789554c0a3aSHans de Goede bool bLinked; 790554c0a3aSHans de Goede 791554c0a3aSHans de Goede bool bsta_state; 792554c0a3aSHans de Goede u8 RSSI_Min; 793554c0a3aSHans de Goede u8 InterfaceIndex; /* Add for 92D dual MAC: 0--Mac0 1--Mac1 */ 794554c0a3aSHans de Goede bool bOneEntryOnly; 795554c0a3aSHans de Goede /* Common info for BTDM */ 796554c0a3aSHans de Goede bool bBtEnabled; /* BT is disabled */ 797554c0a3aSHans de Goede bool bBtConnectProcess; /* BT HS is under connection progress. */ 798554c0a3aSHans de Goede u8 btHsRssi; /* BT HS mode wifi rssi value. */ 799554c0a3aSHans de Goede bool bBtHsOperation; /* BT HS mode is under progress */ 800554c0a3aSHans de Goede bool bBtDisableEdcaTurbo; /* Under some condition, don't enable the EDCA Turbo */ 801554c0a3aSHans de Goede bool bBtLimitedDig; /* BT is busy. */ 802554c0a3aSHans de Goede /* CALL BY VALUE------------- */ 803554c0a3aSHans de Goede u8 RSSI_A; 804554c0a3aSHans de Goede u8 RSSI_B; 805554c0a3aSHans de Goede u64 RSSI_TRSW; 806554c0a3aSHans de Goede u64 RSSI_TRSW_H; 807554c0a3aSHans de Goede u64 RSSI_TRSW_L; 808554c0a3aSHans de Goede u64 RSSI_TRSW_iso; 809554c0a3aSHans de Goede 810554c0a3aSHans de Goede u8 RxRate; 811554c0a3aSHans de Goede bool bNoisyState; 812554c0a3aSHans de Goede u8 TxRate; 813554c0a3aSHans de Goede u8 LinkedInterval; 814554c0a3aSHans de Goede u8 preChannel; 815554c0a3aSHans de Goede u32 TxagcOffsetValueA; 816554c0a3aSHans de Goede bool IsTxagcOffsetPositiveA; 817554c0a3aSHans de Goede u32 TxagcOffsetValueB; 818554c0a3aSHans de Goede bool IsTxagcOffsetPositiveB; 819554c0a3aSHans de Goede u64 lastTxOkCnt; 820554c0a3aSHans de Goede u64 lastRxOkCnt; 821554c0a3aSHans de Goede u32 BbSwingOffsetA; 822554c0a3aSHans de Goede bool IsBbSwingOffsetPositiveA; 823554c0a3aSHans de Goede u32 BbSwingOffsetB; 824554c0a3aSHans de Goede bool IsBbSwingOffsetPositiveB; 825554c0a3aSHans de Goede s8 TH_L2H_ini; 826554c0a3aSHans de Goede s8 TH_EDCCA_HL_diff; 827554c0a3aSHans de Goede s8 IGI_Base; 828554c0a3aSHans de Goede u8 IGI_target; 829554c0a3aSHans de Goede bool ForceEDCCA; 830554c0a3aSHans de Goede u8 AdapEn_RSSI; 831554c0a3aSHans de Goede s8 Force_TH_H; 832554c0a3aSHans de Goede s8 Force_TH_L; 833554c0a3aSHans de Goede u8 IGI_LowerBound; 834554c0a3aSHans de Goede u8 antdiv_rssi; 835554c0a3aSHans de Goede u8 AntType; 836554c0a3aSHans de Goede u8 pre_AntType; 837554c0a3aSHans de Goede u8 antdiv_period; 838554c0a3aSHans de Goede u8 antdiv_select; 839554c0a3aSHans de Goede u8 NdpaPeriod; 840554c0a3aSHans de Goede bool H2C_RARpt_connect; 841554c0a3aSHans de Goede 842554c0a3aSHans de Goede /* add by Yu Cehn for adaptivtiy */ 843554c0a3aSHans de Goede bool adaptivity_flag; 844554c0a3aSHans de Goede bool NHM_disable; 845554c0a3aSHans de Goede bool TxHangFlg; 846554c0a3aSHans de Goede bool Carrier_Sense_enable; 847554c0a3aSHans de Goede u8 tolerance_cnt; 848554c0a3aSHans de Goede u64 NHMCurTxOkcnt; 849554c0a3aSHans de Goede u64 NHMCurRxOkcnt; 850554c0a3aSHans de Goede u64 NHMLastTxOkcnt; 851554c0a3aSHans de Goede u64 NHMLastRxOkcnt; 852554c0a3aSHans de Goede u8 txEdcca1; 853554c0a3aSHans de Goede u8 txEdcca0; 854554c0a3aSHans de Goede s8 H2L_lb; 855554c0a3aSHans de Goede s8 L2H_lb; 856554c0a3aSHans de Goede u8 Adaptivity_IGI_upper; 857554c0a3aSHans de Goede u8 NHM_cnt_0; 858554c0a3aSHans de Goede 859554c0a3aSHans de Goede /* */ 860554c0a3aSHans de Goede /* 2 Define STA info. */ 861554c0a3aSHans de Goede /* _ODM_STA_INFO */ 862554c0a3aSHans de Goede /* 2012/01/12 MH For MP, we need to reduce one array pointer for default port.?? */ 863554c0a3aSHans de Goede PSTA_INFO_T pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM]; 864554c0a3aSHans de Goede 865554c0a3aSHans de Goede /* */ 866554c0a3aSHans de Goede /* 2012/02/14 MH Add to share 88E ra with other SW team. */ 867554c0a3aSHans de Goede /* We need to colelct all support abilit to a proper area. */ 868554c0a3aSHans de Goede /* */ 869554c0a3aSHans de Goede bool RaSupport88E; 870554c0a3aSHans de Goede 871554c0a3aSHans de Goede /* Define ........... */ 872554c0a3aSHans de Goede 873554c0a3aSHans de Goede /* Latest packet phy info (ODM write) */ 8743322d579SBhanusree Pola struct odm_phy_dbg_info PhyDbgInfo; 875554c0a3aSHans de Goede /* PHY_INFO_88E PhyInfo; */ 876554c0a3aSHans de Goede 877554c0a3aSHans de Goede /* Latest packet phy info (ODM write) */ 8783322d579SBhanusree Pola struct odm_mac_status_info *pMacInfo; 879554c0a3aSHans de Goede /* MAC_INFO_88E MacInfo; */ 880554c0a3aSHans de Goede 881554c0a3aSHans de Goede /* Different Team independt structure?? */ 882554c0a3aSHans de Goede 883554c0a3aSHans de Goede /* */ 884554c0a3aSHans de Goede /* TX_RTP_CMN TX_retrpo; */ 885554c0a3aSHans de Goede /* TX_RTP_88E TX_retrpo; */ 886554c0a3aSHans de Goede /* TX_RTP_8195 TX_retrpo; */ 887554c0a3aSHans de Goede 888554c0a3aSHans de Goede /* */ 889554c0a3aSHans de Goede /* ODM Structure */ 890554c0a3aSHans de Goede /* */ 891f8010da6SMarco Cesati struct fat_t DM_FatTable; 89286d6c0aeSMarco Cesati struct dig_t DM_DigTable; 8934970f56cSMarco Cesati struct ps_t DM_PSTable; 894005fb2deSMadhumitha Prabakaran struct dynamic_primary_CCA DM_PriCCA; 895f8010da6SMarco Cesati struct rxhp_t dM_RXHP_Table; 896f8010da6SMarco Cesati struct ra_t DM_RA_Table; 897d7c2b41fSMarco Cesati struct false_ALARM_STATISTICS FalseAlmCnt; 898d7c2b41fSMarco Cesati struct false_ALARM_STATISTICS FlaseAlmCntBuddyAdapter; 899f8010da6SMarco Cesati struct swat_t DM_SWAT_Table; 900554c0a3aSHans de Goede bool RSSI_test; 9010c10f844SMarco Cesati struct cfo_tracking DM_CfoTrack; 902554c0a3aSHans de Goede 9032283b6b7SMarco Cesati struct edca_t DM_EDCA_Table; 904554c0a3aSHans de Goede u32 WMMEDCA_BE; 905f8010da6SMarco Cesati struct pathdiv_t DM_PathDiv; 906554c0a3aSHans de Goede /* Copy from SD4 structure */ 907554c0a3aSHans de Goede /* */ 908554c0a3aSHans de Goede /* ================================================== */ 909554c0a3aSHans de Goede /* */ 910554c0a3aSHans de Goede 911554c0a3aSHans de Goede /* common */ 912554c0a3aSHans de Goede /* u8 DM_Type; */ 913554c0a3aSHans de Goede /* u8 PSD_Report_RXHP[80]; Add By Gary */ 914554c0a3aSHans de Goede /* u8 PSD_func_flag; Add By Gary */ 915554c0a3aSHans de Goede /* for DIG */ 916554c0a3aSHans de Goede /* u8 bDMInitialGainEnable; */ 917554c0a3aSHans de Goede /* u8 binitialized; for dm_initial_gain_Multi_STA use. */ 918554c0a3aSHans de Goede /* for Antenna diversity */ 919554c0a3aSHans de Goede /* u8 AntDivCfg; 0:OFF , 1:ON, 2:by efuse */ 920554c0a3aSHans de Goede /* PSTA_INFO_T RSSI_target; */ 921554c0a3aSHans de Goede 922554c0a3aSHans de Goede bool *pbDriverStopped; 923554c0a3aSHans de Goede bool *pbDriverIsGoingToPnpSetPowerSleep; 924554c0a3aSHans de Goede bool *pinit_adpt_in_progress; 925554c0a3aSHans de Goede 926554c0a3aSHans de Goede /* PSD */ 927554c0a3aSHans de Goede bool bUserAssignLevel; 92888e5d862SMarco Cesati struct timer_list PSDTimer; 929554c0a3aSHans de Goede u8 RSSI_BT; /* come from BT */ 930554c0a3aSHans de Goede bool bPSDinProcess; 931554c0a3aSHans de Goede bool bPSDactive; 932554c0a3aSHans de Goede bool bDMInitialGainEnable; 933554c0a3aSHans de Goede 934554c0a3aSHans de Goede /* MPT DIG */ 93588e5d862SMarco Cesati struct timer_list MPT_DIGTimer; 936554c0a3aSHans de Goede 937554c0a3aSHans de Goede /* for rate adaptive, in fact, 88c/92c fw will handle this */ 938554c0a3aSHans de Goede u8 bUseRAMask; 939554c0a3aSHans de Goede 940f8010da6SMarco Cesati struct odm_rate_adaptive RateAdaptive; 941554c0a3aSHans de Goede 942f8010da6SMarco Cesati struct ant_detected_info AntDetectedInfo; /* Antenna detected information for RSSI tool */ 943554c0a3aSHans de Goede 944f8010da6SMarco Cesati struct odm_rf_cal_t RFCalibrateInfo; 945554c0a3aSHans de Goede 946554c0a3aSHans de Goede /* */ 947554c0a3aSHans de Goede /* TX power tracking */ 948554c0a3aSHans de Goede /* */ 949554c0a3aSHans de Goede u8 BbSwingIdxOfdm[MAX_RF_PATH]; 950554c0a3aSHans de Goede u8 BbSwingIdxOfdmCurrent; 951554c0a3aSHans de Goede u8 BbSwingIdxOfdmBase[MAX_RF_PATH]; 952554c0a3aSHans de Goede bool BbSwingFlagOfdm; 953554c0a3aSHans de Goede u8 BbSwingIdxCck; 954554c0a3aSHans de Goede u8 BbSwingIdxCckCurrent; 955554c0a3aSHans de Goede u8 BbSwingIdxCckBase; 956554c0a3aSHans de Goede u8 DefaultOfdmIndex; 957554c0a3aSHans de Goede u8 DefaultCckIndex; 958554c0a3aSHans de Goede bool BbSwingFlagCck; 959554c0a3aSHans de Goede 960554c0a3aSHans de Goede s8 Absolute_OFDMSwingIdx[MAX_RF_PATH]; 961554c0a3aSHans de Goede s8 Remnant_OFDMSwingIdx[MAX_RF_PATH]; 962554c0a3aSHans de Goede s8 Remnant_CCKSwingIdx; 963554c0a3aSHans de Goede s8 Modify_TxAGC_Value; /* Remnat compensate value at TxAGC */ 964554c0a3aSHans de Goede bool Modify_TxAGC_Flag_PathA; 965554c0a3aSHans de Goede bool Modify_TxAGC_Flag_PathB; 966554c0a3aSHans de Goede bool Modify_TxAGC_Flag_PathC; 967554c0a3aSHans de Goede bool Modify_TxAGC_Flag_PathD; 968554c0a3aSHans de Goede bool Modify_TxAGC_Flag_PathA_CCK; 969554c0a3aSHans de Goede 970554c0a3aSHans de Goede s8 KfreeOffset[MAX_RF_PATH]; 971554c0a3aSHans de Goede /* */ 972554c0a3aSHans de Goede /* ODM system resource. */ 973554c0a3aSHans de Goede /* */ 974554c0a3aSHans de Goede 975554c0a3aSHans de Goede /* ODM relative time. */ 97688e5d862SMarco Cesati struct timer_list PathDivSwitchTimer; 977554c0a3aSHans de Goede /* 2011.09.27 add for Path Diversity */ 97888e5d862SMarco Cesati struct timer_list CCKPathDiversityTimer; 97988e5d862SMarco Cesati struct timer_list FastAntTrainingTimer; 980554c0a3aSHans de Goede 981554c0a3aSHans de Goede /* ODM relative workitem. */ 982554c0a3aSHans de Goede 983554c0a3aSHans de Goede #if (BEAMFORMING_SUPPORT == 1) 984554c0a3aSHans de Goede RT_BEAMFORMING_INFO BeamformingInfo; 985554c0a3aSHans de Goede #endif 986694a76b9SMarco Cesati }; 987554c0a3aSHans de Goede 988f8010da6SMarco Cesati enum odm_rf_content { 989554c0a3aSHans de Goede odm_radioa_txt = 0x1000, 990554c0a3aSHans de Goede odm_radiob_txt = 0x1001, 991554c0a3aSHans de Goede odm_radioc_txt = 0x1002, 992554c0a3aSHans de Goede odm_radiod_txt = 0x1003 993694a76b9SMarco Cesati }; 994554c0a3aSHans de Goede 995694a76b9SMarco Cesati enum ODM_BB_Config_Type { 996554c0a3aSHans de Goede CONFIG_BB_PHY_REG, 997554c0a3aSHans de Goede CONFIG_BB_AGC_TAB, 998554c0a3aSHans de Goede CONFIG_BB_AGC_TAB_2G, 999554c0a3aSHans de Goede CONFIG_BB_PHY_REG_PG, 1000554c0a3aSHans de Goede CONFIG_BB_PHY_REG_MP, 1001554c0a3aSHans de Goede CONFIG_BB_AGC_TAB_DIFF, 1002694a76b9SMarco Cesati }; 1003554c0a3aSHans de Goede 1004694a76b9SMarco Cesati enum ODM_RF_Config_Type { 1005554c0a3aSHans de Goede CONFIG_RF_RADIO, 1006554c0a3aSHans de Goede CONFIG_RF_TXPWR_LMT, 1007694a76b9SMarco Cesati }; 1008554c0a3aSHans de Goede 1009694a76b9SMarco Cesati enum ODM_FW_Config_Type { 1010554c0a3aSHans de Goede CONFIG_FW_NIC, 1011554c0a3aSHans de Goede CONFIG_FW_NIC_2, 1012554c0a3aSHans de Goede CONFIG_FW_AP, 1013554c0a3aSHans de Goede CONFIG_FW_WoWLAN, 1014554c0a3aSHans de Goede CONFIG_FW_WoWLAN_2, 1015554c0a3aSHans de Goede CONFIG_FW_AP_WoWLAN, 1016554c0a3aSHans de Goede CONFIG_FW_BT, 1017694a76b9SMarco Cesati }; 1018554c0a3aSHans de Goede 1019554c0a3aSHans de Goede #ifdef REMOVE_PACK 1020554c0a3aSHans de Goede #pragma pack() 1021554c0a3aSHans de Goede #endif 1022554c0a3aSHans de Goede 1023554c0a3aSHans de Goede /* include "odm_function.h" */ 1024554c0a3aSHans de Goede 1025554c0a3aSHans de Goede /* 3 =========================================================== */ 1026554c0a3aSHans de Goede /* 3 DIG */ 1027554c0a3aSHans de Goede /* 3 =========================================================== */ 1028554c0a3aSHans de Goede 1029554c0a3aSHans de Goede /* Remove DIG by Yuchen */ 1030554c0a3aSHans de Goede 1031554c0a3aSHans de Goede /* 3 =========================================================== */ 1032554c0a3aSHans de Goede /* 3 AGC RX High Power Mode */ 1033554c0a3aSHans de Goede /* 3 =========================================================== */ 1034554c0a3aSHans de Goede #define LNA_Low_Gain_1 0x64 1035554c0a3aSHans de Goede #define LNA_Low_Gain_2 0x5A 1036554c0a3aSHans de Goede #define LNA_Low_Gain_3 0x58 1037554c0a3aSHans de Goede 1038554c0a3aSHans de Goede #define FA_RXHP_TH1 5000 1039554c0a3aSHans de Goede #define FA_RXHP_TH2 1500 1040554c0a3aSHans de Goede #define FA_RXHP_TH3 800 1041554c0a3aSHans de Goede #define FA_RXHP_TH4 600 1042554c0a3aSHans de Goede #define FA_RXHP_TH5 500 1043554c0a3aSHans de Goede 1044554c0a3aSHans de Goede /* 3 =========================================================== */ 1045554c0a3aSHans de Goede /* 3 EDCA */ 1046554c0a3aSHans de Goede /* 3 =========================================================== */ 1047554c0a3aSHans de Goede 1048554c0a3aSHans de Goede /* 3 =========================================================== */ 1049554c0a3aSHans de Goede /* 3 Dynamic Tx Power */ 1050554c0a3aSHans de Goede /* 3 =========================================================== */ 1051554c0a3aSHans de Goede /* Dynamic Tx Power Control Threshold */ 1052554c0a3aSHans de Goede 1053554c0a3aSHans de Goede /* 3 =========================================================== */ 1054554c0a3aSHans de Goede /* 3 Rate Adaptive */ 1055554c0a3aSHans de Goede /* 3 =========================================================== */ 1056554c0a3aSHans de Goede #define DM_RATR_STA_INIT 0 1057554c0a3aSHans de Goede #define DM_RATR_STA_HIGH 1 1058554c0a3aSHans de Goede #define DM_RATR_STA_MIDDLE 2 1059554c0a3aSHans de Goede #define DM_RATR_STA_LOW 3 1060554c0a3aSHans de Goede 1061554c0a3aSHans de Goede /* 3 =========================================================== */ 1062554c0a3aSHans de Goede /* 3 BB Power Save */ 1063554c0a3aSHans de Goede /* 3 =========================================================== */ 1064554c0a3aSHans de Goede 10657f577147SMarco Cesati enum { /* tag_1R_CCA_Type_Definition */ 1066554c0a3aSHans de Goede CCA_1R = 0, 1067554c0a3aSHans de Goede CCA_2R = 1, 1068554c0a3aSHans de Goede CCA_MAX = 2, 1069694a76b9SMarco Cesati }; 1070554c0a3aSHans de Goede 10717f577147SMarco Cesati enum { /* tag_RF_Type_Definition */ 1072554c0a3aSHans de Goede RF_Save = 0, 1073554c0a3aSHans de Goede RF_Normal = 1, 1074554c0a3aSHans de Goede RF_MAX = 2, 1075694a76b9SMarco Cesati }; 1076554c0a3aSHans de Goede 1077554c0a3aSHans de Goede /* Maximal number of antenna detection mechanism needs to perform, added by Roger, 2011.12.28. */ 1078554c0a3aSHans de Goede #define MAX_ANTENNA_DETECTION_CNT 10 1079554c0a3aSHans de Goede 1080554c0a3aSHans de Goede /* */ 1081554c0a3aSHans de Goede /* Extern Global Variables. */ 1082554c0a3aSHans de Goede /* */ 1083554c0a3aSHans de Goede extern u32 OFDMSwingTable[OFDM_TABLE_SIZE]; 1084554c0a3aSHans de Goede extern u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8]; 1085554c0a3aSHans de Goede extern u8 CCKSwingTable_Ch14[CCK_TABLE_SIZE][8]; 1086554c0a3aSHans de Goede 1087554c0a3aSHans de Goede extern u32 OFDMSwingTable_New[OFDM_TABLE_SIZE]; 1088554c0a3aSHans de Goede extern u8 CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8]; 1089554c0a3aSHans de Goede extern u8 CCKSwingTable_Ch14_New[CCK_TABLE_SIZE][8]; 1090554c0a3aSHans de Goede 1091554c0a3aSHans de Goede extern u32 TxScalingTable_Jaguar[TXSCALE_TABLE_SIZE]; 1092554c0a3aSHans de Goede 1093554c0a3aSHans de Goede /* */ 1094554c0a3aSHans de Goede /* check Sta pointer valid or not */ 1095554c0a3aSHans de Goede /* */ 1096554c0a3aSHans de Goede #define IS_STA_VALID(pSta) (pSta) 1097554c0a3aSHans de Goede /* 20100514 Joseph: Add definition for antenna switching test after link. */ 1098554c0a3aSHans de Goede /* This indicates two different the steps. */ 1099554c0a3aSHans de Goede /* In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. */ 1100554c0a3aSHans de Goede /* In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK */ 1101554c0a3aSHans de Goede /* with original RSSI to determine if it is necessary to switch antenna. */ 1102554c0a3aSHans de Goede #define SWAW_STEP_PEAK 0 1103554c0a3aSHans de Goede #define SWAW_STEP_DETERMINE 1 1104554c0a3aSHans de Goede 1105554c0a3aSHans de Goede /* Remove BB power saving by Yuchen */ 1106554c0a3aSHans de Goede 1107554c0a3aSHans de Goede #define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck 1108f8010da6SMarco Cesati void ODM_TXPowerTrackingCheck(struct dm_odm_t *pDM_Odm); 1109554c0a3aSHans de Goede 1110554c0a3aSHans de Goede bool ODM_RAStateCheck( 1111f8010da6SMarco Cesati struct dm_odm_t *pDM_Odm, 1112554c0a3aSHans de Goede s32 RSSI, 1113554c0a3aSHans de Goede bool bForceUpdate, 1114554c0a3aSHans de Goede u8 *pRATRState 1115554c0a3aSHans de Goede ); 1116554c0a3aSHans de Goede 1117554c0a3aSHans de Goede #define dm_SWAW_RSSI_Check ODM_SwAntDivChkPerPktRssi 1118554c0a3aSHans de Goede void ODM_SwAntDivChkPerPktRssi( 1119f8010da6SMarco Cesati struct dm_odm_t *pDM_Odm, 1120554c0a3aSHans de Goede u8 StationID, 1121ec57f864SQuytelda Kahja struct odm_phy_info *pPhyInfo 1122554c0a3aSHans de Goede ); 1123554c0a3aSHans de Goede 1124554c0a3aSHans de Goede u32 ODM_Get_Rate_Bitmap( 1125f8010da6SMarco Cesati struct dm_odm_t *pDM_Odm, 1126554c0a3aSHans de Goede u32 macid, 1127554c0a3aSHans de Goede u32 ra_mask, 1128554c0a3aSHans de Goede u8 rssi_level 1129554c0a3aSHans de Goede ); 1130554c0a3aSHans de Goede 1131554c0a3aSHans de Goede #if (BEAMFORMING_SUPPORT == 1) 1132554c0a3aSHans de Goede BEAMFORMING_CAP Beamforming_GetEntryBeamCapByMacId(PMGNT_INFO pMgntInfo, u8 MacId); 1133554c0a3aSHans de Goede #endif 1134554c0a3aSHans de Goede 1135f8010da6SMarco Cesati void odm_TXPowerTrackingInit(struct dm_odm_t *pDM_Odm); 1136554c0a3aSHans de Goede 1137f8010da6SMarco Cesati void ODM_DMInit(struct dm_odm_t *pDM_Odm); 1138554c0a3aSHans de Goede 1139f8010da6SMarco Cesati void ODM_DMWatchdog(struct dm_odm_t *pDM_Odm); /* For common use in the future */ 1140554c0a3aSHans de Goede 1141f8010da6SMarco Cesati void ODM_CmnInfoInit(struct dm_odm_t *pDM_Odm, enum odm_cmninfo_e CmnInfo, u32 Value); 1142554c0a3aSHans de Goede 1143f8010da6SMarco Cesati void ODM_CmnInfoHook(struct dm_odm_t *pDM_Odm, enum odm_cmninfo_e CmnInfo, void *pValue); 1144554c0a3aSHans de Goede 1145554c0a3aSHans de Goede void ODM_CmnInfoPtrArrayHook( 1146f8010da6SMarco Cesati struct dm_odm_t *pDM_Odm, 1147f8010da6SMarco Cesati enum odm_cmninfo_e CmnInfo, 1148554c0a3aSHans de Goede u16 Index, 1149554c0a3aSHans de Goede void *pValue 1150554c0a3aSHans de Goede ); 1151554c0a3aSHans de Goede 1152f8010da6SMarco Cesati void ODM_CmnInfoUpdate(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value); 1153554c0a3aSHans de Goede 1154f8010da6SMarco Cesati void ODM_InitAllTimers(struct dm_odm_t *pDM_Odm); 1155554c0a3aSHans de Goede 1156f8010da6SMarco Cesati void ODM_CancelAllTimers(struct dm_odm_t *pDM_Odm); 1157554c0a3aSHans de Goede 1158f8010da6SMarco Cesati void ODM_ReleaseAllTimers(struct dm_odm_t *pDM_Odm); 1159554c0a3aSHans de Goede 1160554c0a3aSHans de Goede void ODM_AntselStatistics_88C( 1161f8010da6SMarco Cesati struct dm_odm_t *pDM_Odm, 1162554c0a3aSHans de Goede u8 MacId, 1163554c0a3aSHans de Goede u32 PWDBAll, 1164554c0a3aSHans de Goede bool isCCKrate 1165554c0a3aSHans de Goede ); 1166554c0a3aSHans de Goede 1167f8010da6SMarco Cesati void ODM_DynamicARFBSelect(struct dm_odm_t *pDM_Odm, u8 rate, bool Collision_State); 1168554c0a3aSHans de Goede 1169554c0a3aSHans de Goede #endif 1170