Merge tag 'lsk-v3.10-android-15.02'
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / include / rtw_mp.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 #ifndef _RTW_MP_H_
21 #define _RTW_MP_H_
22
23 #if 0
24 #define MPT_NOOP                        0
25 #define MPT_READ_MAC_1BYTE              1
26 #define MPT_READ_MAC_2BYTE              2
27 #define MPT_READ_MAC_4BYTE              3
28 #define MPT_WRITE_MAC_1BYTE             4
29 #define MPT_WRITE_MAC_2BYTE             5
30 #define MPT_WRITE_MAC_4BYTE             6
31 #define MPT_READ_BB_CCK                 7
32 #define MPT_WRITE_BB_CCK                8
33 #define MPT_READ_BB_OFDM                9
34 #define MPT_WRITE_BB_OFDM               10
35 #define MPT_READ_RF                     11
36 #define MPT_WRITE_RF                    12
37 #define MPT_READ_EEPROM_1BYTE           13
38 #define MPT_WRITE_EEPROM_1BYTE          14
39 #define MPT_READ_EEPROM_2BYTE           15
40 #define MPT_WRITE_EEPROM_2BYTE          16
41 #define MPT_SET_CSTHRESHOLD             21
42 #define MPT_SET_INITGAIN                22
43 #define MPT_SWITCH_BAND                 23
44 #define MPT_SWITCH_CHANNEL              24
45 #define MPT_SET_DATARATE                25
46 #define MPT_SWITCH_ANTENNA              26
47 #define MPT_SET_TX_POWER                27
48 #define MPT_SET_CONT_TX                 28
49 #define MPT_SET_SINGLE_CARRIER          29
50 #define MPT_SET_CARRIER_SUPPRESSION     30
51 #define MPT_GET_RATE_TABLE              31
52 #define MPT_READ_TSSI                   32
53 #define MPT_GET_THERMAL_METER           33
54 #endif
55
56
57 #define MAX_MP_XMITBUF_SZ       2048
58 #define NR_MP_XMITFRAME         8
59
60 struct mp_xmit_frame
61 {
62         _list   list;
63
64         struct pkt_attrib attrib;
65
66         _pkt *pkt;
67
68         int frame_tag;
69
70         _adapter *padapter;
71
72 #ifdef CONFIG_USB_HCI
73
74         //insert urb, irp, and irpcnt info below...
75         //max frag_cnt = 8
76
77         u8 *mem_addr;
78         u32 sz[8];
79
80 #if defined(PLATFORM_OS_XP) || defined(PLATFORM_LINUX)
81         PURB pxmit_urb[8];
82 #endif
83
84 #ifdef PLATFORM_OS_XP
85         PIRP pxmit_irp[8];
86 #endif
87
88         u8 bpending[8];
89         sint ac_tag[8];
90         sint last[8];
91         uint irpcnt;
92         uint fragcnt;
93 #endif /* CONFIG_USB_HCI */
94
95         uint mem[(MAX_MP_XMITBUF_SZ >> 2)];
96 };
97
98 struct mp_wiparam
99 {
100         u32 bcompleted;
101         u32 act_type;
102         u32 io_offset;
103         u32 io_value;
104 };
105
106 typedef void(*wi_act_func)(void* padapter);
107
108 #ifdef PLATFORM_WINDOWS
109 struct mp_wi_cntx
110 {
111         u8 bmpdrv_unload;
112
113         // Work Item
114         NDIS_WORK_ITEM mp_wi;
115         NDIS_EVENT mp_wi_evt;
116         _lock mp_wi_lock;
117         u8 bmp_wi_progress;
118         wi_act_func curractfunc;
119         // Variable needed in each implementation of CurrActFunc.
120         struct mp_wiparam param;
121 };
122 #endif
123
124 struct mp_tx
125 {
126         u8 stop;
127         u32 count, sended;
128         u8 payload;
129         struct pkt_attrib attrib;
130         //struct tx_desc desc;
131         //u8 resvdtx[7];
132         u8 desc[TXDESC_SIZE];
133         u8 *pallocated_buf;
134         u8 *buf;
135         u32 buf_size, write_size;
136         _thread_hdl_ PktTxThread;
137 };
138
139 #if defined(CONFIG_RTL8192C) || defined(CONFIG_RTL8192D) || defined(CONFIG_RTL8723A) || defined(CONFIG_RTL8188E) || defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) ||defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8723B)
140
141 #define MP_MAX_LINES            1000
142 #define MP_MAX_LINES_BYTES      256
143 #define u1Byte u8
144 #define s1Byte s8
145 #define u4Byte u32
146 #define s4Byte s32
147 #define u1Byte          u8
148 #define pu1Byte                 u8* 
149
150 #define u2Byte          u16
151 #define pu2Byte                 u16*            
152
153 #define u4Byte          u32
154 #define pu4Byte                 u32*    
155
156 #define u8Byte          u64
157 #define pu8Byte                 u64*
158
159 #define s1Byte          s8
160 #define ps1Byte                 s8* 
161
162 #define s2Byte          s16
163 #define ps2Byte                 s16*    
164
165 #define s4Byte          s32
166 #define ps4Byte                 s32*    
167
168 #define s8Byte          s64
169 #define ps8Byte                 s64*
170
171 #define UCHAR u8
172 #define USHORT u16
173 #define UINT u32
174 #define ULONG u32
175 #define PULONG u32*
176
177
178
179 typedef VOID (*MPT_WORK_ITEM_HANDLER)(IN PVOID Adapter);
180 typedef struct _MPT_CONTEXT
181 {
182         // Indicate if we have started Mass Production Test.
183         BOOLEAN                 bMassProdTest;
184
185         // Indicate if the driver is unloading or unloaded.
186         BOOLEAN                 bMptDrvUnload;
187
188         _sema                   MPh2c_Sema;
189         _timer                  MPh2c_timeout_timer;
190 // Event used to sync H2c for BT control
191
192         BOOLEAN         MptH2cRspEvent;
193         BOOLEAN         MptBtC2hEvent;
194         BOOLEAN         bMPh2c_timeout;
195         
196         /* 8190 PCI does not support NDIS_WORK_ITEM. */
197         // Work Item for Mass Production Test.
198         //NDIS_WORK_ITEM        MptWorkItem;
199 //      RT_WORK_ITEM            MptWorkItem;
200         // Event used to sync the case unloading driver and MptWorkItem is still in progress.
201 //      NDIS_EVENT              MptWorkItemEvent;
202         // To protect the following variables.
203 //      NDIS_SPIN_LOCK          MptWorkItemSpinLock;
204         // Indicate a MptWorkItem is scheduled and not yet finished.
205         BOOLEAN                 bMptWorkItemInProgress;
206         // An instance which implements function and context of MptWorkItem.
207         MPT_WORK_ITEM_HANDLER   CurrMptAct;
208
209         // 1=Start, 0=Stop from UI.
210         ULONG                   MptTestStart;
211         // _TEST_MODE, defined in MPT_Req2.h
212         ULONG                   MptTestItem;
213         // Variable needed in each implementation of CurrMptAct.
214         ULONG                   MptActType;     // Type of action performed in CurrMptAct.
215         // The Offset of IO operation is depend of MptActType.
216         ULONG                   MptIoOffset;
217         // The Value of IO operation is depend of MptActType.
218         ULONG                   MptIoValue;
219         // The RfPath of IO operation is depend of MptActType.
220         ULONG                   MptRfPath;
221
222         WIRELESS_MODE           MptWirelessModeToSw;    // Wireless mode to switch.
223         u8                      MptChannelToSw;         // Channel to switch.
224         u8                      MptInitGainToSet;       // Initial gain to set.
225         //ULONG                 bMptAntennaA;           // TRUE if we want to use antenna A.
226         ULONG                   MptBandWidth;           // bandwidth to switch.
227         ULONG                   MptRateIndex;           // rate index.
228         // Register value kept for Single Carrier Tx test.
229         u8                      btMpCckTxPower;
230         // Register value kept for Single Carrier Tx test.
231         u8                      btMpOfdmTxPower;
232         // For MP Tx Power index
233         u8                      TxPwrLevel[2];  // rf-A, rf-B
234         u32                     RegTxPwrLimit;
235         // Content of RCR Regsiter for Mass Production Test.
236         ULONG                   MptRCR;
237         // TRUE if we only receive packets with specific pattern.
238         BOOLEAN                 bMptFilterPattern;
239         // Rx OK count, statistics used in Mass Production Test.
240         ULONG                   MptRxOkCnt;
241         // Rx CRC32 error count, statistics used in Mass Production Test.
242         ULONG                   MptRxCrcErrCnt;
243
244         BOOLEAN                 bCckContTx;     // TRUE if we are in CCK Continuous Tx test.
245         BOOLEAN                 bOfdmContTx;    // TRUE if we are in OFDM Continuous Tx test.
246         BOOLEAN                 bStartContTx;   // TRUE if we have start Continuous Tx test.
247         // TRUE if we are in Single Carrier Tx test.
248         BOOLEAN                 bSingleCarrier;
249         // TRUE if we are in Carrier Suppression Tx Test.
250         BOOLEAN                 bCarrierSuppression;
251         //TRUE if we are in Single Tone Tx test.
252         BOOLEAN                 bSingleTone;
253
254         // ACK counter asked by K.Y..
255         BOOLEAN                 bMptEnableAckCounter;
256         ULONG                   MptAckCounter;
257
258         // SD3 Willis For 8192S to save 1T/2T RF table for ACUT Only fro ACUT delete later ~~~!
259         //s1Byte                BufOfLines[2][MAX_LINES_HWCONFIG_TXT][MAX_BYTES_LINE_HWCONFIG_TXT];
260         //s1Byte                        BufOfLines[2][MP_MAX_LINES][MP_MAX_LINES_BYTES];
261         //s4Byte                        RfReadLine[2];
262
263         u8              APK_bound[2];   //for APK       path A/path B
264         BOOLEAN         bMptIndexEven;
265
266         u8              backup0xc50;
267         u8              backup0xc58;
268         u8              backup0xc30;
269         u8              backup0x52_RF_A;
270         u8              backup0x52_RF_B;
271         
272         u4Byte                  backup0x58_RF_A;        
273         u4Byte                  backup0x58_RF_B;
274         
275         u1Byte                  h2cReqNum;
276         u1Byte                  c2hBuf[32];
277
278     u1Byte          btInBuf[100];
279         ULONG                   mptOutLen;
280     u1Byte          mptOutBuf[100];
281     
282 }MPT_CONTEXT, *PMPT_CONTEXT;
283 #endif
284 //#endif
285
286 /* E-Fuse */
287 #ifdef CONFIG_RTL8192D
288 #define EFUSE_MAP_SIZE          256
289 #endif
290 #ifdef CONFIG_RTL8192C
291 #define EFUSE_MAP_SIZE          128
292 #endif
293 #ifdef CONFIG_RTL8723A
294 #define EFUSE_MAP_SIZE          256
295 #endif
296 #ifdef CONFIG_RTL8188E
297 #define EFUSE_MAP_SIZE          512
298 #endif
299 #if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A)
300 #define EFUSE_MAP_SIZE          512
301 #endif
302 #ifdef CONFIG_RTL8192E
303 #define EFUSE_MAP_SIZE          512
304 #endif
305 #ifdef CONFIG_RTL8723B
306 #define EFUSE_MAP_SIZE          512
307 #endif
308
309 #if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A)
310 #define EFUSE_MAX_SIZE          1024
311 #elif defined(CONFIG_RTL8188E)
312 #define EFUSE_MAX_SIZE          256
313 #else
314 #define EFUSE_MAX_SIZE          512
315 #endif
316 /* end of E-Fuse */
317
318 //#define RTPRIV_IOCTL_MP                                       ( SIOCIWFIRSTPRIV + 0x17)
319 enum {    
320         WRITE_REG = 1,
321         READ_REG,
322         WRITE_RF,
323         READ_RF,
324         MP_START,
325         MP_STOP,
326         MP_RATE,
327         MP_CHANNEL,
328         MP_BANDWIDTH,
329         MP_TXPOWER,
330         MP_ANT_TX,
331         MP_ANT_RX,
332         MP_CTX,
333         MP_QUERY,
334         MP_ARX,
335         MP_PSD,
336         MP_PWRTRK,
337         MP_THER,
338         MP_IOCTL,
339         EFUSE_GET,
340         EFUSE_SET,
341         MP_RESET_STATS,
342         MP_DUMP,
343         MP_PHYPARA,
344         MP_SetRFPathSwh,
345         MP_QueryDrvStats,
346         MP_SetBT,
347         CTA_TEST,
348         MP_DISABLE_BT_COEXIST,
349         MP_PwrCtlDM,
350 #ifdef CONFIG_WOWLAN
351         MP_WOW_ENABLE,
352 #endif
353 #ifdef CONFIG_AP_WOWLAN
354         MP_AP_WOW_ENABLE,
355 #endif
356         MP_NULL,
357         MP_GET_TXPOWER_INX,
358 };
359
360 struct mp_priv
361 {
362         _adapter *papdater;
363
364         //Testing Flag
365         u32 mode;//0 for normal type packet, 1 for loopback packet (16bytes TXCMD)
366
367         u32 prev_fw_state;
368
369         //OID cmd handler
370         struct mp_wiparam workparam;
371 //      u8 act_in_progress;
372
373         //Tx Section
374         u8 TID;
375         u32 tx_pktcount;
376         u32 pktInterval;
377         struct mp_tx tx;
378
379         //Rx Section
380         u32 rx_bssidpktcount;
381         u32 rx_pktcount;
382         u32 rx_pktcount_filter_out;
383         u32 rx_crcerrpktcount;
384         u32 rx_pktloss;
385         BOOLEAN  rx_bindicatePkt;
386         struct recv_stat rxstat;
387
388         //RF/BB relative
389         u8 channel;
390         u8 bandwidth;
391         u8 prime_channel_offset;
392         u8 txpoweridx;
393         u8 txpoweridx_b;
394         u8 rateidx;
395         u32 preamble;
396 //      u8 modem;
397         u32 CrystalCap;
398 //      u32 curr_crystalcap;
399
400         u16 antenna_tx;
401         u16 antenna_rx;
402 //      u8 curr_rfpath;
403         
404         u8 check_mp_pkt;
405
406         u8 bSetTxPower;
407 //      uint ForcedDataRate;
408         u8 mp_dm;
409         u8 mac_filter[ETH_ALEN];
410         u8 bmac_filter;
411         
412         struct wlan_network mp_network;
413         NDIS_802_11_MAC_ADDRESS network_macaddr;
414
415 #ifdef PLATFORM_WINDOWS
416         u32 rx_testcnt;
417         u32 rx_testcnt1;
418         u32 rx_testcnt2;
419         u32 tx_testcnt;
420         u32 tx_testcnt1;
421
422         struct mp_wi_cntx wi_cntx;
423
424         u8 h2c_result;
425         u8 h2c_seqnum;
426         u16 h2c_cmdcode;
427         u8 h2c_resp_parambuf[512];
428         _lock h2c_lock;
429         _lock wkitm_lock;
430         u32 h2c_cmdcnt;
431         NDIS_EVENT h2c_cmd_evt;
432         NDIS_EVENT c2h_set;
433         NDIS_EVENT h2c_clr;
434         NDIS_EVENT cpwm_int;
435
436         NDIS_EVENT scsir_full_evt;
437         NDIS_EVENT scsiw_empty_evt;
438 #endif
439
440         u8 *pallocated_mp_xmitframe_buf;
441         u8 *pmp_xmtframe_buf;
442         _queue free_mp_xmitqueue;
443         u32 free_mp_xmitframe_cnt;
444         BOOLEAN bSetRxBssid;
445         BOOLEAN bTxBufCkFail;
446         
447         MPT_CONTEXT MptCtx;
448
449         u8              *TXradomBuffer;
450 };
451
452 typedef struct _IOCMD_STRUCT_ {
453         u8      cmdclass;
454         u16     value;
455         u8      index;
456 }IOCMD_STRUCT;
457
458 struct rf_reg_param {
459         u32 path;
460         u32 offset;
461         u32 value;
462 };
463
464 struct bb_reg_param {
465         u32 offset;
466         u32 value;
467 };
468
469 typedef struct _MP_FIRMWARE {
470         FIRMWARE_SOURCE eFWSource;
471 #ifdef CONFIG_EMBEDDED_FWIMG
472         u8*             szFwBuffer;
473 #else
474         u8                      szFwBuffer[0x8000];
475 #endif
476         u32             ulFwLength;
477
478 #ifdef CONFIG_EMBEDDED_FWIMG
479         u8*             szBTFwBuffer;
480         u8                      myBTFwBuffer[0x8000];
481 #else
482         u8                      szBTFwBuffer[0x8000];
483 #endif
484         u32             ulBTFwLength;
485 } RT_MP_FIRMWARE, *PRT_MP_FIRMWARE;
486
487
488
489
490 //=======================================================================
491
492 #define LOWER   _TRUE
493 #define RAISE   _FALSE
494
495 /* Hardware Registers */
496 #if 0
497 #if 0
498 #define IOCMD_CTRL_REG                  0x102502C0
499 #define IOCMD_DATA_REG                  0x102502C4
500 #else
501 #define IOCMD_CTRL_REG                  0x10250370
502 #define IOCMD_DATA_REG                  0x10250374
503 #endif
504
505 #define IOCMD_GET_THERMAL_METER         0xFD000028
506
507 #define IOCMD_CLASS_BB_RF               0xF0
508 #define IOCMD_BB_READ_IDX               0x00
509 #define IOCMD_BB_WRITE_IDX              0x01
510 #define IOCMD_RF_READ_IDX               0x02
511 #define IOCMD_RF_WRIT_IDX               0x03
512 #endif
513 #define BB_REG_BASE_ADDR                0x800
514
515 /* MP variables */
516 #if 0
517 #define _2MAC_MODE_     0
518 #define _LOOPBOOK_MODE_ 1
519 #endif
520 typedef enum _MP_MODE_ {
521         MP_OFF,
522         MP_ON,
523         MP_ERR,
524         MP_CONTINUOUS_TX,
525         MP_SINGLE_CARRIER_TX,
526         MP_CARRIER_SUPPRISSION_TX,
527         MP_SINGLE_TONE_TX,
528         MP_PACKET_TX,
529         MP_PACKET_RX
530 } MP_MODE;
531
532
533 #define MAX_RF_PATH_NUMS        RF_PATH_MAX
534
535
536 extern u8 mpdatarate[NumRates];
537
538 /* MP set force data rate base on the definition. */
539 typedef enum _MPT_RATE_INDEX
540 {
541         /* CCK rate. */
542         MPT_RATE_1M =0 ,        /* 0 */
543         MPT_RATE_2M,
544         MPT_RATE_55M,
545         MPT_RATE_11M,   /* 3 */
546
547         /* OFDM rate. */
548         MPT_RATE_6M,    /* 4 */
549         MPT_RATE_9M,
550         MPT_RATE_12M,
551         MPT_RATE_18M,
552         MPT_RATE_24M,
553         MPT_RATE_36M,
554         MPT_RATE_48M,
555         MPT_RATE_54M,   /* 11 */
556
557         /* HT rate. */
558         MPT_RATE_MCS0,  /* 12 */
559         MPT_RATE_MCS1,
560         MPT_RATE_MCS2,
561         MPT_RATE_MCS3,
562         MPT_RATE_MCS4,
563         MPT_RATE_MCS5,
564         MPT_RATE_MCS6,
565         MPT_RATE_MCS7,  /* 19 */
566         MPT_RATE_MCS8,
567         MPT_RATE_MCS9,
568         MPT_RATE_MCS10,
569         MPT_RATE_MCS11,
570         MPT_RATE_MCS12,
571         MPT_RATE_MCS13,
572         MPT_RATE_MCS14,
573         MPT_RATE_MCS15, /* 27 */
574         /* VHT rate. Total: 20*/
575         MPT_RATE_VHT1SS_MCS0 = 100,// To reserve MCS16~MCS31, the index starts from #100.
576         MPT_RATE_VHT1SS_MCS1, // #101
577         MPT_RATE_VHT1SS_MCS2,
578         MPT_RATE_VHT1SS_MCS3,
579         MPT_RATE_VHT1SS_MCS4,
580         MPT_RATE_VHT1SS_MCS5,
581         MPT_RATE_VHT1SS_MCS6, // #106
582         MPT_RATE_VHT1SS_MCS7,
583         MPT_RATE_VHT1SS_MCS8,
584         MPT_RATE_VHT1SS_MCS9,
585         MPT_RATE_VHT2SS_MCS0,
586         MPT_RATE_VHT2SS_MCS1, // #111
587         MPT_RATE_VHT2SS_MCS2,
588         MPT_RATE_VHT2SS_MCS3,
589         MPT_RATE_VHT2SS_MCS4,
590         MPT_RATE_VHT2SS_MCS5,
591         MPT_RATE_VHT2SS_MCS6, // #116
592         MPT_RATE_VHT2SS_MCS7,
593         MPT_RATE_VHT2SS_MCS8,
594         MPT_RATE_VHT2SS_MCS9,
595         MPT_RATE_LAST
596 }MPT_RATE_E, *PMPT_RATE_E;
597
598 #define MAX_TX_PWR_INDEX_N_MODE 64      // 0x3F
599
600 typedef enum _POWER_MODE_ {
601         POWER_LOW = 0,
602         POWER_NORMAL
603 }POWER_MODE;
604
605 // The following enumeration is used to define the value of Reg0xD00[30:28] or JaguarReg0x914[18:16].
606 typedef enum _OFDM_TX_MODE {
607         OFDM_ALL_OFF            = 0,    
608         OFDM_ContinuousTx       = 1,
609         OFDM_SingleCarrier      = 2,
610         OFDM_SingleTone         = 4,
611 } OFDM_TX_MODE;
612
613
614 #define RX_PKT_BROADCAST        1
615 #define RX_PKT_DEST_ADDR        2
616 #define RX_PKT_PHY_MATCH        3
617
618 #if 0
619 #define RPTMaxCount 0x000FFFFF;
620
621 // parameter 1 : BitMask
622 //      bit 0  : OFDM PPDU
623 //      bit 1  : OFDM False Alarm
624 //      bit 2  : OFDM MPDU OK
625 //      bit 3  : OFDM MPDU Fail
626 //      bit 4  : CCK PPDU
627 //      bit 5  : CCK False Alarm
628 //      bit 6  : CCK MPDU ok
629 //      bit 7  : CCK MPDU fail
630 //      bit 8  : HT PPDU counter
631 //      bit 9  : HT false alarm
632 //      bit 10 : HT MPDU total
633 //      bit 11 : HT MPDU OK
634 //      bit 12 : HT MPDU fail
635 //      bit 15 : RX full drop
636 typedef enum _RXPHY_BITMASK_
637 {
638         OFDM_PPDU_BIT = 0,
639         OFDM_FALSE_BIT,
640         OFDM_MPDU_OK_BIT,
641         OFDM_MPDU_FAIL_BIT,
642         CCK_PPDU_BIT,
643         CCK_FALSE_BIT,
644         CCK_MPDU_OK_BIT,
645         CCK_MPDU_FAIL_BIT,
646         HT_PPDU_BIT,
647         HT_FALSE_BIT,
648         HT_MPDU_BIT,
649         HT_MPDU_OK_BIT,
650         HT_MPDU_FAIL_BIT,
651 } RXPHY_BITMASK;
652 #endif
653
654 #define Mac_OFDM_OK                     0x00000000
655 #define Mac_OFDM_Fail                   0x10000000
656 #define Mac_OFDM_FasleAlarm     0x20000000
657 #define Mac_CCK_OK                              0x30000000
658 #define Mac_CCK_Fail                    0x40000000
659 #define Mac_CCK_FasleAlarm              0x50000000
660 #define Mac_HT_OK                               0x60000000
661 #define Mac_HT_Fail                     0x70000000
662 #define Mac_HT_FasleAlarm               0x90000000
663 #define Mac_DropPacket                  0xA0000000
664
665 typedef enum _ENCRY_CTRL_STATE_ {
666         HW_CONTROL,             //hw encryption& decryption
667         SW_CONTROL,             //sw encryption& decryption
668         HW_ENCRY_SW_DECRY,      //hw encryption & sw decryption
669         SW_ENCRY_HW_DECRY       //sw encryption & hw decryption
670 }ENCRY_CTRL_STATE;
671
672 typedef enum    _MPT_TXPWR_DEF{
673         MPT_CCK,
674         MPT_OFDM, // L and HT OFDM
675         MPT_VHT_OFDM
676 }MPT_TXPWR_DEF;
677
678 #ifdef CONFIG_RF_GAIN_OFFSET
679
680 #if defined(CONFIG_RTL8723A)
681         #define         REG_RF_BB_GAIN_OFFSET_CCK       0x0d
682         #define         REG_RF_BB_GAIN_OFFSET_OFDM      0x0e
683         #define         RF_GAIN_OFFSET_MASK     0xfffff
684 #elif defined(CONFIG_RTL8723B)
685         #define         REG_RF_BB_GAIN_OFFSET   0x7f
686         #define         RF_GAIN_OFFSET_MASK     0xfffff
687 #elif defined(CONFIG_RTL8188E)
688         #define         REG_RF_BB_GAIN_OFFSET   0x55
689         #define         RF_GAIN_OFFSET_MASK     0xfffff
690 #else
691         #define         REG_RF_BB_GAIN_OFFSET   0x55
692         #define         RF_GAIN_OFFSET_MASK     0xfffff
693 #endif  //CONFIG_RTL8723A
694
695 #endif //CONFIG_RF_GAIN_OFFSET
696
697 //=======================================================================
698 //extern struct mp_xmit_frame *alloc_mp_xmitframe(struct mp_priv *pmp_priv);
699 //extern int free_mp_xmitframe(struct xmit_priv *pxmitpriv, struct mp_xmit_frame *pmp_xmitframe);
700
701 extern s32 init_mp_priv(PADAPTER padapter);
702 extern void free_mp_priv(struct mp_priv *pmp_priv);
703 extern s32 MPT_InitializeAdapter(PADAPTER padapter, u8 Channel);
704 extern void MPT_DeInitAdapter(PADAPTER padapter);
705 extern s32 mp_start_test(PADAPTER padapter);
706 extern void mp_stop_test(PADAPTER padapter);
707
708 //=======================================================================
709 //extern void   IQCalibrateBcut(PADAPTER pAdapter);
710
711 //extern u32    bb_reg_read(PADAPTER Adapter, u16 offset);
712 //extern u8     bb_reg_write(PADAPTER Adapter, u16 offset, u32 value);
713 //extern u32    rf_reg_read(PADAPTER Adapter, u8 path, u8 offset);
714 //extern u8     rf_reg_write(PADAPTER Adapter, u8 path, u8 offset, u32 value);
715
716 //extern u32    get_bb_reg(PADAPTER Adapter, u16 offset, u32 bitmask);
717 //extern u8     set_bb_reg(PADAPTER Adapter, u16 offset, u32 bitmask, u32 value);
718 //extern u32    get_rf_reg(PADAPTER Adapter, u8 path, u8 offset, u32 bitmask);
719 //extern u8     set_rf_reg(PADAPTER Adapter, u8 path, u8 offset, u32 bitmask, u32 value);
720
721 extern u32 _read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask);
722 extern void _write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask, u32 val);
723
724 extern u32 read_macreg(_adapter *padapter, u32 addr, u32 sz);
725 extern void write_macreg(_adapter *padapter, u32 addr, u32 val, u32 sz);
726 extern u32 read_bbreg(_adapter *padapter, u32 addr, u32 bitmask);
727 extern void write_bbreg(_adapter *padapter, u32 addr, u32 bitmask, u32 val);
728 extern u32 read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr);
729 extern void write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 val);
730
731 extern void     SetChannel(PADAPTER pAdapter);
732 extern void     SetBandwidth(PADAPTER pAdapter);
733 extern int SetTxPower(PADAPTER pAdapter);
734 extern void     SetAntennaPathPower(PADAPTER pAdapter);
735 //extern void   SetTxAGCOffset(PADAPTER pAdapter, u32 ulTxAGCOffset);
736 extern void     SetDataRate(PADAPTER pAdapter);
737
738 extern void     SetAntenna(PADAPTER pAdapter);
739
740 //extern void   SetCrystalCap(PADAPTER pAdapter);
741
742 extern s32      SetThermalMeter(PADAPTER pAdapter, u8 target_ther);
743 extern void     GetThermalMeter(PADAPTER pAdapter, u8 *value);
744
745 extern void     SetContinuousTx(PADAPTER pAdapter, u8 bStart);
746 extern void     SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart);
747 extern void     SetSingleToneTx(PADAPTER pAdapter, u8 bStart);
748 extern void     SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart);
749 extern void PhySetTxPowerLevel(PADAPTER pAdapter);
750
751 extern void     fill_txdesc_for_mp(PADAPTER padapter, u8 *ptxdesc);
752 extern void     SetPacketTx(PADAPTER padapter);
753 extern void     SetPacketRx(PADAPTER pAdapter, u8 bStartRx);
754
755 extern void     ResetPhyRxPktCount(PADAPTER pAdapter);
756 extern u32      GetPhyRxPktReceived(PADAPTER pAdapter);
757 extern u32      GetPhyRxPktCRC32Error(PADAPTER pAdapter);
758
759 extern s32      SetPowerTracking(PADAPTER padapter, u8 enable);
760 extern void     GetPowerTracking(PADAPTER padapter, u8 *enable);
761
762 extern u32      mp_query_psd(PADAPTER pAdapter, u8 *data);
763
764
765 extern void Hal_SetAntenna(PADAPTER pAdapter);
766 extern void Hal_SetBandwidth(PADAPTER pAdapter);
767
768 extern void Hal_SetTxPower(PADAPTER pAdapter);
769 extern void Hal_SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart);
770 extern void Hal_SetSingleToneTx ( PADAPTER pAdapter , u8 bStart );
771 extern void Hal_SetSingleCarrierTx (PADAPTER pAdapter, u8 bStart);
772 extern void Hal_SetContinuousTx (PADAPTER pAdapter, u8 bStart);
773 extern void Hal_SetBandwidth(PADAPTER pAdapter);
774
775 extern void Hal_SetDataRate(PADAPTER pAdapter);
776 extern void Hal_SetChannel(PADAPTER pAdapter);
777 extern void Hal_SetAntennaPathPower(PADAPTER pAdapter);
778 extern s32 Hal_SetThermalMeter(PADAPTER pAdapter, u8 target_ther);
779 extern s32 Hal_SetPowerTracking(PADAPTER padapter, u8 enable);
780 extern void Hal_GetPowerTracking(PADAPTER padapter, u8 * enable);
781 extern void Hal_GetThermalMeter(PADAPTER pAdapter, u8 *value);
782 extern void Hal_mpt_SwitchRfSetting(PADAPTER pAdapter);
783 extern void Hal_MPT_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14);
784 extern void Hal_MPT_CCKTxPowerAdjustbyIndex(PADAPTER pAdapter, BOOLEAN beven);
785 extern void Hal_SetCCKTxPower(PADAPTER pAdapter, u8 * TxPower);
786 extern void Hal_SetOFDMTxPower(PADAPTER pAdapter, u8 * TxPower);
787 extern void Hal_TriggerRFThermalMeter(PADAPTER pAdapter);
788 extern u8 Hal_ReadRFThermalMeter(PADAPTER pAdapter);
789 extern void Hal_SetCCKContinuousTx(PADAPTER pAdapter, u8 bStart);
790 extern void Hal_SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart);
791 extern void Hal_ProSetCrystalCap (PADAPTER pAdapter , u32 CrystalCapVal);
792 //extern void _rtw_mp_xmit_priv(struct xmit_priv *pxmitpriv);
793 extern void MP_PHY_SetRFPathSwitch(PADAPTER pAdapter ,BOOLEAN bMain);
794 extern ULONG mpt_ProQueryCalTxPower(PADAPTER    pAdapter,u8 RfPath);
795 extern void MPT_PwrCtlDM(PADAPTER padapter, u32 bstart);
796 extern u8 MptToMgntRate(u32     MptRateIdx);
797
798 #endif //_RTW_MP_H_
799