staging: r8188eu: introduce new include dir for RTL8188eu driver
[linux-2.6-microblaze.git] / drivers / staging / r8188eu / include / odm.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4  *
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.
8  *
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
12  * more details.
13  *
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
17  *
18  *
19  ******************************************************************************/
20
21 #ifndef __HALDMOUTSRC_H__
22 #define __HALDMOUTSRC_H__
23
24 /*  Definition */
25 /*  Define all team support ability. */
26
27 /*  Define for all teams. Please Define the constant in your precomp header. */
28
29 /* define               DM_ODM_SUPPORT_AP                       0 */
30 /* define               DM_ODM_SUPPORT_ADSL                     0 */
31 /* define               DM_ODM_SUPPORT_CE                       0 */
32 /* define               DM_ODM_SUPPORT_MP                       1 */
33
34 /*  Define ODM SW team support flag. */
35
36 /*  Antenna Switch Relative Definition. */
37
38 /*  Add new function SwAntDivCheck8192C(). */
39 /*  This is the main function of Antenna diversity function before link. */
40 /*  Mainly, it just retains last scan result and scan again. */
41 /*  After that, it compares the scan result to see which one gets better
42  *  RSSI. It selects antenna with better receiving power and returns better
43  *  scan result. */
44
45 #define TP_MODE                 0
46 #define RSSI_MODE               1
47 #define TRAFFIC_LOW             0
48 #define TRAFFIC_HIGH            1
49
50 /* 3 Tx Power Tracking */
51 /* 3============================================================ */
52 #define         DPK_DELTA_MAPPING_NUM   13
53 #define         index_mapping_HP_NUM    15
54
55 /*  */
56 /* 3 PSD Handler */
57 /* 3============================================================ */
58
59 #define AFH_PSD         1       /* 0:normal PSD scan, 1: only do 20 pts PSD */
60 #define MODE_40M        0       /* 0:20M, 1:40M */
61 #define PSD_TH2         3
62 #define PSD_CHM         20   /*  Minimum channel number for BT AFH */
63 #define SIR_STEP_SIZE   3
64 #define Smooth_Size_1   5
65 #define Smooth_TH_1     3
66 #define Smooth_Size_2   10
67 #define Smooth_TH_2     4
68 #define Smooth_Size_3   20
69 #define Smooth_TH_3     4
70 #define Smooth_Step_Size 5
71 #define Adaptive_SIR    1
72 #define PSD_RESCAN      4
73 #define PSD_SCAN_INTERVAL       700 /* ms */
74
75 /* 8723A High Power IGI Setting */
76 #define DM_DIG_HIGH_PWR_IGI_LOWER_BOUND 0x22
77 #define DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28
78 #define DM_DIG_HIGH_PWR_THRESHOLD       0x3a
79
80 /*  LPS define */
81 #define DM_DIG_FA_TH0_LPS               4 /*  4 in lps */
82 #define DM_DIG_FA_TH1_LPS               15 /*  15 lps */
83 #define DM_DIG_FA_TH2_LPS               30 /*  30 lps */
84 #define RSSI_OFFSET_DIG                 0x05;
85
86 /* ANT Test */
87 #define ANTTESTALL              0x00    /* Ant A or B will be Testing */
88 #define ANTTESTA                0x01    /* Ant A will be Testing */
89 #define ANTTESTB                0x02    /* Ant B will be testing */
90
91 /*  structure and define */
92
93 /*  Add for AP/ADSLpseudo DM structuer requirement. */
94 /*  We need to remove to other position??? */
95 struct rtl8192cd_priv {
96         u8              temp;
97 };
98
99 struct rtw_dig {
100         u8              Dig_Enable_Flag;
101         u8              Dig_Ext_Port_Stage;
102
103         int             RssiLowThresh;
104         int             RssiHighThresh;
105
106         u32             FALowThresh;
107         u32             FAHighThresh;
108
109         u8              CurSTAConnectState;
110         u8              PreSTAConnectState;
111         u8              CurMultiSTAConnectState;
112
113         u8              PreIGValue;
114         u8              CurIGValue;
115         u8              BackupIGValue;
116
117         s8              BackoffVal;
118         s8              BackoffVal_range_max;
119         s8              BackoffVal_range_min;
120         u8              rx_gain_range_max;
121         u8              rx_gain_range_min;
122         u8              Rssi_val_min;
123
124         u8              PreCCK_CCAThres;
125         u8              CurCCK_CCAThres;
126         u8              PreCCKPDState;
127         u8              CurCCKPDState;
128
129         u8              LargeFAHit;
130         u8              ForbiddenIGI;
131         u32             Recover_cnt;
132
133         u8              DIG_Dynamic_MIN_0;
134         u8              DIG_Dynamic_MIN_1;
135         bool            bMediaConnect_0;
136         bool            bMediaConnect_1;
137
138         u32             AntDiv_RSSI_max;
139         u32             RSSI_max;
140 };
141
142 struct rtl_ps {
143         u8              PreCCAState;
144         u8              CurCCAState;
145
146         u8              PreRFState;
147         u8              CurRFState;
148
149         int                 Rssi_val_min;
150
151         u8              initialize;
152         u32             Reg874,RegC70,Reg85C,RegA74;
153
154 };
155
156 struct false_alarm_stats {
157         u32     Cnt_Parity_Fail;
158         u32     Cnt_Rate_Illegal;
159         u32     Cnt_Crc8_fail;
160         u32     Cnt_Mcs_fail;
161         u32     Cnt_Ofdm_fail;
162         u32     Cnt_Cck_fail;
163         u32     Cnt_all;
164         u32     Cnt_Fast_Fsync;
165         u32     Cnt_SB_Search_fail;
166         u32     Cnt_OFDM_CCA;
167         u32     Cnt_CCK_CCA;
168         u32     Cnt_CCA_all;
169         u32     Cnt_BW_USC;     /* Gary */
170         u32     Cnt_BW_LSC;     /* Gary */
171 };
172
173 struct dyn_primary_cca {
174         u8              PriCCA_flag;
175         u8              intf_flag;
176         u8              intf_type;
177         u8              DupRTS_flag;
178         u8              Monitor_flag;
179 };
180
181 struct rx_hpc {
182         u8              RXHP_flag;
183         u8              PSD_func_trigger;
184         u8              PSD_bitmap_RXHP[80];
185         u8              Pre_IGI;
186         u8              Cur_IGI;
187         u8              Pre_pw_th;
188         u8              Cur_pw_th;
189         bool            First_time_enter;
190         bool            RXHP_enable;
191         u8              TP_Mode;
192         struct timer_list PSDTimer;
193 };
194
195 #define ASSOCIATE_ENTRY_NUM     32 /*  Max size of AsocEntry[]. */
196 #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM
197
198 /*  This indicates two different steps. */
199 /*  In SWAW_STEP_PEAK, driver needs to switch antenna and listen to
200  *  the signal on the air. */
201 /*  In SWAW_STEP_DETERMINE, driver just compares the signal captured in
202  *  SWAW_STEP_PEAK with original RSSI to determine if it is necessary to
203  *  switch antenna. */
204
205 #define SWAW_STEP_PEAK          0
206 #define SWAW_STEP_DETERMINE     1
207
208 #define TP_MODE                 0
209 #define RSSI_MODE               1
210 #define TRAFFIC_LOW             0
211 #define TRAFFIC_HIGH            1
212
213 struct sw_ant_switch {
214         u8      try_flag;
215         s32     PreRSSI;
216         u8      CurAntenna;
217         u8      PreAntenna;
218         u8      RSSI_Trying;
219         u8      TestMode;
220         u8      bTriggerAntennaSwitch;
221         u8      SelectAntennaMap;
222         u8      RSSI_target;
223
224         /*  Before link Antenna Switch check */
225         u8      SWAS_NoLink_State;
226         u32     SWAS_NoLink_BK_Reg860;
227         bool    ANTA_ON;        /* To indicate Ant A is or not */
228         bool    ANTB_ON;        /* To indicate Ant B is on or not */
229
230         s32     RSSI_sum_A;
231         s32     RSSI_sum_B;
232         s32     RSSI_cnt_A;
233         s32     RSSI_cnt_B;
234         u64     lastTxOkCnt;
235         u64     lastRxOkCnt;
236         u64     TXByteCnt_A;
237         u64     TXByteCnt_B;
238         u64     RXByteCnt_A;
239         u64     RXByteCnt_B;
240         u8      TrafficLoad;
241         struct timer_list SwAntennaSwitchTimer;
242         /* Hybrid Antenna Diversity */
243         u32     CCK_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
244         u32     CCK_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
245         u32     OFDM_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
246         u32     OFDM_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
247         u32     RSSI_Ant1_Sum[ASSOCIATE_ENTRY_NUM];
248         u32     RSSI_Ant2_Sum[ASSOCIATE_ENTRY_NUM];
249         u8      TxAnt[ASSOCIATE_ENTRY_NUM];
250         u8      TargetSTA;
251         u8      antsel;
252         u8      RxIdleAnt;
253 };
254
255 struct edca_turbo {
256         bool bCurrentTurboEDCA;
257         bool bIsCurRDLState;
258         u32     prv_traffic_idx; /*  edca turbo */
259 };
260
261 struct odm_rate_adapt {
262         u8      Type;           /*  DM_Type_ByFW/DM_Type_ByDriver */
263         u8      HighRSSIThresh; /*  if RSSI > HighRSSIThresh    => RATRState is DM_RATR_STA_HIGH */
264         u8      LowRSSIThresh;  /*  if RSSI <= LowRSSIThresh    => RATRState is DM_RATR_STA_LOW */
265         u8      RATRState;      /*  Current RSSI level, DM_RATR_STA_HIGH/DM_RATR_STA_MIDDLE/DM_RATR_STA_LOW */
266         u32     LastRATR;       /*  RATR Register Content */
267 };
268
269 #define IQK_MAC_REG_NUM         4
270 #define IQK_ADDA_REG_NUM        16
271 #define IQK_BB_REG_NUM_MAX      10
272 #define IQK_BB_REG_NUM          9
273 #define HP_THERMAL_NUM          8
274
275 #define AVG_THERMAL_NUM         8
276 #define IQK_Matrix_REG_NUM      8
277 #define IQK_Matrix_Settings_NUM 1+24+21
278
279 #define DM_Type_ByFWi           0
280 #define DM_Type_ByDriver        1
281
282 /*  Declare for common info */
283
284 struct odm_phy_status_info {
285         u8      RxPWDBAll;
286         u8      SignalQuality;   /*  in 0-100 index. */
287         u8      RxMIMOSignalQuality[MAX_PATH_NUM_92CS]; /* EVM */
288         u8      RxMIMOSignalStrength[MAX_PATH_NUM_92CS];/*  in 0~100 index */
289         s8      RxPower; /*  in dBm Translate from PWdB */
290         s8      RecvSignalPower;/*  Real power in dBm for this packet, no
291                                  * beautification and aggregation. Keep this raw
292                                  * info to be used for the other procedures. */
293         u8      BTRxRSSIPercentage;
294         u8      SignalStrength; /*  in 0-100 index. */
295         u8      RxPwr[MAX_PATH_NUM_92CS];/* per-path's pwdb */
296         u8      RxSNR[MAX_PATH_NUM_92CS];/* per-path's SNR */
297 };
298
299 struct odm_phy_dbg_info {
300         /* ODM Write,debug info */
301         s8      RxSNRdB[MAX_PATH_NUM_92CS];
302         u64     NumQryPhyStatus;
303         u64     NumQryPhyStatusCCK;
304         u64     NumQryPhyStatusOFDM;
305         /* Others */
306         s32     RxEVM[MAX_PATH_NUM_92CS];
307 };
308
309 struct odm_per_pkt_info {
310         s8      Rate;
311         u8      StationID;
312         bool    bPacketMatchBSSID;
313         bool    bPacketToSelf;
314         bool    bPacketBeacon;
315 };
316
317 struct odm_mac_status_info {
318         u8      test;
319 };
320
321 enum odm_ability {
322         /*  BB Team */
323         ODM_DIG                 = 0x00000001,
324         ODM_HIGH_POWER          = 0x00000002,
325         ODM_CCK_CCA_TH          = 0x00000004,
326         ODM_FA_STATISTICS       = 0x00000008,
327         ODM_RAMASK              = 0x00000010,
328         ODM_RSSI_MONITOR        = 0x00000020,
329         ODM_SW_ANTDIV           = 0x00000040,
330         ODM_HW_ANTDIV           = 0x00000080,
331         ODM_BB_PWRSV            = 0x00000100,
332         ODM_2TPATHDIV           = 0x00000200,
333         ODM_1TPATHDIV           = 0x00000400,
334         ODM_PSD2AFH             = 0x00000800
335 };
336
337 /*  2011/20/20 MH For MP driver RT_WLAN_STA =  struct sta_info */
338 /*  Please declare below ODM relative info in your STA info structure. */
339
340 struct odm_sta_info {
341         /*  Driver Write */
342         bool    bUsed;          /*  record the sta status link or not? */
343         u8      IOTPeer;        /*  Enum value. HT_IOT_PEER_E */
344
345         /*  ODM Write */
346         /* 1 PHY_STATUS_INFO */
347         u8      RSSI_Path[4];           /*  */
348         u8      RSSI_Ave;
349         u8      RXEVM[4];
350         u8      RXSNR[4];
351 };
352
353 /*  2011/10/20 MH Define Common info enum for all team. */
354
355 enum odm_common_info_def {
356         /*  Fixed value: */
357
358         /* HOOK BEFORE REG INIT----------- */
359         ODM_CMNINFO_PLATFORM = 0,
360         ODM_CMNINFO_ABILITY,            /* ODM_ABILITY_E */
361         ODM_CMNINFO_INTERFACE,          /* ODM_INTERFACE_E */
362         ODM_CMNINFO_MP_TEST_CHIP,
363         ODM_CMNINFO_IC_TYPE,            /* ODM_IC_TYPE_E */
364         ODM_CMNINFO_CUT_VER,            /* ODM_CUT_VERSION_E */
365         ODM_CMNINFO_FAB_VER,            /* ODM_FAB_E */
366         ODM_CMNINFO_RF_TYPE,            /* RF_PATH_E or ODM_RF_TYPE_E? */
367         ODM_CMNINFO_BOARD_TYPE,         /* ODM_BOARD_TYPE_E */
368         ODM_CMNINFO_EXT_LNA,            /* true */
369         ODM_CMNINFO_EXT_PA,
370         ODM_CMNINFO_EXT_TRSW,
371         ODM_CMNINFO_PATCH_ID,           /* CUSTOMER ID */
372         ODM_CMNINFO_BINHCT_TEST,
373         ODM_CMNINFO_BWIFI_TEST,
374         ODM_CMNINFO_SMART_CONCURRENT,
375         /* HOOK BEFORE REG INIT-----------  */
376
377         /*  Dynamic value: */
378 /*  POINTER REFERENCE-----------  */
379         ODM_CMNINFO_MAC_PHY_MODE,       /*  ODM_MAC_PHY_MODE_E */
380         ODM_CMNINFO_TX_UNI,
381         ODM_CMNINFO_RX_UNI,
382         ODM_CMNINFO_WM_MODE,            /*  ODM_WIRELESS_MODE_E */
383         ODM_CMNINFO_BAND,               /*  ODM_BAND_TYPE_E */
384         ODM_CMNINFO_SEC_CHNL_OFFSET,    /*  ODM_SEC_CHNL_OFFSET_E */
385         ODM_CMNINFO_SEC_MODE,           /*  ODM_SECURITY_E */
386         ODM_CMNINFO_BW,                 /*  ODM_BW_E */
387         ODM_CMNINFO_CHNL,
388
389         ODM_CMNINFO_DMSP_GET_VALUE,
390         ODM_CMNINFO_BUDDY_ADAPTOR,
391         ODM_CMNINFO_DMSP_IS_MASTER,
392         ODM_CMNINFO_SCAN,
393         ODM_CMNINFO_POWER_SAVING,
394         ODM_CMNINFO_ONE_PATH_CCA,       /*  ODM_CCA_PATH_E */
395         ODM_CMNINFO_DRV_STOP,
396         ODM_CMNINFO_PNP_IN,
397         ODM_CMNINFO_INIT_ON,
398         ODM_CMNINFO_ANT_TEST,
399         ODM_CMNINFO_NET_CLOSED,
400         ODM_CMNINFO_MP_MODE,
401 /*  POINTER REFERENCE----------- */
402
403 /* CALL BY VALUE------------- */
404         ODM_CMNINFO_WIFI_DIRECT,
405         ODM_CMNINFO_WIFI_DISPLAY,
406         ODM_CMNINFO_LINK,
407         ODM_CMNINFO_RSSI_MIN,
408         ODM_CMNINFO_DBG_COMP,                   /*  u64 */
409         ODM_CMNINFO_DBG_LEVEL,                  /*  u32 */
410         ODM_CMNINFO_RA_THRESHOLD_HIGH,          /*  u8 */
411         ODM_CMNINFO_RA_THRESHOLD_LOW,           /*  u8 */
412         ODM_CMNINFO_RF_ANTENNA_TYPE,            /*  u8 */
413         ODM_CMNINFO_BT_DISABLED,
414         ODM_CMNINFO_BT_OPERATION,
415         ODM_CMNINFO_BT_DIG,
416         ODM_CMNINFO_BT_BUSY,                    /* Check Bt is using or not */
417         ODM_CMNINFO_BT_DISABLE_EDCA,
418 /* CALL BY VALUE-------------*/
419
420         /*  Dynamic ptr array hook itms. */
421         ODM_CMNINFO_STA_STATUS,
422         ODM_CMNINFO_PHY_STATUS,
423         ODM_CMNINFO_MAC_STATUS,
424         ODM_CMNINFO_MAX,
425 };
426
427 /*  2011/10/20 MH Define ODM support ability.  ODM_CMNINFO_ABILITY */
428
429 enum odm_ability_def {
430         /*  BB ODM section BIT 0-15 */
431         ODM_BB_DIG                      = BIT0,
432         ODM_BB_RA_MASK                  = BIT1,
433         ODM_BB_DYNAMIC_TXPWR            = BIT2,
434         ODM_BB_FA_CNT                   = BIT3,
435         ODM_BB_RSSI_MONITOR             = BIT4,
436         ODM_BB_CCK_PD                   = BIT5,
437         ODM_BB_ANT_DIV                  = BIT6,
438         ODM_BB_PWR_SAVE                 = BIT7,
439         ODM_BB_PWR_TRA                  = BIT8,
440         ODM_BB_RATE_ADAPTIVE            = BIT9,
441         ODM_BB_PATH_DIV                 = BIT10,
442         ODM_BB_PSD                      = BIT11,
443         ODM_BB_RXHP                     = BIT12,
444
445         /*  MAC DM section BIT 16-23 */
446         ODM_MAC_EDCA_TURBO              = BIT16,
447         ODM_MAC_EARLY_MODE              = BIT17,
448
449         /*  RF ODM section BIT 24-31 */
450         ODM_RF_TX_PWR_TRACK             = BIT24,
451         ODM_RF_RX_GAIN_TRACK            = BIT25,
452         ODM_RF_CALIBRATION              = BIT26,
453 };
454
455 /*      ODM_CMNINFO_INTERFACE */
456 enum odm_interface_def {
457         ODM_ITRF_PCIE   =       0x1,
458         ODM_ITRF_USB    =       0x2,
459         ODM_ITRF_SDIO   =       0x4,
460         ODM_ITRF_ALL    =       0x7,
461 };
462
463 /*  ODM_CMNINFO_IC_TYPE */
464 enum odm_ic_type {
465         ODM_RTL8192S    =       BIT0,
466         ODM_RTL8192C    =       BIT1,
467         ODM_RTL8192D    =       BIT2,
468         ODM_RTL8723A    =       BIT3,
469         ODM_RTL8188E    =       BIT4,
470         ODM_RTL8812     =       BIT5,
471         ODM_RTL8821     =       BIT6,
472 };
473
474 #define ODM_IC_11N_SERIES                                               \
475         (ODM_RTL8192S | ODM_RTL8192C | ODM_RTL8192D |                   \
476          ODM_RTL8723A | ODM_RTL8188E)
477 #define ODM_IC_11AC_SERIES              (ODM_RTL8812)
478
479 /* ODM_CMNINFO_CUT_VER */
480 enum odm_cut_version {
481         ODM_CUT_A       =       1,
482         ODM_CUT_B       =       2,
483         ODM_CUT_C       =       3,
484         ODM_CUT_D       =       4,
485         ODM_CUT_E       =       5,
486         ODM_CUT_F       =       6,
487         ODM_CUT_TEST    =       7,
488 };
489
490 /*  ODM_CMNINFO_FAB_VER */
491 enum odm_fab_Version {
492         ODM_TSMC        =       0,
493         ODM_UMC         =       1,
494 };
495
496 /*  ODM_CMNINFO_RF_TYPE */
497 /*  For example 1T2R (A+AB = BIT0|BIT4|BIT5) */
498 enum odm_rf_path {
499         ODM_RF_TX_A     =       BIT0,
500         ODM_RF_TX_B     =       BIT1,
501         ODM_RF_TX_C     =       BIT2,
502         ODM_RF_TX_D     =       BIT3,
503         ODM_RF_RX_A     =       BIT4,
504         ODM_RF_RX_B     =       BIT5,
505         ODM_RF_RX_C     =       BIT6,
506         ODM_RF_RX_D     =       BIT7,
507 };
508
509 enum odm_rf_type {
510         ODM_1T1R        =       0,
511         ODM_1T2R        =       1,
512         ODM_2T2R        =       2,
513         ODM_2T3R        =       3,
514         ODM_2T4R        =       4,
515         ODM_3T3R        =       5,
516         ODM_3T4R        =       6,
517         ODM_4T4R        =       7,
518 };
519
520 /*  ODM Dynamic common info value definition */
521
522 enum odm_mac_phy_mode {
523         ODM_SMSP        = 0,
524         ODM_DMSP        = 1,
525         ODM_DMDP        = 2,
526 };
527
528 enum odm_bt_coexist {
529         ODM_BT_BUSY             = 1,
530         ODM_BT_ON               = 2,
531         ODM_BT_OFF              = 3,
532         ODM_BT_NONE             = 4,
533 };
534
535 /*  ODM_CMNINFO_OP_MODE */
536 enum odm_operation_mode {
537         ODM_NO_LINK             = BIT0,
538         ODM_LINK                = BIT1,
539         ODM_SCAN                = BIT2,
540         ODM_POWERSAVE           = BIT3,
541         ODM_AP_MODE             = BIT4,
542         ODM_CLIENT_MODE         = BIT5,
543         ODM_AD_HOC              = BIT6,
544         ODM_WIFI_DIRECT         = BIT7,
545         ODM_WIFI_DISPLAY        = BIT8,
546 };
547
548 /*  ODM_CMNINFO_WM_MODE */
549 enum odm_wireless_mode {
550         ODM_WM_UNKNOW   = 0x0,
551         ODM_WM_B        = BIT0,
552         ODM_WM_G        = BIT1,
553         ODM_WM_A        = BIT2,
554         ODM_WM_N24G     = BIT3,
555         ODM_WM_N5G      = BIT4,
556         ODM_WM_AUTO     = BIT5,
557         ODM_WM_AC       = BIT6,
558 };
559
560 /*  ODM_CMNINFO_BAND */
561 enum odm_band_type {
562         ODM_BAND_2_4G   = BIT0,
563         ODM_BAND_5G     = BIT1,
564 };
565
566 /*  ODM_CMNINFO_SEC_CHNL_OFFSET */
567 enum odm_sec_chnl_offset {
568         ODM_DONT_CARE   = 0,
569         ODM_BELOW       = 1,
570         ODM_ABOVE       = 2
571 };
572
573 /*  ODM_CMNINFO_SEC_MODE */
574 enum odm_security {
575         ODM_SEC_OPEN            = 0,
576         ODM_SEC_WEP40           = 1,
577         ODM_SEC_TKIP            = 2,
578         ODM_SEC_RESERVE         = 3,
579         ODM_SEC_AESCCMP         = 4,
580         ODM_SEC_WEP104          = 5,
581         ODM_WEP_WPA_MIXED       = 6, /*  WEP + WPA */
582         ODM_SEC_SMS4            = 7,
583 };
584
585 /*  ODM_CMNINFO_BW */
586 enum odm_bw {
587         ODM_BW20M               = 0,
588         ODM_BW40M               = 1,
589         ODM_BW80M               = 2,
590         ODM_BW160M              = 3,
591         ODM_BW10M               = 4,
592 };
593
594 /*  ODM_CMNINFO_BOARD_TYPE */
595 enum odm_board_type {
596         ODM_BOARD_NORMAL        = 0,
597         ODM_BOARD_HIGHPWR       = 1,
598         ODM_BOARD_MINICARD      = 2,
599         ODM_BOARD_SLIM          = 3,
600         ODM_BOARD_COMBO         = 4,
601 };
602
603 /*  ODM_CMNINFO_ONE_PATH_CCA */
604 enum odm_cca_path {
605         ODM_CCA_2R              = 0,
606         ODM_CCA_1R_A            = 1,
607         ODM_CCA_1R_B            = 2,
608 };
609
610 struct odm_ra_info {
611         u8 RateID;
612         u32 RateMask;
613         u32 RAUseRate;
614         u8 RateSGI;
615         u8 RssiStaRA;
616         u8 PreRssiStaRA;
617         u8 SGIEnable;
618         u8 DecisionRate;
619         u8 PreRate;
620         u8 HighestRate;
621         u8 LowestRate;
622         u32 NscUp;
623         u32 NscDown;
624         u16 RTY[5];
625         u32 TOTAL;
626         u16 DROP;
627         u8 Active;
628         u16 RptTime;
629         u8 RAWaitingCounter;
630         u8 RAPendingCounter;
631         u8 PTActive;    /*  on or off */
632         u8 PTTryState;  /*  0 trying state, 1 for decision state */
633         u8 PTStage;     /*  0~6 */
634         u8 PTStopCount; /* Stop PT counter */
635         u8 PTPreRate;   /*  if rate change do PT */
636         u8 PTPreRssi;   /*  if RSSI change 5% do PT */
637         u8 PTModeSS;    /*  decide whitch rate should do PT */
638         u8 RAstage;     /*  StageRA, decide how many times RA will be done
639                          * between PT */
640         u8 PTSmoothFactor;
641 };
642
643 struct ijk_matrix_regs_set {
644         bool    bIQKDone;
645         s32     Value[1][IQK_Matrix_REG_NUM];
646 };
647
648 struct odm_rf_cal {
649         /* for tx power tracking */
650         u32     RegA24; /*  for TempCCK */
651         s32     RegE94;
652         s32     RegE9C;
653         s32     RegEB4;
654         s32     RegEBC;
655
656         u8      TXPowercount;
657         bool    bTXPowerTrackingInit;
658         bool    bTXPowerTracking;
659         u8      TxPowerTrackControl; /* for mp mode, turn off txpwrtracking
660                                       * as default */
661         u8      TM_Trigger;
662         u8      InternalPA5G[2];        /* pathA / pathB */
663
664         u8      ThermalMeter[2];    /* ThermalMeter, index 0 for RFIC0,
665                                      * and 1 for RFIC1 */
666         u8      ThermalValue;
667         u8      ThermalValue_LCK;
668         u8      ThermalValue_IQK;
669         u8      ThermalValue_DPK;
670         u8      ThermalValue_AVG[AVG_THERMAL_NUM];
671         u8      ThermalValue_AVG_index;
672         u8      ThermalValue_RxGain;
673         u8      ThermalValue_Crystal;
674         u8      ThermalValue_DPKstore;
675         u8      ThermalValue_DPKtrack;
676         bool    TxPowerTrackingInProgress;
677         bool    bDPKenable;
678
679         bool    bReloadtxpowerindex;
680         u8      bRfPiEnable;
681         u32     TXPowerTrackingCallbackCnt; /* cosa add for debug */
682
683         u8      bCCKinCH14;
684         u8      CCK_index;
685         u8      OFDM_index[2];
686         bool bDoneTxpower;
687
688         u8      ThermalValue_HP[HP_THERMAL_NUM];
689         u8      ThermalValue_HP_index;
690         struct ijk_matrix_regs_set IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];
691
692         u8      Delta_IQK;
693         u8      Delta_LCK;
694
695         /* for IQK */
696         u32     RegC04;
697         u32     Reg874;
698         u32     RegC08;
699         u32     RegB68;
700         u32     RegB6C;
701         u32     Reg870;
702         u32     Reg860;
703         u32     Reg864;
704
705         bool    bIQKInitialized;
706         bool    bLCKInProgress;
707         bool    bAntennaDetected;
708         u32     ADDA_backup[IQK_ADDA_REG_NUM];
709         u32     IQK_MAC_backup[IQK_MAC_REG_NUM];
710         u32     IQK_BB_backup_recover[9];
711         u32     IQK_BB_backup[IQK_BB_REG_NUM];
712
713         /* for APK */
714         u32     APKoutput[2][2]; /* path A/B; output1_1a/output1_2a */
715         u8      bAPKdone;
716         u8      bAPKThermalMeterIgnore;
717         u8      bDPdone;
718         u8      bDPPathAOK;
719         u8      bDPPathBOK;
720 };
721
722 /*  ODM Dynamic common info value definition */
723
724 struct fast_ant_train {
725         u8      Bssid[6];
726         u8      antsel_rx_keep_0;
727         u8      antsel_rx_keep_1;
728         u8      antsel_rx_keep_2;
729         u32     antSumRSSI[7];
730         u32     antRSSIcnt[7];
731         u32     antAveRSSI[7];
732         u8      FAT_State;
733         u32     TrainIdx;
734         u8      antsel_a[ODM_ASSOCIATE_ENTRY_NUM];
735         u8      antsel_b[ODM_ASSOCIATE_ENTRY_NUM];
736         u8      antsel_c[ODM_ASSOCIATE_ENTRY_NUM];
737         u32     MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
738         u32     AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
739         u32     MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
740         u32     AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
741         u8      RxIdleAnt;
742         bool    bBecomeLinked;
743 };
744
745 enum fat_state {
746         FAT_NORMAL_STATE                = 0,
747         FAT_TRAINING_STATE              = 1,
748 };
749
750 enum ant_div_type {
751         NO_ANTDIV                       = 0xFF,
752         CG_TRX_HW_ANTDIV                = 0x01,
753         CGCS_RX_HW_ANTDIV               = 0x02,
754         FIXED_HW_ANTDIV                 = 0x03,
755         CG_TRX_SMART_ANTDIV             = 0x04,
756         CGCS_RX_SW_ANTDIV               = 0x05,
757 };
758
759 /* Copy from SD4 defined structure. We use to support PHY DM integration. */
760 struct odm_dm_struct {
761         /*      Add for different team use temporarily */
762         struct adapter *Adapter;        /*  For CE/NIC team */
763         struct rtl8192cd_priv *priv;    /*  For AP/ADSL team */
764         /*  WHen you use above pointers, they must be initialized. */
765         bool    odm_ready;
766
767         struct rtl8192cd_priv *fake_priv;
768         u64     DebugComponents;
769         u32     DebugLevel;
770
771 /*  ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */
772         bool    bCckHighPower;
773         u8      RFPathRxEnable;         /*  ODM_CMNINFO_RFPATH_ENABLE */
774         u8      ControlChannel;
775 /*  ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */
776
777 /* 1  COMMON INFORMATION */
778         /*  Init Value */
779 /* HOOK BEFORE REG INIT----------- */
780         /*  ODM Platform info AP/ADSL/CE/MP = 1/2/3/4 */
781         u8      SupportPlatform;
782         /*  ODM Support Ability DIG/RATR/TX_PWR_TRACK/ ï¿½K�K = 1/2/3/�K */
783         u32     SupportAbility;
784         /*  ODM PCIE/USB/SDIO/GSPI = 0/1/2/3 */
785         u8      SupportInterface;
786         /*  ODM composite or independent. Bit oriented/ 92C+92D+ .... or any
787          *  other type = 1/2/3/... */
788         u32     SupportICType;
789         /*  Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/... */
790         u8      CutVersion;
791         /*  Fab Version TSMC/UMC = 0/1 */
792         u8      FabVersion;
793         /*  RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/... */
794         u8      RFType;
795         /*  Board Type Normal/HighPower/MiniCard/SLIM/Combo/. = 0/1/2/3/4/. */
796         u8      BoardType;
797         /*  with external LNA  NO/Yes = 0/1 */
798         u8      ExtLNA;
799         /*  with external PA  NO/Yes = 0/1 */
800         u8      ExtPA;
801         /*  with external TRSW  NO/Yes = 0/1 */
802         u8      ExtTRSW;
803         u8      PatchID; /* Customer ID */
804         bool    bInHctTest;
805         bool    bWIFITest;
806
807         bool    bDualMacSmartConcurrent;
808         u32     BK_SupportAbility;
809         u8      AntDivType;
810 /* HOOK BEFORE REG INIT----------- */
811
812         /*  Dynamic Value */
813 /*  POINTER REFERENCE----------- */
814
815         u8      u8_temp;
816         bool    bool_temp;
817         struct adapter *adapter_temp;
818
819         /*  MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */
820         u8      *pMacPhyMode;
821         /* TX Unicast byte count */
822         u64     *pNumTxBytesUnicast;
823         /* RX Unicast byte count */
824         u64     *pNumRxBytesUnicast;
825         /*  Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */
826         u8      *pWirelessMode; /* ODM_WIRELESS_MODE_E */
827         /*  Frequence band 2.4G/5G = 0/1 */
828         u8      *pBandType;
829         /*  Secondary channel offset don't_care/below/above = 0/1/2 */
830         u8      *pSecChOffset;
831         /*  Security mode Open/WEP/AES/TKIP = 0/1/2/3 */
832         u8      *pSecurity;
833         /*  BW info 20M/40M/80M = 0/1/2 */
834         u8      *pBandWidth;
835         /*  Central channel location Ch1/Ch2/.... */
836         u8      *pChannel;      /* central channel number */
837         /*  Common info for 92D DMSP */
838
839         bool    *pbGetValueFromOtherMac;
840         struct adapter **pBuddyAdapter;
841         bool    *pbMasterOfDMSP; /* MAC0: master, MAC1: slave */
842         /*  Common info for Status */
843         bool    *pbScanInProcess;
844         bool    *pbPowerSaving;
845         /*  CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E. */
846         u8      *pOnePathCCA;
847         /* pMgntInfo->AntennaTest */
848         u8      *pAntennaTest;
849         bool    *pbNet_closed;
850 /*  POINTER REFERENCE----------- */
851         /*  */
852 /* CALL BY VALUE------------- */
853         bool    bWIFI_Direct;
854         bool    bWIFI_Display;
855         bool    bLinked;
856         u8      RSSI_Min;
857         u8      InterfaceIndex; /*  Add for 92D  dual MAC: 0--Mac0 1--Mac1 */
858         bool    bIsMPChip;
859         bool    bOneEntryOnly;
860         /*  Common info for BTDM */
861         bool    bBtDisabled;    /*  BT is disabled */
862         bool    bBtHsOperation; /*  BT HS mode is under progress */
863         u8      btHsDigVal;     /*  use BT rssi to decide the DIG value */
864         bool    bBtDisableEdcaTurbo;/* Under some condition, don't enable the
865                                      * EDCA Turbo */
866         bool    bBtBusy;                        /*  BT is busy. */
867 /* CALL BY VALUE------------- */
868
869         /* 2 Define STA info. */
870         /*  _ODM_STA_INFO */
871         /*  For MP, we need to reduce one array pointer for default port.?? */
872         struct sta_info *pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];
873
874         u16     CurrminRptTime;
875         struct odm_ra_info RAInfo[ODM_ASSOCIATE_ENTRY_NUM]; /* Use MacID as
876                         * array index. STA MacID=0,
877                         * VWiFi Client MacID={1, ODM_ASSOCIATE_ENTRY_NUM-1} */
878         /*  */
879         /*  2012/02/14 MH Add to share 88E ra with other SW team. */
880         /*  We need to colelct all support abilit to a proper area. */
881         /*  */
882         bool    RaSupport88E;
883
884         /*  Define ........... */
885
886         /*  Latest packet phy info (ODM write) */
887         struct odm_phy_dbg_info PhyDbgInfo;
888
889         /*  Latest packet phy info (ODM write) */
890         struct odm_mac_status_info *pMacInfo;
891
892         /*  Different Team independt structure?? */
893
894         /* ODM Structure */
895         struct fast_ant_train DM_FatTable;
896         struct rtw_dig  DM_DigTable;
897         struct rtl_ps   DM_PSTable;
898         struct dyn_primary_cca DM_PriCCA;
899         struct rx_hpc   DM_RXHP_Table;
900         struct false_alarm_stats FalseAlmCnt;
901         struct false_alarm_stats FlaseAlmCntBuddyAdapter;
902         struct sw_ant_switch DM_SWAT_Table;
903         bool            RSSI_test;
904
905         struct edca_turbo DM_EDCA_Table;
906         u32             WMMEDCA_BE;
907         /*  Copy from SD4 structure */
908         /*  */
909         /*  ================================================== */
910         /*  */
911
912         bool    *pbDriverStopped;
913         bool    *pbDriverIsGoingToPnpSetPowerSleep;
914         bool    *pinit_adpt_in_progress;
915
916         /* PSD */
917         bool    bUserAssignLevel;
918         struct timer_list PSDTimer;
919         u8      RSSI_BT;                        /* come from BT */
920         bool    bPSDinProcess;
921         bool    bDMInitialGainEnable;
922
923         /* for rate adaptive, in fact,  88c/92c fw will handle this */
924         u8      bUseRAMask;
925
926         struct odm_rate_adapt RateAdaptive;
927
928         struct odm_rf_cal RFCalibrateInfo;
929
930         /*  TX power tracking */
931         u8      BbSwingIdxOfdm;
932         u8      BbSwingIdxOfdmCurrent;
933         u8      BbSwingIdxOfdmBase;
934         bool    BbSwingFlagOfdm;
935         u8      BbSwingIdxCck;
936         u8      BbSwingIdxCckCurrent;
937         u8      BbSwingIdxCckBase;
938         bool    BbSwingFlagCck;
939         u8      *mp_mode;
940         /*  ODM system resource. */
941
942         /*  ODM relative time. */
943         struct timer_list PathDivSwitchTimer;
944         /* 2011.09.27 add for Path Diversity */
945         struct timer_list CCKPathDiversityTimer;
946         struct timer_list FastAntTrainingTimer;
947 };              /*  DM_Dynamic_Mechanism_Structure */
948
949 enum ODM_RF_CONTENT {
950         odm_radioa_txt = 0x1000,
951         odm_radiob_txt = 0x1001,
952         odm_radioc_txt = 0x1002,
953         odm_radiod_txt = 0x1003
954 };
955
956 enum odm_bb_config_type {
957     CONFIG_BB_PHY_REG,
958     CONFIG_BB_AGC_TAB,
959     CONFIG_BB_AGC_TAB_2G,
960     CONFIG_BB_AGC_TAB_5G,
961     CONFIG_BB_PHY_REG_PG,
962 };
963
964 /*  Status code */
965 enum rt_status {
966         RT_STATUS_SUCCESS,
967         RT_STATUS_FAILURE,
968         RT_STATUS_PENDING,
969         RT_STATUS_RESOURCE,
970         RT_STATUS_INVALID_CONTEXT,
971         RT_STATUS_INVALID_PARAMETER,
972         RT_STATUS_NOT_SUPPORT,
973         RT_STATUS_OS_API_FAILED,
974 };
975
976 /* 3=========================================================== */
977 /* 3 DIG */
978 /* 3=========================================================== */
979
980 enum dm_dig_op {
981         RT_TYPE_THRESH_HIGH     = 0,
982         RT_TYPE_THRESH_LOW      = 1,
983         RT_TYPE_BACKOFF         = 2,
984         RT_TYPE_RX_GAIN_MIN     = 3,
985         RT_TYPE_RX_GAIN_MAX     = 4,
986         RT_TYPE_ENABLE          = 5,
987         RT_TYPE_DISABLE         = 6,
988         DIG_OP_TYPE_MAX
989 };
990
991 #define         DM_DIG_THRESH_HIGH      40
992 #define         DM_DIG_THRESH_LOW       35
993
994 #define         DM_SCAN_RSSI_TH         0x14 /* scan return issue for LC */
995
996 #define         DM_false_ALARM_THRESH_LOW       400
997 #define         DM_false_ALARM_THRESH_HIGH      1000
998
999 #define         DM_DIG_MAX_NIC                  0x4e
1000 #define         DM_DIG_MIN_NIC                  0x1e /* 0x22/0x1c */
1001
1002 #define         DM_DIG_MAX_AP                   0x32
1003 #define         DM_DIG_MIN_AP                   0x20
1004
1005 #define         DM_DIG_MAX_NIC_HP               0x46
1006 #define         DM_DIG_MIN_NIC_HP               0x2e
1007
1008 #define         DM_DIG_MAX_AP_HP                0x42
1009 #define         DM_DIG_MIN_AP_HP                0x30
1010
1011 /* vivi 92c&92d has different definition, 20110504 */
1012 /* this is for 92c */
1013 #define         DM_DIG_FA_TH0                   0x200/* 0x20 */
1014 #define         DM_DIG_FA_TH1                   0x300/* 0x100 */
1015 #define         DM_DIG_FA_TH2                   0x400/* 0x200 */
1016 /* this is for 92d */
1017 #define         DM_DIG_FA_TH0_92D               0x100
1018 #define         DM_DIG_FA_TH1_92D               0x400
1019 #define         DM_DIG_FA_TH2_92D               0x600
1020
1021 #define         DM_DIG_BACKOFF_MAX              12
1022 #define         DM_DIG_BACKOFF_MIN              -4
1023 #define         DM_DIG_BACKOFF_DEFAULT          10
1024
1025 /* 3=========================================================== */
1026 /* 3 AGC RX High Power Mode */
1027 /* 3=========================================================== */
1028 #define   LNA_Low_Gain_1                0x64
1029 #define   LNA_Low_Gain_2                0x5A
1030 #define   LNA_Low_Gain_3                0x58
1031
1032 #define   FA_RXHP_TH1                   5000
1033 #define   FA_RXHP_TH2                   1500
1034 #define   FA_RXHP_TH3                   800
1035 #define   FA_RXHP_TH4                   600
1036 #define   FA_RXHP_TH5                   500
1037
1038 /* 3=========================================================== */
1039 /* 3 EDCA */
1040 /* 3=========================================================== */
1041
1042 /* 3=========================================================== */
1043 /* 3 Dynamic Tx Power */
1044 /* 3=========================================================== */
1045 /* Dynamic Tx Power Control Threshold */
1046 #define         TX_POWER_NEAR_FIELD_THRESH_LVL2 74
1047 #define         TX_POWER_NEAR_FIELD_THRESH_LVL1 67
1048 #define         TX_POWER_NEAR_FIELD_THRESH_AP           0x3F
1049
1050 #define         TxHighPwrLevel_Normal           0
1051 #define         TxHighPwrLevel_Level1           1
1052 #define         TxHighPwrLevel_Level2           2
1053 #define         TxHighPwrLevel_BT1              3
1054 #define         TxHighPwrLevel_BT2              4
1055 #define         TxHighPwrLevel_15               5
1056 #define         TxHighPwrLevel_35               6
1057 #define         TxHighPwrLevel_50               7
1058 #define         TxHighPwrLevel_70               8
1059 #define         TxHighPwrLevel_100              9
1060
1061 /* 3=========================================================== */
1062 /* 3 Rate Adaptive */
1063 /* 3=========================================================== */
1064 #define         DM_RATR_STA_INIT                0
1065 #define         DM_RATR_STA_HIGH                1
1066 #define         DM_RATR_STA_MIDDLE              2
1067 #define         DM_RATR_STA_LOW                 3
1068
1069 /* 3=========================================================== */
1070 /* 3 BB Power Save */
1071 /* 3=========================================================== */
1072
1073 enum dm_1r_cca {
1074         CCA_1R = 0,
1075         CCA_2R = 1,
1076         CCA_MAX = 2,
1077 };
1078
1079 enum dm_rf {
1080         RF_Save = 0,
1081         RF_Normal = 1,
1082         RF_MAX = 2,
1083 };
1084
1085 /* 3=========================================================== */
1086 /* 3 Antenna Diversity */
1087 /* 3=========================================================== */
1088 enum dm_swas {
1089         Antenna_A = 1,
1090         Antenna_B = 2,
1091         Antenna_MAX = 3,
1092 };
1093
1094 /*  Maximal number of antenna detection mechanism needs to perform. */
1095 #define MAX_ANTENNA_DETECTION_CNT       10
1096
1097 /*  Extern Global Variables. */
1098 #define OFDM_TABLE_SIZE_92C     37
1099 #define OFDM_TABLE_SIZE_92D     43
1100 #define CCK_TABLE_SIZE          33
1101
1102 extern  u32 OFDMSwingTable[OFDM_TABLE_SIZE_92D];
1103 extern  u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];
1104 extern  u8 CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];
1105
1106 /*  check Sta pointer valid or not */
1107 #define IS_STA_VALID(pSta)              (pSta)
1108 /*  20100514 Joseph: Add definition for antenna switching test after link. */
1109 /*  This indicates two different the steps. */
1110 /*  In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the
1111  *  signal on the air. */
1112 /*  In SWAW_STEP_DETERMINE, driver just compares the signal captured in
1113  *  SWAW_STEP_PEAK */
1114 /*  with original RSSI to determine if it is necessary to switch antenna. */
1115 #define SWAW_STEP_PEAK          0
1116 #define SWAW_STEP_DETERMINE     1
1117
1118 void ODM_Write_DIG(struct odm_dm_struct *pDM_Odm, u8 CurrentIGI);
1119 void ODM_Write_CCK_CCA_Thres(struct odm_dm_struct *pDM_Odm, u8 CurCCK_CCAThres);
1120
1121 void ODM_SetAntenna(struct odm_dm_struct *pDM_Odm, u8 Antenna);
1122
1123 #define dm_RF_Saving    ODM_RF_Saving
1124 void ODM_RF_Saving(struct odm_dm_struct *pDM_Odm, u8 bForceInNormal);
1125
1126 #define SwAntDivRestAfterLink   ODM_SwAntDivRestAfterLink
1127 void ODM_SwAntDivRestAfterLink(struct odm_dm_struct *pDM_Odm);
1128
1129 #define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck
1130 void ODM_TXPowerTrackingCheck(struct odm_dm_struct *pDM_Odm);
1131
1132 bool ODM_RAStateCheck(struct odm_dm_struct *pDM_Odm, s32 RSSI,
1133                       bool bForceUpdate, u8 *pRATRState);
1134
1135 #define dm_SWAW_RSSI_Check      ODM_SwAntDivChkPerPktRssi
1136 void ODM_SwAntDivChkPerPktRssi(struct odm_dm_struct *pDM_Odm, u8 StationID,
1137                                struct odm_phy_status_info *pPhyInfo);
1138
1139 u32 ConvertTo_dB(u32 Value);
1140
1141 u32 GetPSDData(struct odm_dm_struct *pDM_Odm, unsigned int point,
1142                u8 initial_gain_psd);
1143
1144 void odm_DIGbyRSSI_LPS(struct odm_dm_struct *pDM_Odm);
1145
1146 u32 ODM_Get_Rate_Bitmap(struct odm_dm_struct *pDM_Odm, u32 macid,
1147                         u32 ra_mask, u8 rssi_level);
1148
1149 void ODM_DMInit(struct odm_dm_struct *pDM_Odm);
1150
1151 void ODM_DMWatchdog(struct odm_dm_struct *pDM_Odm);
1152
1153 void ODM_CmnInfoInit(struct odm_dm_struct *pDM_Odm,
1154                      enum odm_common_info_def CmnInfo, u32 Value);
1155
1156 void ODM_CmnInfoHook(struct odm_dm_struct *pDM_Odm,
1157                      enum odm_common_info_def CmnInfo, void *pValue);
1158
1159 void ODM_CmnInfoPtrArrayHook(struct odm_dm_struct *pDM_Odm,
1160                              enum odm_common_info_def CmnInfo,
1161                              u16 Index, void *pValue);
1162
1163 void ODM_CmnInfoUpdate(struct odm_dm_struct *pDM_Odm, u32 CmnInfo, u64 Value);
1164
1165 void ODM_InitAllTimers(struct odm_dm_struct *pDM_Odm);
1166
1167 void ODM_CancelAllTimers(struct odm_dm_struct *pDM_Odm);
1168
1169 void ODM_ReleaseAllTimers(struct odm_dm_struct *pDM_Odm);
1170
1171 void ODM_ResetIQKResult(struct odm_dm_struct *pDM_Odm);
1172
1173 void ODM_AntselStatistics_88C(struct odm_dm_struct *pDM_Odm, u8 MacId,
1174                               u32 PWDBAll, bool isCCKrate);
1175
1176 void ODM_SingleDualAntennaDefaultSetting(struct odm_dm_struct *pDM_Odm);
1177
1178 bool ODM_SingleDualAntennaDetection(struct odm_dm_struct *pDM_Odm, u8 mode);
1179
1180 void odm_dtc(struct odm_dm_struct *pDM_Odm);
1181
1182 #endif