1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
22 #ifndef __HALDMOUTSRC_H__
23 #define __HALDMOUTSRC_H__
25 //============================================================
27 //============================================================
29 // 2011/09/22 MH Define all team supprt ability.
33 // 2011/09/22 MH Define for all teams. Please Define the constan in your precomp header.
35 //#define DM_ODM_SUPPORT_AP 0
36 //#define DM_ODM_SUPPORT_ADSL 0
37 //#define DM_ODM_SUPPORT_CE 0
38 //#define DM_ODM_SUPPORT_MP 1
41 // 2011/09/28 MH Define ODM SW team support flag.
47 // Antenna Switch Relative Definition.
52 // Add new function SwAntDivCheck8192C().
53 // This is the main function of Antenna diversity function before link.
54 // Mainly, it just retains last scan result and scan again.
55 // After that, it compares the scan result to see which one gets better RSSI.
56 // It selects antenna with better receiving power and returns better scan result.
61 #define TRAFFIC_HIGH 1
64 //============================================================
66 //3============================================================
67 #define DPK_DELTA_MAPPING_NUM 13
68 #define index_mapping_HP_NUM 15
71 //============================================================
73 //3============================================================
75 #define AFH_PSD 1 //0:normal PSD scan, 1: only do 20 pts PSD
76 #define MODE_40M 0 //0:20M, 1:40M
78 #define PSD_CHMIN 20 // Minimum channel number for BT AFH
79 #define SIR_STEP_SIZE 3
80 #define Smooth_Size_1 5
82 #define Smooth_Size_2 10
84 #define Smooth_Size_3 20
86 #define Smooth_Step_Size 5
87 #define Adaptive_SIR 1
88 #if(RTL8723_FPGA_VERIFICATION == 1)
93 #define PSD_SCAN_INTERVAL 700 //ms
97 //8723A High Power IGI Setting
98 #define DM_DIG_HIGH_PWR_IGI_LOWER_BOUND 0x22
99 #define DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28
100 #define DM_DIG_HIGH_PWR_THRESHOLD 0x3a
103 #define DM_DIG_FA_TH0_LPS 4 //-> 4 in lps
104 #define DM_DIG_FA_TH1_LPS 15 //-> 15 lps
105 #define DM_DIG_FA_TH2_LPS 30 //-> 30 lps
106 #define RSSI_OFFSET_DIG 0x05;
109 #define ANTTESTALL 0x00 //Ant A or B will be Testing
110 #define ANTTESTA 0x01 //Ant A will be Testing
111 #define ANTTESTB 0x02 //Ant B will be testing
114 //============================================================
115 // structure and define
116 //============================================================
119 // 2011/09/20 MH Add for AP/ADSLpseudo DM structuer requirement.
120 // We need to remove to other position???
122 typedef struct rtl8192cd_priv {
125 }rtl8192cd_priv, *prtl8192cd_priv;
128 typedef struct _Dynamic_Initial_Gain_Threshold_
131 u8 Dig_Ext_Port_Stage;
139 u8 CurSTAConnectState;
140 u8 PreSTAConnectState;
141 u8 CurMultiSTAConnectState;
148 s1Byte BackoffVal_range_max;
149 s1Byte BackoffVal_range_min;
150 u8 rx_gain_range_max;
151 u8 rx_gain_range_min;
163 u8 DIG_Dynamic_MIN_0;
164 u8 DIG_Dynamic_MIN_1;
165 bool bMediaConnect_0;
166 bool bMediaConnect_1;
172 typedef struct _Dynamic_Power_Saving_
183 u32 Reg874,RegC70,Reg85C,RegA74;
187 typedef struct _FALSE_ALARM_STATISTICS{
189 u32 Cnt_Rate_Illegal;
196 u32 Cnt_SB_Search_fail;
200 u32 Cnt_BW_USC; //Gary
201 u32 Cnt_BW_LSC; //Gary
202 }FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS;
204 typedef struct _Dynamic_Primary_CCA{
210 }Pri_CCA_T, *pPri_CCA_T;
212 typedef struct _RX_High_Power_
216 u8 PSD_bitmap_RXHP[80];
221 bool First_time_enter;
227 #define ASSOCIATE_ENTRY_NUM 32 // Max size of AsocEntry[].
228 #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM
230 //#ifdef CONFIG_ANTENNA_DIVERSITY
231 // This indicates two different the steps.
232 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.
233 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK
234 // with original RSSI to determine if it is necessary to switch antenna.
235 #define SWAW_STEP_PEAK 0
236 #define SWAW_STEP_DETERMINE 1
240 #define TRAFFIC_LOW 0
241 #define TRAFFIC_HIGH 1
243 typedef struct _SW_Antenna_Switch_
251 u8 bTriggerAntennaSwitch;
255 // Before link Antenna Switch check
256 u8 SWAS_NoLink_State;
257 u32 SWAS_NoLink_BK_Reg860;
258 bool ANTA_ON; //To indicate Ant A is or not
259 bool ANTB_ON; //To indicate Ant B is on or not
273 RT_TIMER SwAntennaSwitchTimer;
275 #ifdef CONFIG_SW_ANTENNA_DIVERSITY
276 _timer SwAntennaSwitchTimer;
290 #ifdef CONFIG_HW_ANTENNA_DIVERSITY
291 //Hybrid Antenna Diversity
292 u32 CCK_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
293 u32 CCK_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
294 u32 OFDM_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
295 u32 OFDM_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
296 u32 RSSI_Ant1_Sum[ASSOCIATE_ENTRY_NUM];
297 u32 RSSI_Ant2_Sum[ASSOCIATE_ENTRY_NUM];
298 u8 TxAnt[ASSOCIATE_ENTRY_NUM];
308 typedef struct _EDCA_TURBO_
310 bool bCurrentTurboEDCA;
312 u32 prv_traffic_idx; // edca turbo
316 typedef struct _ODM_RATE_ADAPTIVE
318 u8 Type; // DM_Type_ByFW/DM_Type_ByDriver
319 u8 HighRSSIThresh; // if RSSI > HighRSSIThresh => RATRState is DM_RATR_STA_HIGH
320 u8 LowRSSIThresh; // if RSSI <= LowRSSIThresh => RATRState is DM_RATR_STA_LOW
321 u8 RATRState; // Current RSSI level, DM_RATR_STA_HIGH/DM_RATR_STA_MIDDLE/DM_RATR_STA_LOW
322 u32 LastRATR; // RATR Register Content
324 } ODM_RATE_ADAPTIVE, *PODM_RATE_ADAPTIVE;
327 #define IQK_MAC_REG_NUM 4
328 #define IQK_ADDA_REG_NUM 16
329 #define IQK_BB_REG_NUM_MAX 10
330 #if (RTL8192D_SUPPORT==1)
331 #define IQK_BB_REG_NUM 10
333 #define IQK_BB_REG_NUM 9
335 #define HP_THERMAL_NUM 8
337 #define AVG_THERMAL_NUM 8
338 #define IQK_Matrix_REG_NUM 8
339 #define IQK_Matrix_Settings_NUM 1+24+21
341 #define DM_Type_ByFW 0
342 #define DM_Type_ByDriver 1
345 // Declare for common info
347 // Declare for common info
349 #define MAX_PATH_NUM_92CS 2
351 typedef struct _ODM_Phy_Status_Info_
354 u8 SignalQuality; // in 0-100 index.
355 u8 RxMIMOSignalQuality[MAX_PATH_NUM_92CS]; //EVM
356 u8 RxMIMOSignalStrength[MAX_PATH_NUM_92CS];// in 0~100 index
357 s1Byte RxPower; // in dBm Translate from PWdB
358 s1Byte RecvSignalPower;// Real power in dBm for this packet, no beautification and aggregation. Keep this raw info to be used for the other procedures.
359 u8 BTRxRSSIPercentage;
360 u8 SignalStrength; // in 0-100 index.
361 u8 RxPwr[MAX_PATH_NUM_92CS];//per-path's pwdb
362 u8 RxSNR[MAX_PATH_NUM_92CS];//per-path's SNR
363 }ODM_PHY_INFO_T,*PODM_PHY_INFO_T;
366 typedef struct _ODM_Phy_Dbg_Info_
368 //ODM Write,debug info
369 s1Byte RxSNRdB[MAX_PATH_NUM_92CS];
371 u64 NumQryPhyStatusCCK;
372 u64 NumQryPhyStatusOFDM;
374 s4Byte RxEVM[MAX_PATH_NUM_92CS];
378 typedef struct _ODM_Per_Pkt_Info_
382 bool bPacketMatchBSSID;
385 }ODM_PACKET_INFO_T,*PODM_PACKET_INFO_T;
387 typedef struct _ODM_Mac_Status_Info_
394 typedef enum tag_Dynamic_ODM_Support_Ability_Type
397 ODM_DIG = 0x00000001,
398 ODM_HIGH_POWER = 0x00000002,
399 ODM_CCK_CCA_TH = 0x00000004,
400 ODM_FA_STATISTICS = 0x00000008,
401 ODM_RAMASK = 0x00000010,
402 ODM_RSSI_MONITOR = 0x00000020,
403 ODM_SW_ANTDIV = 0x00000040,
404 ODM_HW_ANTDIV = 0x00000080,
405 ODM_BB_PWRSV = 0x00000100,
406 ODM_2TPATHDIV = 0x00000200,
407 ODM_1TPATHDIV = 0x00000400,
408 ODM_PSD2AFH = 0x00000800
412 // 2011/20/20 MH For MP driver RT_WLAN_STA = STA_INFO_T
413 // Please declare below ODM relative info in your STA info structure.
416 typedef struct _ODM_STA_INFO{
418 bool bUsed; // record the sta status link or not?
419 //u8 WirelessMode; //
420 u8 IOTPeer; // Enum value. HT_IOT_PEER_E
430 //1 TX_INFO (may changed by IC)
431 //TX_INFO_T pTxInfo; // Define in IC folder. Move lower layer.
434 // Please use compile flag to disabe the strcutrue for other IC except 88E.
435 // Move To lower layer.
437 // ODM Write Wilson will handle this part(said by Luke.Lee)
438 //TX_RPT_T pTxRpt; // Define in IC folder. Move lower layer.
439 }ODM_STA_INFO_T, *PODM_STA_INFO_T;
443 // 2011/10/20 MH Define Common info enum for all team.
445 typedef enum _ODM_Common_Info_Definition
447 //-------------REMOVED CASE-----------//
448 //ODM_CMNINFO_CCK_HP,
449 //ODM_CMNINFO_RFPATH_ENABLE, // Define as ODM write???
450 //ODM_CMNINFO_BT_COEXIST, // ODM_BT_COEXIST_E
451 //ODM_CMNINFO_OP_MODE, // ODM_OPERATION_MODE_E
452 //-------------REMOVED CASE-----------//
458 //-----------HOOK BEFORE REG INIT-----------//
459 ODM_CMNINFO_PLATFORM = 0,
460 ODM_CMNINFO_ABILITY, // ODM_ABILITY_E
461 ODM_CMNINFO_INTERFACE, // ODM_INTERFACE_E
462 ODM_CMNINFO_MP_TEST_CHIP,
463 ODM_CMNINFO_IC_TYPE, // ODM_IC_TYPE_E
464 ODM_CMNINFO_CUT_VER, // ODM_CUT_VERSION_E
465 ODM_CMNINFO_FAB_VER, // ODM_FAB_E
466 ODM_CMNINFO_RF_TYPE, // ODM_RF_PATH_E or ODM_RF_TYPE_E?
467 ODM_CMNINFO_BOARD_TYPE, // ODM_BOARD_TYPE_E
468 ODM_CMNINFO_EXT_LNA, // TRUE
470 ODM_CMNINFO_EXT_TRSW,
471 ODM_CMNINFO_PATCH_ID, //CUSTOMER ID
472 ODM_CMNINFO_BINHCT_TEST,
473 ODM_CMNINFO_BWIFI_TEST,
474 ODM_CMNINFO_SMART_CONCURRENT,
475 //-----------HOOK BEFORE REG INIT-----------//
481 //--------- POINTER REFERENCE-----------//
482 ODM_CMNINFO_MAC_PHY_MODE, // ODM_MAC_PHY_MODE_E
485 ODM_CMNINFO_WM_MODE, // ODM_WIRELESS_MODE_E
486 ODM_CMNINFO_BAND, // ODM_BAND_TYPE_E
487 ODM_CMNINFO_SEC_CHNL_OFFSET, // ODM_SEC_CHNL_OFFSET_E
488 ODM_CMNINFO_SEC_MODE, // ODM_SECURITY_E
489 ODM_CMNINFO_BW, // ODM_BW_E
492 ODM_CMNINFO_DMSP_GET_VALUE,
493 ODM_CMNINFO_BUDDY_ADAPTOR,
494 ODM_CMNINFO_DMSP_IS_MASTER,
496 ODM_CMNINFO_POWER_SAVING,
497 ODM_CMNINFO_ONE_PATH_CCA, // ODM_CCA_PATH_E
498 ODM_CMNINFO_DRV_STOP,
501 ODM_CMNINFO_ANT_TEST,
502 ODM_CMNINFO_NET_CLOSED,
504 //--------- POINTER REFERENCE-----------//
506 //------------CALL BY VALUE-------------//
507 ODM_CMNINFO_WIFI_DIRECT,
508 ODM_CMNINFO_WIFI_DISPLAY,
510 ODM_CMNINFO_RSSI_MIN,
511 ODM_CMNINFO_DBG_COMP, // u64
512 ODM_CMNINFO_DBG_LEVEL, // u32
513 ODM_CMNINFO_RA_THRESHOLD_HIGH, // u8
514 ODM_CMNINFO_RA_THRESHOLD_LOW, // u8
515 ODM_CMNINFO_RF_ANTENNA_TYPE, // u8
516 ODM_CMNINFO_BT_DISABLED,
517 ODM_CMNINFO_BT_OPERATION,
519 ODM_CMNINFO_BT_BUSY, //Check Bt is using or not//neil
520 ODM_CMNINFO_BT_DISABLE_EDCA,
521 //------------CALL BY VALUE-------------//
524 // Dynamic ptr array hook itms.
526 ODM_CMNINFO_STA_STATUS,
527 ODM_CMNINFO_PHY_STATUS,
528 ODM_CMNINFO_MAC_STATUS,
536 // 2011/10/20 MH Define ODM support ability. ODM_CMNINFO_ABILITY
538 typedef enum _ODM_Support_Ability_Definition
541 // BB ODM section BIT 0-15
544 ODM_BB_RA_MASK = BIT1,
545 ODM_BB_DYNAMIC_TXPWR = BIT2,
546 ODM_BB_FA_CNT = BIT3,
547 ODM_BB_RSSI_MONITOR = BIT4,
548 ODM_BB_CCK_PD = BIT5,
549 ODM_BB_ANT_DIV = BIT6,
550 ODM_BB_PWR_SAVE = BIT7,
551 ODM_BB_PWR_TRAIN = BIT8,
552 ODM_BB_RATE_ADAPTIVE = BIT9,
553 ODM_BB_PATH_DIV = BIT10,
558 // MAC DM section BIT 16-23
560 ODM_MAC_EDCA_TURBO = BIT16,
561 ODM_MAC_EARLY_MODE = BIT17,
564 // RF ODM section BIT 24-31
566 ODM_RF_TX_PWR_TRACK = BIT24,
567 ODM_RF_RX_GAIN_TRACK = BIT25,
568 ODM_RF_CALIBRATION = BIT26,
572 // ODM_CMNINFO_INTERFACE
573 typedef enum tag_ODM_Support_Interface_Definition
581 // ODM_CMNINFO_IC_TYPE
582 typedef enum tag_ODM_Support_IC_Type_Definition
593 #define ODM_IC_11N_SERIES (ODM_RTL8192S|ODM_RTL8192C|ODM_RTL8192D|ODM_RTL8723A|ODM_RTL8188E)
594 #define ODM_IC_11AC_SERIES (ODM_RTL8812)
596 //ODM_CMNINFO_CUT_VER
597 typedef enum tag_ODM_Cut_Version_Definition
608 // ODM_CMNINFO_FAB_VER
609 typedef enum tag_ODM_Fab_Version_Definition
615 // ODM_CMNINFO_RF_TYPE
617 // For example 1T2R (A+AB = BIT0|BIT4|BIT5)
619 typedef enum tag_ODM_RF_Path_Bit_Definition
632 typedef enum tag_ODM_RF_Type_Definition
646 // ODM Dynamic common info value definition
649 //typedef enum _MACPHY_MODE_8192D{
650 // SINGLEMAC_SINGLEPHY,
652 // DUALMAC_SINGLEPHY,
653 //}MACPHY_MODE_8192D,*PMACPHY_MODE_8192D;
654 // Above is the original define in MP driver. Please use the same define. THX.
655 typedef enum tag_ODM_MAC_PHY_Mode_Definition
663 typedef enum tag_BT_Coexist_Definition
671 // ODM_CMNINFO_OP_MODE
672 typedef enum tag_Operation_Mode_Definition
677 ODM_POWERSAVE = BIT3,
679 ODM_CLIENT_MODE = BIT5,
681 ODM_WIFI_DIRECT = BIT7,
682 ODM_WIFI_DISPLAY = BIT8,
683 }ODM_OPERATION_MODE_E;
685 // ODM_CMNINFO_WM_MODE
686 typedef enum tag_Wireless_Mode_Definition
696 }ODM_WIRELESS_MODE_E;
699 typedef enum tag_Band_Type_Definition
701 ODM_BAND_2_4G = BIT0,
706 // ODM_CMNINFO_SEC_CHNL_OFFSET
707 typedef enum tag_Secondary_Channel_Offset_Definition
712 }ODM_SEC_CHNL_OFFSET_E;
714 // ODM_CMNINFO_SEC_MODE
715 typedef enum tag_Security_Definition
723 ODM_WEP_WPA_MIXED = 6, // WEP + WPA
728 typedef enum tag_Bandwidth_Definition
739 // ODM_CMNINFO_BOARD_TYPE
740 typedef enum tag_Board_Definition
742 ODM_BOARD_NORMAL = 0,
743 ODM_BOARD_HIGHPWR = 1,
744 ODM_BOARD_MINICARD = 2,
750 // ODM_CMNINFO_ONE_PATH_CCA
751 typedef enum tag_CCA_Path
759 typedef struct _ODM_RA_Info_
781 #if 1 //POWER_TRAINING_ACTIVE == 1 // For compile pass only~!
782 u8 PTActive; // on or off
783 u8 PTTryState; // 0 trying state, 1 for decision state
785 u8 PTStopCount; //Stop PT counter
786 u8 PTPreRate; // if rate change do PT
787 u8 PTPreRssi; // if RSSI change 5% do PT
788 u8 PTModeSS; // decide whitch rate should do PT
789 u8 RAstage; // StageRA, decide how many times RA will be done between PT
792 } ODM_RA_INFO_T,*PODM_RA_INFO_T;
794 typedef struct _IQK_MATRIX_REGS_SETTING{
796 s4Byte Value[1][IQK_Matrix_REG_NUM];
797 }IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING;
800 typedef struct ODM_RF_Calibration_Structure
802 //for tx power tracking
804 u32 RegA24; // for TempCCK
810 //u8 bTXPowerTracking;
812 bool bTXPowerTrackingInit;
813 bool bTXPowerTracking;
814 u8 TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default
816 u8 InternalPA5G[2]; //pathA / pathB
818 u8 ThermalMeter[2]; // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1
823 u8 ThermalValue_AVG[AVG_THERMAL_NUM];
824 u8 ThermalValue_AVG_index;
825 u8 ThermalValue_RxGain;
826 u8 ThermalValue_Crystal;
827 u8 ThermalValue_DPKstore;
828 u8 ThermalValue_DPKtrack;
829 bool TxPowerTrackingInProgress;
832 bool bReloadtxpowerindex;
834 u32 TXPowerTrackingCallbackCnt; //cosa add for debug
841 u8 ThermalValue_HP[HP_THERMAL_NUM];
842 u8 ThermalValue_HP_index;
843 IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];
858 bool bIQKInitialized;
860 bool bAntennaDetected;
861 u32 ADDA_backup[IQK_ADDA_REG_NUM];
862 u32 IQK_MAC_backup[IQK_MAC_REG_NUM];
863 u32 IQK_BB_backup_recover[9];
864 u32 IQK_BB_backup[IQK_BB_REG_NUM];
867 u32 APKoutput[2][2]; //path A/B; output1_1a/output1_2a
869 u8 bAPKThermalMeterIgnore;
873 }ODM_RF_CAL_T,*PODM_RF_CAL_T;
875 // ODM Dynamic common info value definition
878 typedef struct _FAST_ANTENNA_TRAINNING_
889 u8 antsel_a[ODM_ASSOCIATE_ENTRY_NUM];
890 u8 antsel_b[ODM_ASSOCIATE_ENTRY_NUM];
891 u8 antsel_c[ODM_ASSOCIATE_ENTRY_NUM];
892 u32 MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
893 u32 AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
894 u32 MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
895 u32 AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
901 typedef enum _FAT_STATE
903 FAT_NORMAL_STATE = 0,
904 FAT_TRAINING_STATE = 1,
905 }FAT_STATE_E, *PFAT_STATE_E;
907 typedef enum _ANT_DIV_TYPE
910 CG_TRX_HW_ANTDIV = 0x01,
911 CGCS_RX_HW_ANTDIV = 0x02,
912 FIXED_HW_ANTDIV = 0x03,
913 CG_TRX_SMART_ANTDIV = 0x04,
914 CGCS_RX_SW_ANTDIV = 0x05,
916 }ANT_DIV_TYPE_E, *PANT_DIV_TYPE_E;
931 // 2011/09/22 MH Copy from SD4 defined structure. We use to support PHY DM integration.
933 typedef struct DM_Out_Source_Dynamic_Mechanism_Structure
935 //RT_TIMER FastAntTrainingTimer;
937 // Add for different team use temporarily
939 PADAPTER Adapter; // For CE/NIC team
940 prtl8192cd_priv priv; // For AP/ADSL team
941 // WHen you use Adapter or priv pointer, you must make sure the pointer is ready.
944 rtl8192cd_priv fake_priv;
949 //------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//
951 u8 RFPathRxEnable; // ODM_CMNINFO_RFPATH_ENABLE
953 //------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//
955 //--------REMOVED COMMON INFO----------//
956 //u8 PseudoMacPhyMode;
958 //bool PseudoBtCoexist;
964 //--------REMOVED COMMON INFO----------//
967 //1 COMMON INFORMATION
972 //-----------HOOK BEFORE REG INIT-----------//
973 // ODM Platform info AP/ADSL/CE/MP = 1/2/3/4
975 // ODM Support Ability DIG/RATR/TX_PWR_TRACK/ ¡K¡K = 1/2/3/¡K
977 // ODM PCIE/USB/SDIO/GSPI = 0/1/2/3
979 // ODM composite or independent. Bit oriented/ 92C+92D+ .... or any other type = 1/2/3/...
981 // Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/...
983 // Fab Version TSMC/UMC = 0/1
985 // RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/...
987 // Board Type Normal/HighPower/MiniCard/SLIM/Combo/... = 0/1/2/3/4/...
989 // with external LNA NO/Yes = 0/1
991 // with external PA NO/Yes = 0/1
993 // with external TRSW NO/Yes = 0/1
995 u8 PatchID; //Customer ID
999 bool bDualMacSmartConcurrent;
1000 u32 BK_SupportAbility;
1002 //-----------HOOK BEFORE REG INIT-----------//
1007 //--------- POINTER REFERENCE-----------//
1011 PADAPTER PADAPTER_temp;
1013 // MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2
1015 //TX Unicast byte count
1016 u64 *pNumTxBytesUnicast;
1017 //RX Unicast byte count
1018 u64 *pNumRxBytesUnicast;
1019 // Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3
1020 u8 *pWirelessMode; //ODM_WIRELESS_MODE_E
1021 // Frequence band 2.4G/5G = 0/1
1023 // Secondary channel offset don't_care/below/above = 0/1/2
1025 // Security mode Open/WEP/AES/TKIP = 0/1/2/3
1027 // BW info 20M/40M/80M = 0/1/2
1029 // Central channel location Ch1/Ch2/....
1030 u8 *pChannel; //central channel number
1031 // Common info for 92D DMSP
1033 bool *pbGetValueFromOtherMac;
1034 PADAPTER *pBuddyAdapter;
1035 bool *pbMasterOfDMSP; //MAC0: master, MAC1: slave
1036 // Common info for Status
1037 bool *pbScanInProcess;
1038 bool *pbPowerSaving;
1039 // CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E.
1041 //pMgntInfo->AntennaTest
1044 //--------- POINTER REFERENCE-----------//
1046 //------------CALL BY VALUE-------------//
1051 u8 InterfaceIndex; // Add for 92D dual MAC: 0--Mac0 1--Mac1
1054 // Common info for BTDM
1055 bool bBtDisabled; // BT is disabled
1056 bool bBtHsOperation; // BT HS mode is under progress
1057 u8 btHsDigVal; // use BT rssi to decide the DIG value
1058 bool bBtDisableEdcaTurbo; // Under some condition, don't enable the EDCA Turbo
1059 bool bBtBusy; // BT is busy.
1060 //------------CALL BY VALUE-------------//
1062 //2 Define STA info.
1064 // 2012/01/12 MH For MP, we need to reduce one array pointer for default port.??
1065 PSTA_INFO_T pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];
1067 #if (RATE_ADAPTIVE_SUPPORT == 1)
1069 ODM_RA_INFO_T RAInfo[ODM_ASSOCIATE_ENTRY_NUM]; //Use MacID as array index. STA MacID=0, VWiFi Client MacID={1, ODM_ASSOCIATE_ENTRY_NUM-1} //YJ,add,120119
1072 // 2012/02/14 MH Add to share 88E ra with other SW team.
1073 // We need to colelct all support abilit to a proper area.
1077 // Define ...........
1079 // Latest packet phy info (ODM write)
1080 ODM_PHY_DBG_INFO_T PhyDbgInfo;
1081 //PHY_INFO_88E PhyInfo;
1083 // Latest packet phy info (ODM write)
1084 ODM_MAC_INFO *pMacInfo;
1085 //MAC_INFO_88E MacInfo;
1087 // Different Team independt structure??
1090 //TX_RTP_CMN TX_retrpo;
1091 //TX_RTP_88E TX_retrpo;
1092 //TX_RTP_8195 TX_retrpo;
1100 Pri_CCA_T DM_PriCCA;
1101 RXHP_T DM_RXHP_Table;
1102 FALSE_ALARM_STATISTICS FalseAlmCnt;
1103 FALSE_ALARM_STATISTICS FlaseAlmCntBuddyAdapter;
1104 //#ifdef CONFIG_ANTENNA_DIVERSITY
1105 SWAT_T DM_SWAT_Table;
1109 EDCA_T DM_EDCA_Table;
1111 // Copy from SD4 structure
1113 // ==================================================
1118 //u8 PSD_Report_RXHP[80]; // Add By Gary
1119 //u8 PSD_func_flag; // Add By Gary
1121 //u8 bDMInitialGainEnable;
1122 //u8 binitialized; // for dm_initial_gain_Multi_STA use.
1123 //for Antenna diversity
1124 //u8 AntDivCfg;// 0:OFF , 1:ON, 2:by efuse
1125 //PSTA_INFO_T RSSI_target;
1127 bool *pbDriverStopped;
1128 bool *pbDriverIsGoingToPnpSetPowerSleep;
1129 bool *pinit_adpt_in_progress;
1132 bool bUserAssignLevel;
1134 u8 RSSI_BT; //come from BT
1136 bool bDMInitialGainEnable;
1138 //for rate adaptive, in fact, 88c/92c fw will handle this
1141 ODM_RATE_ADAPTIVE RateAdaptive;
1144 ODM_RF_CAL_T RFCalibrateInfo;
1147 // TX power tracking
1150 u8 BbSwingIdxOfdmCurrent;
1151 u8 BbSwingIdxOfdmBase;
1152 bool BbSwingFlagOfdm;
1154 u8 BbSwingIdxCckCurrent;
1155 u8 BbSwingIdxCckBase;
1156 bool BbSwingFlagCck;
1158 // ODM system resource.
1161 // ODM relative time.
1162 RT_TIMER PathDivSwitchTimer;
1163 //2011.09.27 add for Path Diversity
1164 RT_TIMER CCKPathDiversityTimer;
1165 RT_TIMER FastAntTrainingTimer;
1167 // ODM relative workitem.
1168 } DM_ODM_T, *PDM_ODM_T; // DM_Dynamic_Mechanism_Structure
1173 #define ODM_RF_PATH_MAX 2
1174 #else //jaguar - series
1175 #define ODM_RF_PATH_MAX 4
1178 typedef enum _ODM_RF_RADIO_PATH {
1179 ODM_RF_PATH_A = 0, //Radio Path A
1180 ODM_RF_PATH_B = 1, //Radio Path B
1181 ODM_RF_PATH_C = 2, //Radio Path C
1182 ODM_RF_PATH_D = 3, //Radio Path D
1183 // ODM_RF_PATH_MAX, //Max RF number 90 support
1184 } ODM_RF_RADIO_PATH_E, *PODM_RF_RADIO_PATH_E;
1186 typedef enum _ODM_RF_CONTENT{
1187 odm_radioa_txt = 0x1000,
1188 odm_radiob_txt = 0x1001,
1189 odm_radioc_txt = 0x1002,
1190 odm_radiod_txt = 0x1003
1193 typedef enum _ODM_BB_Config_Type{
1196 CONFIG_BB_AGC_TAB_2G,
1197 CONFIG_BB_AGC_TAB_5G,
1198 CONFIG_BB_PHY_REG_PG,
1199 } ODM_BB_Config_Type, *PODM_BB_Config_Type;
1202 typedef enum _RT_STATUS{
1207 RT_STATUS_INVALID_CONTEXT,
1208 RT_STATUS_INVALID_PARAMETER,
1209 RT_STATUS_NOT_SUPPORT,
1210 RT_STATUS_OS_API_FAILED,
1211 }RT_STATUS,*PRT_STATUS;
1213 //#include "odm_function.h"
1215 //3===========================================================
1217 //3===========================================================
1219 typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition
1221 DIG_TYPE_THRESH_HIGH = 0,
1222 DIG_TYPE_THRESH_LOW = 1,
1223 DIG_TYPE_BACKOFF = 2,
1224 DIG_TYPE_RX_GAIN_MIN = 3,
1225 DIG_TYPE_RX_GAIN_MAX = 4,
1226 DIG_TYPE_ENABLE = 5,
1227 DIG_TYPE_DISABLE = 6,
1231 typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition
1233 CCK_PD_STAGE_LowRssi = 0,
1234 CCK_PD_STAGE_HighRssi = 1,
1235 CCK_PD_STAGE_MAX = 3,
1238 typedef enum tag_DIG_EXT_PORT_ALGO_Definition
1240 DIG_EXT_PORT_STAGE_0 = 0,
1241 DIG_EXT_PORT_STAGE_1 = 1,
1242 DIG_EXT_PORT_STAGE_2 = 2,
1243 DIG_EXT_PORT_STAGE_3 = 3,
1244 DIG_EXT_PORT_STAGE_MAX = 4,
1245 }DM_DIG_EXT_PORT_ALG_E;
1247 typedef enum tag_DIG_Connect_Definition
1249 DIG_STA_DISCONNECT = 0,
1250 DIG_STA_CONNECT = 1,
1251 DIG_STA_BEFORE_CONNECT = 2,
1252 DIG_MultiSTA_DISCONNECT = 3,
1253 DIG_MultiSTA_CONNECT = 4,
1258 #define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;}
1260 #define DM_MultiSTA_InitGainChangeNotify_CONNECT(_ADAPTER) \
1261 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_CONNECT)
1263 #define DM_MultiSTA_InitGainChangeNotify_DISCONNECT(_ADAPTER) \
1264 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_DISCONNECT)
1266 #define DM_DIG_THRESH_HIGH 40
1267 #define DM_DIG_THRESH_LOW 35
1269 #define DM_SCAN_RSSI_TH 0x14 //scan return issue for LC
1272 #define DM_FALSEALARM_THRESH_LOW 400
1273 #define DM_FALSEALARM_THRESH_HIGH 1000
1275 #define DM_DIG_MAX_NIC 0x4e
1276 #define DM_DIG_MIN_NIC 0x1e //0x22//0x1c
1278 #define DM_DIG_MAX_AP 0x32
1279 #define DM_DIG_MIN_AP 0x20
1281 #define DM_DIG_MAX_NIC_HP 0x46
1282 #define DM_DIG_MIN_NIC_HP 0x2e
1284 #define DM_DIG_MAX_AP_HP 0x42
1285 #define DM_DIG_MIN_AP_HP 0x30
1287 //vivi 92c&92d has different definition, 20110504
1289 #define DM_DIG_FA_TH0 0x200//0x20
1290 #define DM_DIG_FA_TH1 0x300//0x100
1291 #define DM_DIG_FA_TH2 0x400//0x200
1293 #define DM_DIG_FA_TH0_92D 0x100
1294 #define DM_DIG_FA_TH1_92D 0x400
1295 #define DM_DIG_FA_TH2_92D 0x600
1297 #define DM_DIG_BACKOFF_MAX 12
1298 #define DM_DIG_BACKOFF_MIN -4
1299 #define DM_DIG_BACKOFF_DEFAULT 10
1301 //3===========================================================
1302 //3 AGC RX High Power Mode
1303 //3===========================================================
1304 #define LNA_Low_Gain_1 0x64
1305 #define LNA_Low_Gain_2 0x5A
1306 #define LNA_Low_Gain_3 0x58
1308 #define FA_RXHP_TH1 5000
1309 #define FA_RXHP_TH2 1500
1310 #define FA_RXHP_TH3 800
1311 #define FA_RXHP_TH4 600
1312 #define FA_RXHP_TH5 500
1314 //3===========================================================
1316 //3===========================================================
1318 //3===========================================================
1319 //3 Dynamic Tx Power
1320 //3===========================================================
1321 //Dynamic Tx Power Control Threshold
1322 #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74
1323 #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67
1324 #define TX_POWER_NEAR_FIELD_THRESH_AP 0x3F
1326 #define TxHighPwrLevel_Normal 0
1327 #define TxHighPwrLevel_Level1 1
1328 #define TxHighPwrLevel_Level2 2
1329 #define TxHighPwrLevel_BT1 3
1330 #define TxHighPwrLevel_BT2 4
1331 #define TxHighPwrLevel_15 5
1332 #define TxHighPwrLevel_35 6
1333 #define TxHighPwrLevel_50 7
1334 #define TxHighPwrLevel_70 8
1335 #define TxHighPwrLevel_100 9
1337 //3===========================================================
1339 //3===========================================================
1340 #define DM_RATR_STA_INIT 0
1341 #define DM_RATR_STA_HIGH 1
1342 #define DM_RATR_STA_MIDDLE 2
1343 #define DM_RATR_STA_LOW 3
1345 //3===========================================================
1347 //3===========================================================
1350 typedef enum tag_1R_CCA_Type_Definition
1357 typedef enum tag_RF_Type_Definition
1364 //3===========================================================
1365 //3 Antenna Diversity
1366 //3===========================================================
1367 typedef enum tag_SW_Antenna_Switch_Definition
1375 // Maximal number of antenna detection mechanism needs to perform, added by Roger, 2011.12.28.
1376 #define MAX_ANTENNA_DETECTION_CNT 10
1379 // Extern Global Variables.
1381 #define OFDM_TABLE_SIZE_92C 37
1382 #define OFDM_TABLE_SIZE_92D 43
1383 #define CCK_TABLE_SIZE 33
1385 extern u32 OFDMSwingTable[OFDM_TABLE_SIZE_92D];
1386 extern u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];
1387 extern u8 CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];
1392 // check Sta pointer valid or not
1394 #define IS_STA_VALID(pSta) (pSta)
1395 // 20100514 Joseph: Add definition for antenna switching test after link.
1396 // This indicates two different the steps.
1397 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.
1398 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK
1399 // with original RSSI to determine if it is necessary to switch antenna.
1400 #define SWAW_STEP_PEAK 0
1401 #define SWAW_STEP_DETERMINE 1
1403 void ODM_Write_DIG(PDM_ODM_T pDM_Odm, u8 CurrentIGI);
1404 void ODM_Write_CCK_CCA_Thres(PDM_ODM_T pDM_Odm, u8 CurCCK_CCAThres);
1412 #define dm_RF_Saving ODM_RF_Saving
1413 void ODM_RF_Saving( PDM_ODM_T pDM_Odm,
1414 u8 bForceInNormal );
1416 #define SwAntDivRestAfterLink ODM_SwAntDivRestAfterLink
1417 void ODM_SwAntDivRestAfterLink( PDM_ODM_T pDM_Odm);
1419 #define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck
1421 ODM_TXPowerTrackingCheck(
1434 #define dm_SWAW_RSSI_Check ODM_SwAntDivChkPerPktRssi
1435 void ODM_SwAntDivChkPerPktRssi(
1438 PODM_PHY_INFO_T pPhyInfo
1441 u32 ConvertTo_dB(u32 Value);
1447 u8 initial_gain_psd);
1454 u32 ODM_Get_Rate_Bitmap(
1461 void ODM_DMInit(PDM_ODM_T pDM_Odm);
1465 PDM_ODM_T pDM_Odm // For common use in the future
1471 ODM_CMNINFO_E CmnInfo,
1478 ODM_CMNINFO_E CmnInfo,
1483 ODM_CmnInfoPtrArrayHook(
1485 ODM_CMNINFO_E CmnInfo,
1503 ODM_CancelAllTimers(
1508 ODM_ReleaseAllTimers(
1519 ODM_AntselStatistics_88C(
1528 ODM_SingleDualAntennaDefaultSetting(
1533 ODM_SingleDualAntennaDetection(
1538 void odm_dtc(PDM_ODM_T pDM_Odm);