OSDN Git Service

Elminate multiple layers of wrappers for work handling
[android-x86/external-modules-rtl8723au.git] / include / rtl8723a_bt-coexist.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2012 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 __RTL8723A_BT_COEXIST_H__
21 #define __RTL8723A_BT_COEXIST_H__
22
23 #include <drv_types.h>
24 #include "odm_precomp.h"
25
26
27 #define __BT_C__ 1
28 #define __BT_HANDLEPACKET_C__ 1
29 #define __BT_HCI_C__ 1
30 #define __HALBTC87231ANT_C__ 1
31 #define __HALBTC87232ANT_C__ 1
32 #define __HALBTC8723_C__ 1
33 #define __HALBTCCSR1ANT_C__ 1
34 #define __HALBTCCSR2ANT_C__ 1
35 #define __HALBTCOEXIST_C__ 1
36 #define __HALBT_C__ 1
37
38 #ifdef __BT_C__ // COMMON/BT.h
39
40 // HEADER/PlatformDef.h
41 typedef enum _RT_MEDIA_STATUS {
42         RT_MEDIA_DISCONNECT = 0,
43         RT_MEDIA_CONNECT       = 1
44 } RT_MEDIA_STATUS;
45
46 // ===== Below this line is sync from SD7 driver COMMON/BT.h =====
47
48 #define BT_TMP_BUF_SIZE         100
49
50 void BT_SignalCompensation(PADAPTER padapter, u8 *rssi_wifi, u8 *rssi_bt);
51 void BT_WifiScanNotify(PADAPTER padapter, u8 scanType);
52 void BT_WifiAssociateNotify(PADAPTER padapter, u8 action);
53 void BT_WifiMediaStatusNotify(PADAPTER padapter, RT_MEDIA_STATUS mstatus);
54 void BT_SpecialPacketNotify(PADAPTER padapter);
55 void BT_HaltProcess(PADAPTER padapter);
56 void BT_LpsLeave(PADAPTER padapter);
57
58
59 #define BT_HsConnectionEstablished(Adapter)                                     _FALSE
60 // ===== End of sync from SD7 driver COMMON/BT.h =====
61 #endif // __BT_C__
62
63 #ifdef __BT_HCI_C__ // COMMON/bt_hci.h
64
65 // HEADER/SecurityType.h
66 #define TKIP_ENC_KEY_POS                32              //(KEK_LEN+KEK_LEN)
67 #define MAXRSNIELEN                             256
68
69 // HEADER/QoSType.h
70 #if 0
71 //
72 // BSS QOS data.
73 // Ref: BssDscr in 8185 code. [def. in BssDscr.h]
74 //
75 typedef struct _BSS_QOS
76 {
77         // Part 0. Ref. 8185 QoS code (From Emily)
78         QOS_MODE                                bdQoSMode;
79         u8                                      bdWMMIEBuf[MAX_WMMELE_LENGTH];
80         OCTET_STRING                    bdWMMIE;
81
82         QOS_ELE_SUBTYPE         EleSubType;
83
84         // Part 2. EDCA Parameter (perAC)
85         u8                                      *pWMMInfoEle;
86         u8                                      *pWMMParamEle;
87
88         // QBSS Load.
89         u8                                      QBssLoad[QBSS_LOAD_SIZE];
90         u8                                      bQBssLoadValid;
91 } BSS_QOS, *PBSS_QOS;
92 #endif
93
94 // COMMON/Protocol802_11.h
95 //----------------------------------------------------------------------------
96 //      802.11 Management frame Status Code field
97 //----------------------------------------------------------------------------
98 typedef struct _OCTET_STRING{
99         u8              *Octet;
100         u16             Length;
101 } OCTET_STRING, *POCTET_STRING;
102
103
104 //======================================================================================
105 // AES_CCMP specific
106 //======================================================================================
107 enum
108 {
109         AESCCMP_BLK_SIZE                =   16,     // # octets in an AES block
110         AESCCMP_MAX_PACKET              =   4*512,  // largest packet size
111         AESCCMP_N_RESERVED              =   0,      // reserved nonce octet value
112         AESCCMP_A_DATA                  =   0x40,   // the Adata bit in the flags
113         AESCCMP_M_SHIFT                 =   3,      // how much to shift the 3-bit M field
114         AESCCMP_L_SHIFT                 =   0,      // how much to shift the 3-bit L field
115         AESCCMP_L_SIZE                  =   2,       // size of the l(m) length field (in octets)
116         AESCCMP_OFFSET_SC               =       22,
117         AESCCMP_OFFSET_DURATION =       4,
118         AESCCMP_OFFSET_A2               =       10,
119         AESCCMP_OFFSET_A4               =       24,
120         AESCCMP_QC_TID_MASK             =       0x0f,
121         AESCCMP_BLK_SIZE_TOTAL  =   16*16,     // Added by Annie for CKIP AES MIC BSOD, 2006-08-17.
122                                                                                         // 16*8 < 4*60  Resove to 16*16
123 };
124
125 //
126 // Key Length
127 //
128 #define PMK_LEN                                 32
129 #define PTK_LEN_TKIP                    64
130 #define GTK_LEN                                 32
131 #define KEY_NONCE_LEN                   32
132
133
134 // COMMON/Dot11d.h
135 typedef struct _CHNL_TXPOWER_TRIPLE
136 {
137         u8 FirstChnl;
138         u8 NumChnls;
139         s8 MaxTxPowerInDbm;
140 } CHNL_TXPOWER_TRIPLE, *PCHNL_TXPOWER_TRIPLE;
141
142
143 // ===== Below this line is sync from SD7 driver COMMON/bt_hci.h =====
144 #define BT_THREAD               0
145 #if(BT_THREAD == 1)
146 #define SENDTXMEHTOD    2
147 #else
148 #define SENDTXMEHTOD    1  // 0=workitem, 1= SendDirectily, 2=thread
149 #endif
150
151 //=============================================
152 // The following is for BT 3.0 + HS HCI COMMAND ERRORS CODES
153 //=============================================
154
155 #define Max80211PALPDUSize                      1492
156 #define Max80211AMPASSOCLen                     672
157 #define MinGUserPrio                                    4
158 #define MaxGUserPrio                                    7
159 #define BEUserPrio0                                             0
160 #define BEUserPrio1                                             3
161 #define Max80211BeaconPeriod            2000
162 #define ShortRangeModePowerMax          4
163
164 #define BT_Default_Chnl                                 10
165 #define ACLDataHeaderLen                                4
166
167 #define BTTotalDataBlockNum                     0x100
168 #define BTLocalBufNum                                   0x200
169 #define BTMaxDataBlockLen                               0x800
170 #define BTTOTALBANDWIDTH                                0x7530
171 #define BTMAXBANDGUBANDWIDTH            0x4e20
172 #define TmpLocalBufSize                                 0x100
173 #define BTSynDataPacketLength                   0xff
174 //=============================================
175
176 #define BTMaxAuthCount                                  5
177 #define BTMaxAsocCount                                  5
178
179 #define MAX_LOGICAL_LINK_NUM                    2       //temporarily define
180 #define MAX_BT_ASOC_ENTRY_NUM           2       //temporarily define
181
182 #define INVALID_PL_HANDLE                               0xff
183 #define INVALID_ENTRY_NUM                               0xff
184 //=============================================
185
186 #define CAM_BT_START_INDEX              (HALF_CAM_ENTRY - 4)   // MAX_BT_ASOC_ENTRY_NUM : 4 !!!
187 #define BT_HWCAM_STAR                   CAM_BT_START_INDEX  // We used  HALF_CAM_ENTRY ~ HALF_CAM_ENTRY -MAX_BT_ASOC_ENTRY_NUM
188
189 typedef enum _HCI_STATUS
190 {
191         HCI_STATUS_SUCCESS                                                                              =0x00, //Success
192         HCI_STATUS_UNKNOW_HCI_CMD                                                               =0x01, //Unknown HCI Command
193         HCI_STATUS_UNKNOW_CONNECT_ID                                                    =0X02, //Unknown Connection Identifier
194         HCI_STATUS_HW_FAIL                                                                              =0X03, //Hardware Failure
195         HCI_STATUS_PAGE_TIMEOUT                                                                 =0X04, //Page Timeout
196         HCI_STATUS_AUTH_FAIL                                                                            =0X05, //Authentication Failure
197         HCI_STATUS_PIN_OR_KEY_MISSING                                                   =0X06, //PIN or Key Missing
198         HCI_STATUS_MEM_CAP_EXCEED                                                               =0X07, //Memory Capacity Exceeded
199         HCI_STATUS_CONNECT_TIMEOUT                                                              =0X08, //Connection Timeout
200         HCI_STATUS_CONNECT_LIMIT                                                                        =0X09, //Connection Limit Exceeded
201         HCI_STATUS_SYN_CONNECT_LIMIT                                                            =0X0a, //Synchronous Connection Limit To A Device Exceeded
202         HCI_STATUS_ACL_CONNECT_EXISTS                                                   =0X0b, //ACL Connection Already Exists
203         HCI_STATUS_CMD_DISALLOW                                                                 =0X0c, //Command Disallowed
204         HCI_STATUS_CONNECT_RJT_LIMIT_RESOURCE                                   =0X0d, //Connection Rejected due to Limited Resources
205         HCI_STATUS_CONNECT_RJT_SEC_REASON                                               =0X0e, //Connection Rejected Due To Security Reasons
206         HCI_STATUS_CONNECT_RJT_UNACCEPT_BD_ADDR                         =0X0f, //Connection Rejected due to Unacceptable BD_ADDR
207         HCI_STATUS_CONNECT_ACCEPT_TIMEOUT                                               =0X10, //Connection Accept Timeout Exceeded
208         HCI_STATUS_UNSUPPORT_FEATURE_PARA_VALUE                         =0X11, //Unsupported Feature or Parameter Value
209         HCI_STATUS_INVALID_HCI_CMD_PARA_VALUE                                   =0X12, //Invalid HCI Command Parameters
210         HCI_STATUS_REMOTE_USER_TERMINATE_CONNECT                                =0X13, //Remote User Terminated Connection
211         HCI_STATUS_REMOTE_DEV_TERMINATE_LOW_RESOURCE                    =0X14, //Remote Device Terminated Connection due to Low Resources
212         HCI_STATUS_REMOTE_DEV_TERMINATE_CONNECT_POWER_OFF       =0X15, //Remote Device Terminated Connection due to Power Off
213         HCI_STATUS_CONNECT_TERMINATE_LOCAL_HOST                         =0X16, //Connection Terminated By Local Host
214         HCI_STATUS_REPEATE_ATTEMPT                                                              =0X17, //Repeated Attempts
215         HCI_STATUS_PAIR_NOT_ALLOW                                                               =0X18, //Pairing Not Allowed
216         HCI_STATUS_UNKNOW_LMP_PDU                                                               =0X19, //Unknown LMP PDU
217         HCI_STATUS_UNSUPPORT_REMOTE_LMP_FEATURE                         =0X1a, //Unsupported Remote Feature / Unsupported LMP Feature
218         HCI_STATUS_SOC_OFFSET_REJECT                                                            =0X1b, //SCO Offset Rejected
219         HCI_STATUS_SOC_INTERVAL_REJECT                                                  =0X1c, //SCO Interval Rejected
220         HCI_STATUS_SOC_AIR_MODE_REJECT                                                  =0X1d,//SCO Air Mode Rejected
221         HCI_STATUS_INVALID_LMP_PARA                                                             =0X1e, //Invalid LMP Parameters
222         HCI_STATUS_UNSPECIFIC_ERROR                                                             =0X1f, //Unspecified Error
223         HCI_STATUS_UNSUPPORT_LMP_PARA_VALUE                                     =0X20, //Unsupported LMP Parameter Value
224         HCI_STATUS_ROLE_CHANGE_NOT_ALLOW                                                =0X21, //Role Change Not Allowed
225         HCI_STATUS_LMP_RESPONSE_TIMEOUT                                                 =0X22, //LMP Response Timeout
226         HCI_STATUS_LMP_ERROR_TRANSACTION_COLLISION                              =0X23, //LMP Error Transaction Collision
227         HCI_STATUS_LMP_PDU_NOT_ALLOW                                                    =0X24, //LMP PDU Not Allowed
228         HCI_STATUS_ENCRYPTION_MODE_NOT_ALLOW                                    =0X25, //Encryption Mode Not Acceptable
229         HCI_STATUS_LINK_KEY_CAN_NOT_CHANGE                                              =0X26, //Link Key Can Not be Changed
230         HCI_STATUS_REQUEST_QOS_NOT_SUPPORT                                              =0X27, //Requested QoS Not Supported
231         HCI_STATUS_INSTANT_PASSED                                                               =0X28, //Instant Passed
232         HCI_STATUS_PAIRING_UNIT_KEY_NOT_SUPPORT                                 =0X29, //Pairing With Unit Key Not Supported
233         HCI_STATUS_DIFFERENT_TRANSACTION_COLLISION                              =0X2a, //Different Transaction Collision
234         HCI_STATUS_RESERVE_1                                                                            =0X2b, //Reserved
235         HCI_STATUS_QOS_UNACCEPT_PARA                                                    =0X2c, //QoS Unacceptable Parameter
236         HCI_STATUS_QOS_REJECT                                                                           =0X2d, //QoS Rejected
237         HCI_STATUS_CHNL_CLASSIFICATION_NOT_SUPPORT                              =0X2e, //Channel Classification Not Supported
238         HCI_STATUS_INSUFFICIENT_SECURITY                                                        =0X2f, //Insufficient Security
239         HCI_STATUS_PARA_OUT_OF_RANGE                                                    =0x30, //Parameter Out Of Mandatory Range
240         HCI_STATUS_RESERVE_2                                                                            =0X31, //Reserved
241         HCI_STATUS_ROLE_SWITCH_PENDING                                                  =0X32, //Role Switch Pending
242         HCI_STATUS_RESERVE_3                                                                            =0X33, //Reserved
243         HCI_STATUS_RESERVE_SOLT_VIOLATION                                               =0X34, //Reserved Slot Violation
244         HCI_STATUS_ROLE_SWITCH_FAIL                                                             =0X35, //Role Switch Failed
245         HCI_STATUS_EXTEND_INQUIRY_RSP_TOO_LARGE                         =0X36, //Extended Inquiry Response Too Large
246         HCI_STATUS_SEC_SIMPLE_PAIRING_NOT_SUPPORT                               =0X37, //Secure Simple Pairing Not Supported By Host.
247         HCI_STATUS_HOST_BUSY_PAIRING                                                            =0X38, //Host Busy - Pairing
248         HCI_STATUS_CONNECT_REJ_NOT_SUIT_CHNL_FOUND                      =0X39, //Connection Rejected due to No Suitable Channel Found
249         HCI_STATUS_CONTROLLER_BUSY                                                              =0X3a  //CONTROLLER BUSY
250 } HCI_STATUS,*PHCI_STATUS;
251
252 //=============================================
253 // The following is for BT 3.0 + HS HCI COMMAND
254 //=============================================
255
256 //bit 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
257 //       |      OCF                                  |     OGF       |
258 //
259
260 //OGF 0x01
261 #define OGF_LINK_CONTROL_COMMANDS                                               0x01
262 typedef enum _LINK_CONTROL_COMMANDS
263 {
264         HCI_INQUIRY                                                                                     =0x0001,
265         HCI_INQUIRY_CANCEL                                                                      =0x0002,
266         HCI_PERIODIC_INQUIRY_MODE                                                       =0x0003,
267         HCI_EXIT_PERIODIC_INQUIRY_MODE                                          =0x0004,
268         HCI_CREATE_CONNECTION                                                           =0x0005,
269         HCI_DISCONNECT                                                                          =0x0006,
270         HCI_CREATE_CONNECTION_CANCEL                                            =0x0008,
271         HCI_ACCEPT_CONNECTIONREQUEST                                            =0x0009,
272         HCI_REJECT_CONNECTION_REQUEST                                           =0x000a,
273         HCI_LINK_KEY_REQUEST_REPLY                                                      =0x000b,
274         HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY                                     =0x000c,
275         HCI_PIN_CODE_REQUEST_REPLY                                                      =0x000d,
276         HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY                             =0x000e,
277         HCI_CHANGE_CONNECTION_PACKET_TYPE                                       =0x000f,
278         HCI_AUTHENTICATION_REQUESTED                                            =0x0011,
279         HCI_SET_CONNECTION_ENCRYPTION                                           =0x0013,
280         HCI_CHANGE_CONNECTION_LINK_KEY                                          =0x0015,
281         HCI_MASTER_LINK_KEY                                                                     =0x0017,
282         HCI_REMOTE_NAME_REQUEST                                                         =0x0019,
283         HCI_REMOTE_NAME_REQUEST_CANCEL                                          =0x001a,
284         HCI_READ_REMOTE_SUPPORTED_FEATURES                              =0x001b,
285         HCI_READ_REMOTE_EXTENDED_FEATURES                                       =0x001c,
286         HCI_READ_REMOTE_VERSION_INFORMATION                             =0x001d,
287         HCI_READ_CLOCK_OFFSET                                                           =0x001f,
288         HCI_READ_LMP_HANDLE                                                                     =0x0020,
289         HCI_SETUP_SYNCHRONOUS_CONNECTION                                        =0x0028,
290         HCI_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST               =0x0029,
291         HCI_REJECT_SYNCHRONOUS_CONNECTION_REQUEST               =0x002a,
292         HCI_IO_CAPABILITY_REQUEST_REPLY                                         =0x002b,
293         HCI_USER_CONFIRMATION_REQUEST_REPLY                             =0x002c,
294         HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY            =0x002d,
295         HCI_USER_PASSKEY_REQUEST_REPLY                                          =0x002e,
296         HCI_USER_PASSKEY_REQUESTNEGATIVE_REPLY                          =0x002f,
297         HCI_REMOTE_OOB_DATA_REQUEST_REPLY                                       =0x0030,
298         HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY              =0x0033,
299         HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY                        =0x0034,
300         HCI_CREATE_PHYSICAL_LINK                                                                =0x0035,
301         HCI_ACCEPT_PHYSICAL_LINK                                                                =0x0036,
302         HCI_DISCONNECT_PHYSICAL_LINK                                                    =0x0037,
303         HCI_CREATE_LOGICAL_LINK                                                         =0x0038,
304         HCI_ACCEPT_LOGICAL_LINK                                                         =0x0039,
305         HCI_DISCONNECT_LOGICAL_LINK                                                     =0x003a,
306         HCI_LOGICAL_LINK_CANCEL                                                         =0x003b,
307         HCI_FLOW_SPEC_MODIFY                                                                    =0x003c
308 } LINK_CONTROL_COMMANDS,*PLINK_CONTROL_COMMANDS;
309
310 //OGF 0x02
311 #define OGF_HOLD_MODE_COMMAND                                                   0x02
312 typedef enum _HOLD_MODE_COMMAND
313 {
314         HCI_HOLD_MODE                                                                                   =0x0001,
315         HCI_SNIFF_MODE                                                                          =0x0002,
316         HCI_EXIT_SNIFF_MODE                                                                     =0x0003,
317         HCI_PARK_STATE                                                                                  =0x0005,
318         HCI_EXIT_PARK_STATE                                                                     =0x0006,
319         HCI_QOS_SETUP                                                                                   =0x0007,
320         HCI_ROLE_DISCOVERY                                                                      =0x0009,
321         HCI_SWITCH_ROLE                                                                         =0x000b,
322         HCI_READ_LINK_POLICY_SETTINGS                                           =0x000c,
323         HCI_WRITE_LINK_POLICY_SETTINGS                                          =0x000d,
324         HCI_READ_DEFAULT_LINK_POLICY_SETTINGS                           =0x000e,
325         HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS                          =0x000f,
326         HCI_FLOW_SPECIFICATION                                                          =0x0010,
327         HCI_SNIFF_SUBRATING                                                                     =0x0011
328 } HOLD_MODE_COMMAND,*PHOLD_MODE_COMMAND;
329
330 //OGF 0x03
331 #define OGF_SET_EVENT_MASK_COMMAND                                              0x03
332 typedef enum _SET_EVENT_MASK_COMMAND
333 {
334         HCI_SET_EVENT_MASK                                                                      =0x0001,
335         HCI_RESET                                                                                               =0x0003,
336         HCI_SET_EVENT_FILTER                                                                    =0x0005,
337         HCI_FLUSH                                                                                               =0x0008,
338         HCI_READ_PIN_TYPE                                                                               =0x0009,
339         HCI_WRITE_PIN_TYPE                                                                      =0x000a,
340         HCI_CREATE_NEW_UNIT_KEY                                                         =0x000b,
341         HCI_READ_STORED_LINK_KEY                                                                =0x000d,
342         HCI_WRITE_STORED_LINK_KEY                                                       =0x0011,
343         HCI_DELETE_STORED_LINK_KEY                                                      =0x0012,
344         HCI_WRITE_LOCAL_NAME                                                                    =0x0013,
345         HCI_READ_LOCAL_NAME                                                                     =0x0014,
346         HCI_READ_CONNECTION_ACCEPT_TIMEOUT                                      =0x0015,
347         HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT                             =0x0016,
348         HCI_READ_PAGE_TIMEOUT                                                           =0x0017,
349         HCI_WRITE_PAGE_TIMEOUT                                                          =0x0018,
350         HCI_READ_SCAN_ENABLE                                                                    =0x0019,
351         HCI_WRITE_SCAN_ENABLE                                                           =0x001a,
352         HCI_READ_PAGE_SCAN_ACTIVITY                                                     =0x001b,
353         HCI_WRITE_PAGE_SCAN_ACTIVITY                                                    =0x001c,
354         HCI_READ_INQUIRY_SCAN_ACTIVITY                                          =0x001d,
355         HCI_WRITE_INQUIRY_SCAN_ACTIVITY                                         =0x001e,
356         HCI_READ_AUTHENTICATION_ENABLE                                          =0x001f,
357         HCI_WRITE_AUTHENTICATION_ENABLE                                         =0x0020,
358         HCI_READ_CLASS_OF_DEVICE                                                                =0x0023,
359         HCI_WRITE_CLASS_OF_DEVICE                                                       =0x0024,
360         HCI_READ_VOICE_SETTING                                                          =0x0025,
361         HCI_WRITE_VOICE_SETTING                                                         =0x0026,
362         HCI_READ_AUTOMATIC_FLUSH_TIMEOUT                                        =0x0027,
363         HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT                                       =0x0028,
364         HCI_READ_NUM_BROADCAST_RETRANSMISSIONS                  =0x0029,
365         HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS                 =0x002a,
366         HCI_READ_HOLD_MODE_ACTIVITY                                                     =0x002b,
367         HCI_WRITE_HOLD_MODE_ACTIVITY                                            =0x002c,
368         HCI_READ_SYNCHRONOUS_FLOW_CONTROL_ENABLE                =0x002e,
369         HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE               =0x002f,
370         HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL                 =0x0031,
371         HCI_HOST_BUFFER_SIZE                                                                    =0x0033,
372         HCI_HOST_NUMBER_OF_COMPLETED_PACKETS                            =0x0035,
373         HCI_READ_LINK_SUPERVISION_TIMEOUT                                       =0x0036,
374         HCI_WRITE_LINK_SUPERVISION_TIMEOUT                                      =0x0037,
375         HCI_READ_NUMBER_OF_SUPPORTED_IAC                                        =0x0038,
376         HCI_READ_CURRENT_IAC_LAP                                                                =0x0039,
377         HCI_WRITE_CURRENT_IAC_LAP                                                       =0x003a,
378         HCI_READ_PAGE_SCAN_MODE                                                         =0x003d,
379         HCI_WRITE_PAGE_SCAN_MODE                                                        =0x003e,
380         HCI_SET_AFH_HOST_CHANNEL_CLASSIFICATION                 =0x003f,
381         HCI_READ_INQUIRY_SCAN_TYPE                                                      =0x0042,
382         HCI_WRITE_INQUIRY_SCAN_TYPE                                                     =0x0043,
383         HCI_READ_INQUIRY_MODE                                                           =0x0044,
384         HCI_WRITE_INQUIRY_MODE                                                          =0x0045,
385         HCI_READ_PAGE_SCAN_TYPE                                                         =0x0046,
386         HCI_WRITE_PAGE_SCAN_TYPE                                                                =0x0047,
387         HCI_READ_AFH_CHANNEL_ASSESSMENT_MODE                            =0x0048,
388         HCI_WRITE_AFH_CHANNEL_ASSESSMENT_MODE                   =0x0049,
389         HCI_READ_EXTENDED_INQUIRY_RESPONSE                                      =0x0051,
390         HCI_WRITE_EXTENDED_INQUIRY_RESPONSE                             =0x0052,
391         HCI_REFRESH_ENCRYPTION_KEY                                                      =0x0053,
392         HCI_READ_SIMPLE_PAIRING_MODE                                            =0x0055,
393         HCI_WRITE_SIMPLE_PAIRING_MODE                                           =0x0056,
394         HCI_READ_LOCAL_OOB_DATA                                                         =0x0057,
395         HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL  =0x0058,
396         HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL                          =0x0059,
397         HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING                       =0x005a,
398         HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING              =0x005b,
399         HCI_ENHANCED_FLUSH                                                                      =0x005f,
400         HCI_SEND_KEYPRESS_NOTIFICATION                                          =0x0060,
401         HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT                            =0x0061,
402         HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT                           =0x0062,
403         HCI_SET_EVENT_MASK_PAGE_2                                                       =0x0063,
404         HCI_READ_LOCATION_DATA                                                          =0x0064,
405         HCI_WRITE_LOCATION_DATA                                                         =0x0065,
406         HCI_READ_FLOW_CONTROL_MODE                                                      =0x0066,
407         HCI_WRITE_FLOW_CONTROL_MODE                                             =0x0067,
408         HCI_READ_ENHANCE_TRANSMIT_POWER_LEVEL                           =0x0068,
409         HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT                                      =0x0069,
410         HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT                             =0x006a,
411         HCI_SHORT_RANGE_MODE                                                            =0x006b
412 }SET_EVENT_MASK_COMMAND,*PSET_EVENT_MASK_COMMAND;
413
414 //OGF 0x04
415 #define OGF_INFORMATIONAL_PARAMETERS                                            0x04
416 typedef enum _INFORMATIONAL_PARAMETERS
417 {
418         HCI_READ_LOCAL_VERSION_INFORMATION                              =0x0001,
419         HCI_READ_LOCAL_SUPPORTED_COMMANDS                               =0x0002,
420         HCI_READ_LOCAL_SUPPORTED_FEATURES                               =0x0003,
421         HCI_READ_LOCAL_EXTENDED_FEATURES                                =0x0004,
422         HCI_READ_BUFFER_SIZE                                                            =0x0005,
423         HCI_READ_BD_ADDR                                                                        =0x0009,
424         HCI_READ_DATA_BLOCK_SIZE                                                        =0x000a
425 } INFORMATIONAL_PARAMETERS,*PINFORMATIONAL_PARAMETERS;
426
427 //OGF 0x05
428 #define OGF_STATUS_PARAMETERS                                                           0x05
429 typedef enum _STATUS_PARAMETERS
430 {
431         HCI_READ_FAILED_CONTACT_COUNTER                                         =0x0001,
432         HCI_RESET_FAILED_CONTACT_COUNTER                                        =0x0002,
433         HCI_READ_LINK_QUALITY                                                                   =0x0003,
434         HCI_READ_RSSI                                                                                   =0x0005,
435         HCI_READ_AFH_CHANNEL_MAP                                                        =0x0006,
436         HCI_READ_CLOCK                                                                          =0x0007,
437         HCI_READ_ENCRYPTION_KEY_SIZE                                                    =0x0008,
438         HCI_READ_LOCAL_AMP_INFO                                                         =0x0009,
439         HCI_READ_LOCAL_AMP_ASSOC                                                        =0x000a,
440         HCI_WRITE_REMOTE_AMP_ASSOC                                                      =0x000b
441 } STATUS_PARAMETERS,*PSTATUS_PARAMETERS;
442
443 //OGF 0x06
444 #define OGF_TESTING_COMMANDS                                                            0x06
445 typedef enum _TESTING_COMMANDS
446 {
447         HCI_READ_LOOPBACK_MODE                                                  =0x0001,
448         HCI_WRITE_LOOPBACK_MODE                                                 =0x0002,
449         HCI_ENABLE_DEVICE_UNDER_TEST_MODE                               =0x0003,
450         HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE                     =0x0004,
451         HCI_ENABLE_AMP_RECEIVER_REPORTS                                 =0x0007,
452         HCI_AMP_TEST_END                                                                        =0x0008,
453         HCI_AMP_TEST_COMMAND                                                    =0x0009
454 } TESTING_COMMANDS,*PTESTING_COMMANDS;
455
456 //OGF 0x3f
457 #define OGF_EXTENSION                                                   0X3f
458 typedef enum _HCI_EXTENSION_COMMANDS
459 {
460         HCI_SET_ACL_LINK_DATA_FLOW_MODE                         =0x0010,
461         HCI_SET_ACL_LINK_STATUS                                                 =0x0020,
462         HCI_SET_SCO_LINK_STATUS                                                 =0x0030,
463         HCI_SET_RSSI_VALUE                                                              =0x0040,
464         HCI_SET_CURRENT_BLUETOOTH_STATUS                                =0x0041,
465
466         //The following is for RTK8723
467         HCI_EXTENSION_VERSION_NOTIFY                                    =0x0100,
468         HCI_LINK_STATUS_NOTIFY                                                  =0x0101,
469         HCI_BT_OPERATION_NOTIFY                                                 =0x0102,
470         HCI_ENABLE_WIFI_SCAN_NOTIFY                                             =0x0103,
471
472
473         //The following is for IVT
474         HCI_WIFI_CURRENT_CHANNEL                                                =0x0300,
475         HCI_WIFI_CURRENT_BANDWIDTH                                              =0x0301,
476         HCI_WIFI_CONNECTION_STATUS                                              =0x0302,
477 } HCI_EXTENSION_COMMANDS,*PHCI_EXTENSION_COMMANDS;
478
479 typedef enum _BT_SPEC
480 {
481         BT_SPEC_1_0_b                                                                           =0x00,
482         BT_SPEC_1_1                                                                             =0x01,
483         BT_SPEC_1_2                                                                             =0x02,
484         BT_SPEC_2_0_EDR                                                                 =0x03,
485         BT_SPEC_2_1_EDR                                                                 =0x04,
486         BT_SPEC_3_0_HS                                                                  =0x05,
487         BT_SPEC_4_0                                                                             =0x06
488 } BT_SPEC,*PBT_SPEC;
489
490 //=============================================
491 // The following is for BT 3.0 + HS EVENTS
492 //=============================================
493 typedef enum _HCI_EVENT
494 {
495         HCI_EVENT_INQUIRY_COMPLETE                                                              =0x01,
496         HCI_EVENT_INQUIRY_RESULT                                                                        =0x02,
497         HCI_EVENT_CONNECTION_COMPLETE                                                   =0x03,
498         HCI_EVENT_CONNECTION_REQUEST                                                    =0x04,
499         HCI_EVENT_DISCONNECTION_COMPLETE                                                =0x05,
500         HCI_EVENT_AUTHENTICATION_COMPLETE                                               =0x06,
501         HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE                          =0x07,
502         HCI_EVENT_ENCRYPTION_CHANGE                                                             =0x08,
503         HCI_EVENT_CHANGE_LINK_KEY_COMPLETE                                              =0x09,
504         HCI_EVENT_MASTER_LINK_KEY_COMPLETE                                              =0x0a,
505         HCI_EVENT_READ_REMOTE_SUPPORT_FEATURES_COMPLETE         =0x0b,
506         HCI_EVENT_READ_REMOTE_VER_INFO_COMPLETE                         =0x0c,
507         HCI_EVENT_QOS_SETUP_COMPLETE                                                    =0x0d,
508         HCI_EVENT_COMMAND_COMPLETE                                                              =0x0e,
509         HCI_EVENT_COMMAND_STATUS                                                                =0x0f,
510         HCI_EVENT_HARDWARE_ERROR                                                                =0x10,
511         HCI_EVENT_FLUSH_OCCRUED                                                                 =0x11,
512         HCI_EVENT_ROLE_CHANGE                                                                   =0x12,
513         HCI_EVENT_NUMBER_OF_COMPLETE_PACKETS                                    =0x13,
514         HCI_EVENT_MODE_CHANGE                                                                   =0x14,
515         HCI_EVENT_RETURN_LINK_KEYS                                                              =0x15,
516         HCI_EVENT_PIN_CODE_REQUEST                                                              =0x16,
517         HCI_EVENT_LINK_KEY_REQUEST                                                              =0x17,
518         HCI_EVENT_LINK_KEY_NOTIFICATION                                                 =0x18,
519         HCI_EVENT_LOOPBACK_COMMAND                                                              =0x19,
520         HCI_EVENT_DATA_BUFFER_OVERFLOW                                                  =0x1a,
521         HCI_EVENT_MAX_SLOTS_CHANGE                                                              =0x1b,
522         HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE                                    =0x1c,
523         HCI_EVENT_CONNECT_PACKET_TYPE_CHANGE                                    =0x1d,
524         HCI_EVENT_QOS_VIOLATION                                                                 =0x1e,
525         HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE                      =0x20,
526         HCI_EVENT_FLOW_SEPC_COMPLETE                                                    =0x21,
527         HCI_EVENT_INQUIRY_RESULT_WITH_RSSI                                              =0x22,
528         HCI_EVENT_READ_REMOTE_EXT_FEATURES_COMPLETE                     =0x23,
529         HCI_EVENT_SYNC_CONNECT_COMPLETE                                         =0x2c,
530         HCI_EVENT_SYNC_CONNECT_CHANGE                                                   =0x2d,
531         HCI_EVENT_SNIFFER_SUBRATING                                                             =0x2e,
532         HCI_EVENT_EXTENTED_INQUIRY_RESULT                                               =0x2f,
533         HCI_EVENT_ENCRYPTION_KEY_REFLASH_COMPLETE                               =0x30,
534         HCI_EVENT_IO_CAPIBILITY_COMPLETE                                                        =0x31,
535         HCI_EVENT_IO_CAPIBILITY_RESPONSE                                                        =0x32,
536         HCI_EVENT_USER_CONFIRMTION_REQUEST                                              =0x33,
537         HCI_EVENT_USER_PASSKEY_REQUEST                                                  =0x34,
538         HCI_EVENT_REMOTE_OOB_DATA_REQUEST                                               =0x35,
539         HCI_EVENT_SIMPLE_PAIRING_COMPLETE                                               =0x36,
540         HCI_EVENT_LINK_SUPERVISION_TIMEOUT_CHANGE                               =0x38,
541         HCI_EVENT_ENHANCED_FLUSH_COMPLETE                                               =0x39,
542         HCI_EVENT_USER_PASSKEY_NOTIFICATION                                             =0x3b,
543         HCI_EVENT_KEYPRESS_NOTIFICATION                                                 =0x3c,
544         HCI_EVENT_REMOTE_HOST_SUPPORT_FEATURES_NOTIFICATION     =0x3d,
545         HCI_EVENT_PHY_LINK_COMPLETE                                                             =0x40,
546         HCI_EVENT_CHANNEL_SELECT                                                                        =0x41,
547         HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE                                  =0x42,
548         HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING                                   =0x43,
549         HCI_EVENT_PHY_LINK_RECOVER                                                              =0x44,
550         HCI_EVENT_LOGICAL_LINK_COMPLETE                                                 =0x45,
551         HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE                              =0x46,
552         HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE                                     =0x47,
553         HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS                                   =0x48,
554         HCI_EVENT_AMP_START_TEST                                                                =0x49,
555         HCI_EVENT_AMP_TEST_END                                                                  =0x4a,
556         HCI_EVENT_AMP_RECEIVER_REPORT                                                   =0x4b,
557         HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE                      =0x4c,
558         HCI_EVENT_AMP_STATUS_CHANGE                                                     =0x4d,
559         HCI_EVENT_EXTENSION_RTK                                                                 =0xfe,
560         HCI_EVENT_EXTENSION_MOTO                                                                =0xff,
561 }HCI_EVENT, *PHCI_EVENT;
562
563 typedef enum _HCI_EXTENSION_EVENT_MOTO
564 {
565         HCI_EVENT_GET_BT_RSSI                                                                           =0x01,
566 } HCI_EXTENSION_EVENT_MOTO, *PHCI_EXTENSION_EVENT_MOTO;
567
568 typedef enum _HCI_EXTENSION_EVENT_RTK
569 {
570         HCI_EVENT_EXT_WIFI_SCAN_NOTIFY                                                          =0x01,
571 } HCI_EXTENSION_EVENT_RTK, *PHCI_EXTENSION_EVENT_RTK;
572
573 typedef enum _HCI_EVENT_MASK_PAGE_2
574 {
575         EMP2_HCI_EVENT_PHY_LINK_COMPLETE                                                =0x0000000000000001,
576         EMP2_HCI_EVENT_CHANNEL_SELECT                                                   =0x0000000000000002,
577         EMP2_HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE                     =0x0000000000000004,
578         EMP2_HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING                      =0x0000000000000008,
579         EMP2_HCI_EVENT_PHY_LINK_RECOVER                                                 =0x0000000000000010,
580         EMP2_HCI_EVENT_LOGICAL_LINK_COMPLETE                                    =0x0000000000000020,
581         EMP2_HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE         =0x0000000000000040,
582         EMP2_HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE                                =0x0000000000000080,
583         EMP2_HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS                      =0x0000000000000100,
584         EMP2_HCI_EVENT_AMP_START_TEST                                                   =0x0000000000000200,
585         EMP2_HCI_EVENT_AMP_TEST_END                                                             =0x0000000000000400,
586         EMP2_HCI_EVENT_AMP_RECEIVER_REPORT                                              =0x0000000000000800,
587         EMP2_HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE =0x0000000000001000,
588         EMP2_HCI_EVENT_AMP_STATUS_CHANGE                                                =0x0000000000002000,
589 } HCI_EVENT_MASK_PAGE_2, *PHCI_EVENT_MASK_PAGE_2;
590
591 typedef enum _HCI_STATE_MACHINE
592 {
593         HCI_STATE_STARTING                              =0x01,
594         HCI_STATE_CONNECTING                    =0x02,
595         HCI_STATE_AUTHENTICATING                =0x04,
596         HCI_STATE_CONNECTED                     =0x08,
597         HCI_STATE_DISCONNECTING         =0x10,
598         HCI_STATE_DISCONNECTED          =0x20
599 } HCI_STATE_MACHINE, *PHCI_STATE_MACHINE;
600
601 typedef enum _AMP_ASSOC_STRUCTURE_TYPE
602 {
603         AMP_MAC_ADDR                                    =0x01,
604         AMP_PREFERRED_CHANNEL_LIST      =0x02,
605         AMP_CONNECTED_CHANNEL           =0x03,
606         AMP_80211_PAL_CAP_LIST          =0x04,
607         AMP_80211_PAL_VISION                    =0x05,
608         AMP_RESERVED_FOR_TESTING                =0x33
609 } AMP_ASSOC_STRUCTURE_TYPE, *PAMP_ASSOC_STRUCTURE_TYPE;
610
611 typedef enum _AMP_BTAP_TYPE
612 {
613         AMP_BTAP_NONE,
614         AMP_BTAP_CREATOR,
615         AMP_BTAP_JOINER
616 } AMP_BTAP_TYPE, *PAMP_BTAP_TYPE;
617
618 typedef enum _HCI_STATE_WITH_CMD
619 {
620         STATE_CMD_CREATE_PHY_LINK,
621         STATE_CMD_ACCEPT_PHY_LINK,
622         STATE_CMD_DISCONNECT_PHY_LINK,
623         STATE_CMD_CONNECT_ACCEPT_TIMEOUT,
624         STATE_CMD_MAC_START_COMPLETE,
625         STATE_CMD_MAC_START_FAILED,
626         STATE_CMD_MAC_CONNECT_COMPLETE,
627         STATE_CMD_MAC_CONNECT_FAILED,
628         STATE_CMD_MAC_DISCONNECT_INDICATE,
629         STATE_CMD_MAC_CONNECT_CANCEL_INDICATE,
630         STATE_CMD_4WAY_FAILED,
631         STATE_CMD_4WAY_SUCCESSED,
632         STATE_CMD_ENTER_STATE,
633         STATE_CMD_NO_SUCH_CMD,
634 } HCI_STATE_WITH_CMD, *PHCI_STATE_WITH_CMD;
635
636 typedef enum _HCI_SERVICE_TYPE
637 {
638         SERVICE_NO_TRAFFIC,
639         SERVICE_BEST_EFFORT,
640         SERVICE_GUARANTEE
641 } HCI_SERVICE_TYPE, *PHCI_SERVICE_TYPE;
642
643 typedef enum _HCI_TRAFFIC_MODE
644 {
645         TRAFFIC_MODE_BEST_EFFORT                                                                        =0x00,
646         TRAFFIC_MODE_GUARANTEED_LATENCY                                         =0x01,
647         TRAFFIC_MODE_GUARANTEED_BANDWIDTH                                               =0x02,
648         TRAFFIC_MODE_GUARANTEED_LATENCY_AND_BANDWIDTH           =0x03
649 } HCI_TRAFFIC_MODE, *PHCI_TRAFFIC_MODE;
650
651 #define HCIOPCODE(_OCF, _OGF)           (_OGF<<10|_OCF)
652 #define HCIOPCODELOW(_OCF, _OGF)        (u8)(HCIOPCODE(_OCF, _OGF)&0x00ff)
653 #define HCIOPCODEHIGHT(_OCF, _OGF)      (u8)(HCIOPCODE(_OCF, _OGF)>>8)
654
655 #define TWOBYTE_HIGHTBYTE(_DATA)        (u8)(_DATA>>8)
656 #define TWOBYTE_LOWBYTE(_DATA)          (u8)(_DATA)
657
658 typedef enum _AMP_STATUS
659 {
660         AMP_STATUS_AVA_PHY_PWR_DWN              = 0x0,
661         AMP_STATUS_BT_USE_ONLY                          = 0x1,
662         AMP_STATUS_NO_CAPACITY_FOR_BT           = 0x2,
663         AMP_STATUS_LOW_CAPACITY_FOR_BT          = 0x3,
664         AMP_STATUS_MEDIUM_CAPACITY_FOR_BT       = 0x4,
665         AMP_STATUS_HIGH_CAPACITY_FOR_BT         = 0x5,
666         AMP_STATUS_FULL_CAPACITY_FOR_BT         = 0x6
667 } AMP_STATUS, *PAMP_STATUS;
668
669 typedef enum
670 {
671         Type_BT_4way1st = 0,
672         Type_BT_4way2nd = 1,
673         Type_BT_4way3rd = 2,
674         Type_BT_4way4th = 3,
675         Type_BT_unknow  = 4
676 } BT_WPAMsgType;
677
678 typedef enum _BT_CONNECT_TYPE
679 {
680         BT_CONNECT_AUTH_REQ                                                             =0x00,
681         BT_CONNECT_AUTH_RSP                                                             =0x01,
682         BT_CONNECT_ASOC_REQ                                                             =0x02,
683         BT_CONNECT_ASOC_RSP                                                             =0x03,
684         BT_DISCONNECT                                                                           =0x04
685 } BT_CONNECT_TYPE, *PBT_CONNECT_TYPE;
686
687 typedef enum _BT_LL_SERVICE_TYPE
688 {
689         BT_LL_BE = 0x01,
690         BT_LL_GU = 0x02
691 } BT_LL_SERVICE_TYPE;
692
693 typedef enum _BT_LL_FLOWSPEC
694 {
695         BT_TX_BE_FS,                            //TX best effort flowspec
696         BT_RX_BE_FS,                            //RX best effort flowspec
697         BT_TX_GU_FS,                            //TX guaranteed latency flowspec
698         BT_RX_GU_FS,                            //RX guaranteed latency flowspec
699         BT_TX_BE_AGG_FS,                        //TX aggregated best effort flowspec
700         BT_RX_BE_AGG_FS,                        //RX aggregated best effort flowspec
701         BT_TX_GU_BW_FS,                 //TX guaranteed bandwidth flowspec
702         BT_RX_GU_BW_FS,                 //RX guaranteed bandwidth flowspec
703         BT_TX_GU_LARGE_FS,              //TX guaranteed latency flowspec, for testing only
704         BT_RX_GU_LARGE_FS,              //RX guaranteed latency flowspec, for testing only
705 } BT_LL_FLOWSPEC;
706
707 typedef enum _BT_TRAFFIC_MODE
708 {
709         BT_MOTOR_EXT_BE         = 0x00, //Best Effort. Default. for HCRP, PAN, SDP, RFCOMM-based profiles like FTP,OPP, SPP, DUN, etc.
710         BT_MOTOR_EXT_GUL        = 0x01, //Guaranteed Latency. This type of traffic is used e.g. for HID and AVRCP.
711         BT_MOTOR_EXT_GUB        = 0X02, //Guaranteed Bandwidth.
712         BT_MOTOR_EXT_GULB       = 0X03  //Guaranteed Latency and Bandwidth. for A2DP and VDP.
713 } BT_TRAFFIC_MODE;
714
715 typedef enum _BT_TRAFFIC_MODE_PROFILE
716 {
717         BT_PROFILE_NONE,
718         BT_PROFILE_A2DP,
719         BT_PROFILE_PAN,
720         BT_PROFILE_HID,
721         BT_PROFILE_SCO
722 } BT_TRAFFIC_MODE_PROFILE;
723
724 typedef enum _BT_LINK_ROLE
725 {
726         BT_LINK_MASTER  = 0,
727         BT_LINK_SLAVE   = 1
728 } BT_LINK_ROLE;
729
730 typedef enum _BT_STATE_WPA_AUTH
731 {
732         STATE_WPA_AUTH_UNINITIALIZED,
733         STATE_WPA_AUTH_WAIT_PACKET_1, // Join
734         STATE_WPA_AUTH_WAIT_PACKET_2, // Creat
735         STATE_WPA_AUTH_WAIT_PACKET_3,
736         STATE_WPA_AUTH_WAIT_PACKET_4,
737         STATE_WPA_AUTH_SUCCESSED
738 } BT_STATE_WPA_AUTH, *PBT_STATE_WPA_AUTH;
739
740 #define BT_WPA_AUTH_TIMEOUT_PERIOD              1000
741 #define BTMaxWPAAuthReTransmitCoun              5
742
743 #define MAX_AMP_ASSOC_FRAG_LEN                  248
744 #define TOTAL_ALLOCIATE_ASSOC_LEN                       1000
745
746 typedef struct _HCI_FLOW_SPEC
747 {
748         u8                              Identifier;
749         u8                              ServiceType;
750         u16                             MaximumSDUSize;
751         u32                             SDUInterArrivalTime;
752         u32                             AccessLatency;
753         u32                             FlushTimeout;
754 } HCI_FLOW_SPEC, *PHCI_FLOW_SPEC;
755
756 typedef struct _HCI_LOG_LINK_CMD_DATA
757 {
758         u8                              BtPhyLinkhandle;
759         u16                             BtLogLinkhandle;
760         u8                              BtTxFlowSpecID;
761         HCI_FLOW_SPEC           Tx_Flow_Spec;
762         HCI_FLOW_SPEC           Rx_Flow_Spec;
763         u32                             TxPacketCount;
764         u32                             BestEffortFlushTimeout;
765
766         u8                              bLLCompleteEventIsSet;
767
768         u8                              bLLCancelCMDIsSetandComplete;
769 } HCI_LOG_LINK_CMD_DATA, *PHCI_LOG_LINK_CMD_DATA;
770
771 typedef struct _HCI_PHY_LINK_CMD_DATA
772 {
773         //Physical_Link_Handle
774         u8                              BtPhyLinkhandle;
775
776         u16                             LinkSuperversionTimeout;
777
778         //u16                           SuperTimeOutCnt;
779
780         //Dedicated_AMP_Key_Length
781         u8                              BtAMPKeyLen;
782         //Dedicated_AMP_Key_Type
783         u8                              BtAMPKeyType;
784         //Dedicated_AMP_Key
785         u8                              BtAMPKey[PMK_LEN];
786 } HCI_PHY_LINK_CMD_DATA, *PHCI_PHY_LINK_CMD_DATA;
787
788 typedef struct _AMP_ASSOC_STRUCTURE
789 {
790         //TYPE ID
791         u8                              TypeID;
792         //Length
793         u16                             Length;
794         //Value
795         u8                              Data[1];
796 } AMP_ASSOC_STRUCTURE, *PAMP_ASSOC_STRUCTURE;
797
798 typedef struct _AMP_PREF_CHNL_REGULATORY
799 {
800         u8                              reXId;
801         u8                              regulatoryClass;
802         u8                              coverageClass;
803 } AMP_PREF_CHNL_REGULATORY, *PAMP_PREF_CHNL_REGULATORY;
804
805 typedef struct _AMP_ASSOC_CMD_DATA
806 {
807         //Physical_Link_Handle
808         u8                                      BtPhyLinkhandle;
809         //Length_So_Far
810         u16                                     LenSoFar;
811
812         u16                                     MaxRemoteASSOCLen;
813         //AMP_ASSOC_Remaining_Length
814         u16                                     AMPAssocRemLen;
815         //AMP_ASSOC_fragment
816         void                            *AMPAssocfragment;
817 } AMP_ASSOC_CMD_DATA, *PAMP_ASSOC_CMD_DATA;
818
819 typedef struct _HCI_LINK_INFO
820 {
821         u16                                     ConnectHandle;
822         u8                                      IncomingTrafficMode;
823         u8                                      OutgoingTrafficMode;
824         u8                                      BTProfile;
825         u8                                      BTCoreSpec;
826         s8                                      BT_RSSI;
827         u8                                      TrafficProfile;
828         u8                                      linkRole;
829 } HCI_LINK_INFO, *PHCI_LINK_INFO;
830
831 typedef struct _HCI_EXT_CONFIG
832 {
833         HCI_LINK_INFO                           linkInfo[MAX_BT_ASOC_ENTRY_NUM];
834         u8                                      btOperationCode;
835         u16                                     CurrentConnectHandle;
836         u8                                      CurrentIncomingTrafficMode;
837         u8                                      CurrentOutgoingTrafficMode;
838         s8                                      MIN_BT_RSSI;
839         u8                                      NumberOfHandle;
840         u8                                      NumberOfSCO;
841         u8                                      CurrentBTStatus;
842         u16                                     HCIExtensionVer;
843
844         //Bt coexist related
845         u8                                      btProfileCase;
846         u8                                      btProfileAction;
847         u8                                      bManualControl;
848         u8                                      bBTBusy;
849         u8                                      bBTA2DPBusy;
850         u8                                      bEnableWifiScanNotify;
851
852         u8                                      bHoldForBtOperation;
853         u32                                     bHoldPeriodCnt;
854
855 }HCI_EXT_CONFIG, *PHCI_EXT_CONFIG;
856
857 typedef struct _HCI_ACL_PACKET_DATA
858 {
859         u16                                     ACLDataPacketLen;
860         u8                                      SyncDataPacketLen;
861         u16                                     TotalNumACLDataPackets;
862         u16                                     TotalSyncNumDataPackets;
863 } HCI_ACL_PACKET_DATA, *PHCI_ACL_PACKET_DATA;
864
865 typedef struct _HCI_PHY_LINK_BSS_INFO
866 {
867         u16                                             bdCap;                  // capability information
868
869         // Qos related. Added by Annie, 2005-11-01.
870 //      BSS_QOS                                         BssQos; // not implement yet
871
872 } HCI_PHY_LINK_BSS_INFO, *PHCI_PHY_LINK_BSS_INFO;
873
874 typedef struct _PACKET_IRP_HCICMD_DATA
875 {
876     u16         OCF:10;
877     u16         OGF:6;
878     u8          Length;
879     u8          Data[2];
880 } PACKET_IRP_HCICMD_DATA, *PPACKET_IRP_HCICMD_DATA;
881
882 typedef struct _BT_ASOC_ENTRY
883 {
884         u8                                              bUsed;
885         u8                                              mAssoc;
886         u8                                              b4waySuccess;
887         u8                                              Bssid[6];
888         HCI_PHY_LINK_CMD_DATA           PhyLinkCmdData;
889
890         HCI_LOG_LINK_CMD_DATA           LogLinkCmdData[MAX_LOGICAL_LINK_NUM];
891
892         HCI_ACL_PACKET_DATA                     ACLPacketsData;
893
894         AMP_ASSOC_CMD_DATA              AmpAsocCmdData;
895         OCTET_STRING                            BTSsid;
896         u8                                              BTSsidBuf[33];
897
898         HCI_STATUS                                              PhyLinkDisconnectReason;
899
900         u8                                              bSendSupervisionPacket;
901         //u8                                            CurrentSuervisionPacketSendNum;
902         //u8                                            LastSuervisionPacketSendNum;
903         u32                                             NoRxPktCnt;
904         //Is Creator or Joiner
905         AMP_BTAP_TYPE                           AMPRole;
906
907         //BT current state
908         u8                                              BtCurrentState;
909         //BT next state
910         u8                                              BtNextState;
911
912         u8                                              bNeedPhysLinkCompleteEvent;
913
914         HCI_STATUS                                      PhysLinkCompleteStatus;
915
916         u8                                              BTRemoteMACAddr[6];
917
918         u32                                             BTCapability;
919
920         u8                                              SyncDataPacketLen;
921
922         u16                                             TotalSyncNumDataPackets;
923         u16                                             TotalNumACLDataPackets;
924
925         u8                                              ShortRangeMode;
926
927         u8                                              PTK[PTK_LEN_TKIP];
928         u8                                              GTK[GTK_LEN];
929         u8                                              ANonce[KEY_NONCE_LEN];
930         u8                                              SNonce[KEY_NONCE_LEN];
931         u64                                             KeyReplayCounter;
932         u8                                              WPAAuthReplayCount;
933         u8                                              AESKeyBuf[AESCCMP_BLK_SIZE_TOTAL];
934         u8                                              PMK[PMK_LEN];
935         BT_STATE_WPA_AUTH                       BTWPAAuthState;
936         s32                                             UndecoratedSmoothedPWDB;
937
938         // Add for HW security !!
939         u8                                              HwCAMIndex;  // Cam index
940         u8                                              bPeerQosSta;
941
942         u32                                             rxSuvpPktCnt;
943 }BT_ASOC_ENTRY, *PBT_ASOC_ENTRY;
944
945 typedef struct _BT_TRAFFIC_STATISTICS
946 {
947         u8                              bTxBusyTraffic;
948         u8                              bRxBusyTraffic;
949         u8                              bIdle;
950         u32                             TxPktCntInPeriod;
951         u32                             RxPktCntInPeriod;
952         u64                             TxPktLenInPeriod;
953         u64                             RxPktLenInPeriod;
954 } BT_TRAFFIC_STATISTICS, *PBT_TRAFFIC_STATISTICS;
955
956 typedef struct _BT_MGNT
957 {
958         u8                              bBTConnectInProgress;
959         u8                              bLogLinkInProgress;
960         u8                              bPhyLinkInProgress;
961         u8                              bPhyLinkInProgressStartLL;
962         u8                              BtCurrentPhyLinkhandle;
963         u16                             BtCurrentLogLinkhandle;
964         u8                              CurrentConnectEntryNum;
965         u8                              DisconnectEntryNum;
966         u8                              CurrentBTConnectionCnt;
967         BT_CONNECT_TYPE         BTCurrentConnectType;
968         BT_CONNECT_TYPE         BTReceiveConnectPkt;
969         u8                              BTAuthCount;
970         u8                              BTAsocCount;
971         u8                              bStartSendSupervisionPkt;
972         u8                              BtOperationOn;
973         u8                              BTNeedAMPStatusChg;
974         u8                              JoinerNeedSendAuth;
975         HCI_PHY_LINK_BSS_INFO   bssDesc;
976         HCI_EXT_CONFIG          ExtConfig;
977         u8                              bNeedNotifyAMPNoCap;
978         u8                              bCreateSpportQos;
979         u8                              bSupportProfile;
980         u8                              BTChannel;
981         u8                              CheckChnlIsSuit;
982         u8                              bBtScan;
983         u8                              btLogoTest;
984 } BT_MGNT, *PBT_MGNT;
985
986 typedef struct _BT_HCI_DBG_INFO
987 {
988         u32                             hciCmdCnt;
989         u32                             hciCmdCntUnknown;
990         u32                             hciCmdCntCreatePhyLink;
991         u32                             hciCmdCntAcceptPhyLink;
992         u32                             hciCmdCntDisconnectPhyLink;
993         u32                             hciCmdPhyLinkStatus;
994         u32                             hciCmdCntCreateLogLink;
995         u32                             hciCmdCntAcceptLogLink;
996         u32                             hciCmdCntDisconnectLogLink;
997         u32                             hciCmdCntReadLocalAmpAssoc;
998         u32                             hciCmdCntWriteRemoteAmpAssoc;
999         u32                             hciCmdCntSetAclLinkStatus;
1000         u32                             hciCmdCntSetScoLinkStatus;
1001         u32                             hciCmdCntExtensionVersionNotify;
1002         u32                             hciCmdCntLinkStatusNotify;
1003 } BT_HCI_DBG_INFO, *PBT_HCI_DBG_INFO;
1004
1005 typedef struct _BT_IRP_DBG_INFO
1006 {
1007         u32                             irpMJCreate;
1008         // Io Control
1009         u32                             irpIoControl;
1010         u32                             irpIoCtrlHciCmd;
1011         u32                             irpIoCtrlHciEvent;
1012         u32                             irpIoCtrlHciTxData;
1013         u32                             irpIoCtrlHciRxData;
1014         u32                             irpIoCtrlUnknown;
1015
1016         u32                             irpIoCtrlHciTxData1s;
1017 } BT_IRP_DBG_INFO, *PBT_IRP_DBG_INFO;
1018
1019 typedef struct _BT_PACKET_DBG_INFO
1020 {
1021         u32                             btPktTxProbReq;
1022         u32                             btPktRxProbReq;
1023         u32                             btPktRxProbReqFail;
1024         u32                             btPktTxProbRsp;
1025         u32                             btPktRxProbRsp;
1026         u32                             btPktTxAuth;
1027         u32                             btPktRxAuth;
1028         u32                             btPktRxAuthButDrop;
1029         u32                             btPktTxAssocReq;
1030         u32                             btPktRxAssocReq;
1031         u32                             btPktRxAssocReqButDrop;
1032         u32                             btPktTxAssocRsp;
1033         u32                             btPktRxAssocRsp;
1034         u32                             btPktTxDisassoc;
1035         u32                             btPktRxDisassoc;
1036         u32                             btPktRxDeauth;
1037         u32                             btPktTx4way1st;
1038         u32                             btPktRx4way1st;
1039         u32                             btPktTx4way2nd;
1040         u32                             btPktRx4way2nd;
1041         u32                             btPktTx4way3rd;
1042         u32                             btPktRx4way3rd;
1043         u32                             btPktTx4way4th;
1044         u32                             btPktRx4way4th;
1045         u32                             btPktTxLinkSuperReq;
1046         u32                             btPktRxLinkSuperReq;
1047         u32                             btPktTxLinkSuperRsp;
1048         u32                             btPktRxLinkSuperRsp;
1049         u32                             btPktTxData;
1050         u32                             btPktRxData;
1051 } BT_PACKET_DBG_INFO, *PBT_PACKET_DBG_INFO;
1052
1053 typedef struct _BT_DBG
1054 {
1055         u8                              dbgCtrl;
1056         u32                             dbgProfile;
1057         BT_HCI_DBG_INFO         dbgHciInfo;
1058         BT_IRP_DBG_INFO         dbgIrpInfo;
1059         BT_PACKET_DBG_INFO      dbgBtPkt;
1060 } BT_DBG, *PBT_DBG;
1061
1062 typedef struct _BT_HCI_INFO
1063 {
1064         //802.11 Pal version specifier
1065         u8                              BTPalVersion;
1066         u16                             BTPalCompanyID;
1067         u16                             BTPalsubversion;
1068
1069         //Connected channel list
1070         u16                             BTConnectChnlListLen;
1071         u8                              BTConnectChnllist[64];
1072
1073         //Fail contact counter
1074         u16                             FailContactCount;
1075
1076         //Event mask
1077         u64                             BTEventMask;
1078         u64                             BTEventMaskPage2;
1079
1080         //timeout var
1081         u16                             ConnAcceptTimeout;
1082         u16                             LogicalAcceptTimeout;
1083         u16                             PageTimeout;
1084
1085         u8                              LocationDomainAware;
1086         u16                             LocationDomain;
1087         u8                              LocationDomainOptions;
1088         u8                              LocationOptions;
1089
1090         u8                              FlowControlMode;
1091
1092         //Preferred channel list
1093         u16                             BtPreChnlListLen;
1094         u8                              BTPreChnllist[64];
1095
1096         u16                             enFlush_LLH;    //enhanced flush handle
1097         u16                             FLTO_LLH;               //enhanced flush handle
1098
1099         //==========================================
1100         //Test command only.
1101         u8                              bInTestMode;
1102         u8                              bTestIsEnd;
1103         u8                              bTestNeedReport;
1104         u8                              TestScenario;
1105         u8                              TestReportInterval;
1106         u8                              TestCtrType;
1107         u32                             TestEventType;
1108         u16                             TestNumOfFrame;
1109         u16                             TestNumOfErrFrame;
1110         u16                             TestNumOfBits;
1111         u16                             TestNumOfErrBits;
1112         //==========================================
1113 } BT_HCI_INFO, *PBT_HCI_INFO;
1114
1115 typedef struct _BT_TRAFFIC
1116 {
1117         // Add for check replay data
1118         u8                                      LastRxUniFragNum;
1119         u16                                     LastRxUniSeqNum;
1120
1121         //s32                                   EntryMaxUndecoratedSmoothedPWDB;
1122         //s32                                   EntryMinUndecoratedSmoothedPWDB;
1123
1124         BT_TRAFFIC_STATISTICS           Bt30TrafficStatistics;
1125 } BT_TRAFFIC, *PBT_TRAFFIC;
1126
1127 #define RT_WORK_ITEM struct work_struct
1128 #define RT_THREAD _thread_hdl_
1129
1130 typedef struct _BT_SECURITY
1131 {
1132         // WPA auth state
1133         // May need to remove to BTSecInfo ...
1134         //BT_STATE_WPA_AUTH BTWPAAuthState;
1135         //u8                            PMK[PMK_LEN];
1136         RT_TIMER                        BTWPAAuthTimer;
1137         OCTET_STRING            RSNIE;
1138         u8                      RSNIEBuf[MAXRSNIELEN];
1139         u8                      bRegNoEncrypt;
1140         u8                      bUsedHwEncrypt;   // It is define by OS version !!
1141 } BT_SECURITY, *PBT_SECURITY;
1142
1143 typedef struct _BT30Info
1144 {
1145         PADAPTER                        padapter;
1146         BT_ASOC_ENTRY           BtAsocEntry[MAX_BT_ASOC_ENTRY_NUM];
1147         BT_MGNT                         BtMgnt;
1148         BT_DBG                          BtDbg;
1149         BT_HCI_INFO                     BtHciInfo;
1150         BT_TRAFFIC                      BtTraffic;
1151         BT_SECURITY                     BtSec;
1152
1153 #if(BT_THREAD == 0)
1154         RT_WORK_ITEM            HCICmdWorkItem;
1155         RT_TIMER                                BTHCICmdTimer;
1156 #endif
1157 #if (SENDTXMEHTOD==0)
1158         RT_WORK_ITEM            HCISendACLDataWorkItem;
1159         RT_TIMER                                BTHCISendAclDataTimer;
1160 #elif(SENDTXMEHTOD==2)
1161         RT_THREAD                       BTTxThread;
1162 #endif
1163         RT_WORK_ITEM            BTPsDisableWorkItem;
1164         RT_WORK_ITEM            BTConnectWorkItem;
1165         RT_TIMER                                BTHCIDiscardAclDataTimer;
1166         RT_TIMER                                BTHCIJoinTimeoutTimer;
1167         RT_TIMER                                BTTestSendPacketTimer;
1168         RT_TIMER                                BTSupervisionPktTimer;
1169         RT_TIMER                                BTDisconnectPhyLinkTimer;
1170         RT_TIMER                                BTBeaconTimer;
1171         u8                              BTBeaconTmrOn;
1172
1173         RT_TIMER                                BTPsDisableTimer;
1174         RT_TIMER                                BTAuthTimeoutTimer;
1175         RT_TIMER                                BTAsocTimeoutTimer;
1176
1177         void *                          pBtChnlList;
1178 }BT30Info, *PBT30Info;
1179
1180 typedef struct _PACKET_IRP_ACL_DATA
1181 {
1182     u16         Handle:12;
1183     u16         PB_Flag:2;
1184     u16         BC_Flag:2;
1185     u16         Length;
1186     u8          Data[1];
1187 } PACKET_IRP_ACL_DATA, *PPACKET_IRP_ACL_DATA;
1188
1189 typedef struct _PACKET_IRP_HCIEVENT_DATA
1190 {
1191     u8          EventCode;
1192     u8          Length;
1193     u8          Data[1];
1194 } PACKET_IRP_HCIEVENT_DATA, *PPACKET_IRP_HCIEVENT_DATA;
1195
1196 typedef struct _COMMON_TRIPLE
1197 {
1198         u8 byte_1st;
1199         u8 byte_2nd;
1200         u8 byte_3rd;
1201 } COMMON_TRIPLE, *PCOMMON_TRIPLE;
1202
1203 #define COUNTRY_STR_LEN         3       // country string len=3
1204
1205 #define LOCAL_PMK       0
1206
1207 typedef enum _HCI_WIFI_CONNECT_STATUS
1208 {
1209         HCI_WIFI_NOT_CONNECTED                          =0x0,
1210         HCI_WIFI_CONNECTED                                      =0x1,
1211         HCI_WIFI_CONNECT_IN_PROGRESS            =0x2,
1212 } HCI_WIFI_CONNECT_STATUS, *PHCI_WIFI_CONNECT_STATUS;
1213
1214 typedef enum _HCI_EXT_BT_OPERATION
1215 {
1216         HCI_BT_OP_NONE                          = 0x0,
1217         HCI_BT_OP_INQUIRY_START         = 0x1,
1218         HCI_BT_OP_INQUIRY_FINISH                = 0x2,
1219         HCI_BT_OP_PAGING_START          = 0x3,
1220         HCI_BT_OP_PAGING_SUCCESS                = 0x4,
1221         HCI_BT_OP_PAGING_UNSUCCESS      = 0x5,
1222         HCI_BT_OP_PAIRING_START         = 0x6,
1223         HCI_BT_OP_PAIRING_FINISH                = 0x7,
1224         HCI_BT_OP_BT_DEV_ENABLE         = 0x8,
1225         HCI_BT_OP_BT_DEV_DISABLE                = 0x9,
1226         HCI_BT_OP_MAX
1227 } HCI_EXT_BT_OPERATION, *PHCI_EXT_BT_OPERATION;
1228
1229 //======================================
1230 //      Function proto type
1231 //======================================
1232 typedef struct _BTData_ENTRY
1233 {
1234         struct list_head        List;
1235         void                    *pDataBlock;
1236 } BTData_ENTRY, *PBTData_ENTRY;
1237
1238 #define BTHCI_SM_WITH_INFO(_Adapter, _StateToEnter, _StateCmd, _EntryNum)       \
1239 {                                                                               \
1240         RTPRINT(FIOCTL, IOCTL_STATE, ("[BT state change] caused by ""%s"", line=%d\n", __FUNCTION__, __LINE__));                                                        \
1241         BTHCI_StateMachine(_Adapter, _StateToEnter, _StateCmd, _EntryNum);\
1242 }
1243
1244 void BTHCI_EventParse(PADAPTER padapter, void *pEvntData, u32 dataLen);
1245 #define BT_EventParse BTHCI_EventParse
1246 u8 BTHCI_HsConnectionEstablished(PADAPTER padapter);
1247 void BTHCI_UpdateBTProfileRTKToMoto(PADAPTER padapter);
1248 void BTHCI_WifiScanNotify(PADAPTER padapter, u8 scanType);
1249 void BTHCI_StateMachine(PADAPTER padapter, u8 StateToEnter, HCI_STATE_WITH_CMD StateCmd, u8 EntryNum);
1250 void BTHCI_DisconnectPeer(PADAPTER padapter, u8 EntryNum);
1251 void BTHCI_EventNumOfCompletedDataBlocks(PADAPTER padapter);
1252 void BTHCI_EventAMPStatusChange(PADAPTER padapter, u8 AMP_Status);
1253 void BTHCI_DisconnectAll(PADAPTER padapter);
1254 HCI_STATUS BTHCI_HandleHCICMD(PADAPTER padapter, PPACKET_IRP_HCICMD_DATA pHciCmd);
1255
1256 // ===== End of sync from SD7 driver COMMON/bt_hci.h =====
1257 #endif // __BT_HCI_C__
1258
1259 #ifdef __HALBTC87231ANT_C__ // HAL/BTCoexist/HalBtc87231Ant.h
1260 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h =====
1261 #define GET_BT_INFO(padapter)   (&GET_HAL_DATA(padapter)->BtInfo)
1262
1263 #define BTC_FOR_SCAN_START                              1
1264 #define BTC_FOR_SCAN_FINISH                             0
1265
1266 #define BT_TXRX_CNT_THRES_1                             1200
1267 #define BT_TXRX_CNT_THRES_2                             1400
1268 #define BT_TXRX_CNT_THRES_3                             3000
1269 #define BT_TXRX_CNT_LEVEL_0                             0       // < 1200
1270 #define BT_TXRX_CNT_LEVEL_1                             1       // >= 1200 && < 1400
1271 #define BT_TXRX_CNT_LEVEL_2                             2       // >= 1400
1272 #define BT_TXRX_CNT_LEVEL_3                             3       // >= 3000
1273
1274 typedef enum _BT_STATE_1ANT{
1275         BT_INFO_STATE_DISABLED                  = 0,
1276         BT_INFO_STATE_NO_CONNECTION             = 1,
1277         BT_INFO_STATE_CONNECT_IDLE              = 2,
1278         BT_INFO_STATE_INQ_OR_PAG                = 3,
1279         BT_INFO_STATE_ACL_ONLY_BUSY             = 4,
1280         BT_INFO_STATE_SCO_ONLY_BUSY             = 5,
1281         BT_INFO_STATE_ACL_SCO_BUSY              = 6,
1282         BT_INFO_STATE_ACL_INQ_OR_PAG    = 7,
1283         BT_INFO_STATE_MAX                               = 8
1284 } BT_STATE_1ANT, *PBT_STATE_1ANT;
1285
1286 typedef struct _BTDM_8723A_1ANT
1287 {
1288         u8              prePsTdma;
1289         u8              curPsTdma;
1290         u8              psTdmaDuAdjType;
1291         u8              bPrePsTdmaOn;
1292         u8              bCurPsTdmaOn;
1293         u8              preWifiPara;
1294         u8              curWifiPara;
1295         u8              preCoexWifiCon;
1296         u8              curCoexWifiCon;
1297         u8              wifiRssiThresh;
1298
1299         u32             psTdmaMonitorCnt;
1300         u32             psTdmaGlobalCnt;
1301
1302         //DurationAdjust For SCO
1303         u32             psTdmaMonitorCntForSCO;
1304         u8              psTdmaDuAdjTypeForSCO;
1305         u8              RSSI_WiFi_Last;
1306         u8              RSSI_BT_Last;
1307
1308         u8              bWiFiHalt;
1309         u8              bRAChanged;
1310 } BTDM_8723A_1ANT, *PBTDM_8723A_1ANT;
1311
1312 void BTDM_1AntSignalCompensation(PADAPTER padapter, u8 *rssi_wifi, u8 *rssi_bt);
1313 void BTDM_1AntForDhcp(PADAPTER padapter);
1314 void BTDM_1AntBtCoexist8723A(PADAPTER padapter);
1315
1316 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h =====
1317 #endif // __HALBTC87231ANT_C__
1318
1319 #ifdef __HALBTC87232ANT_C__ // HAL/BTCoexist/HalBtc87232Ant.h
1320 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h =====
1321 typedef enum _BT_2ANT_BT_STATUS{
1322         BT_2ANT_BT_STATUS_IDLE                          = 0x0,
1323         BT_2ANT_BT_STATUS_CONNECTED_IDLE        = 0x1,
1324         BT_2ANT_BT_STATUS_NON_IDLE                      = 0x2,
1325         BT_2ANT_BT_STATUS_MAX
1326 }BT_2ANT_BT_STATUS,*PBT_2ANT_BT_STATUS;
1327
1328 typedef enum _BT_2ANT_COEX_ALGO{
1329         BT_2ANT_COEX_ALGO_UNDEFINED                     = 0x0,
1330         BT_2ANT_COEX_ALGO_SCO                           = 0x1,
1331         BT_2ANT_COEX_ALGO_HID                           = 0x2,
1332         BT_2ANT_COEX_ALGO_A2DP                          = 0x3,
1333         BT_2ANT_COEX_ALGO_PANEDR                        = 0x4,
1334         BT_2ANT_COEX_ALGO_PANHS                         = 0x5,
1335         BT_2ANT_COEX_ALGO_PANEDR_A2DP           = 0x6,
1336         BT_2ANT_COEX_ALGO_PANEDR_HID            = 0x7,
1337         BT_2ANT_COEX_ALGO_HID_A2DP_PANEDR       = 0x8,
1338         BT_2ANT_COEX_ALGO_HID_A2DP                      = 0x9,
1339         BT_2ANT_COEX_ALGO_HID_A2DP_PANHS        = 0xA,
1340         BT_2ANT_COEX_ALGO_MAX                           = 0xB,
1341 }BT_2ANT_COEX_ALGO,*PBT_2ANT_COEX_ALGO;
1342
1343 typedef struct _BTDM_8723A_2ANT
1344 {
1345         u8              bPreDecBtPwr;
1346         u8      bCurDecBtPwr;
1347
1348         u8              preWlanActHi;
1349         u8              curWlanActHi;
1350         u8              preWlanActLo;
1351         u8              curWlanActLo;
1352
1353         u8              preFwDacSwingLvl;
1354         u8              curFwDacSwingLvl;
1355
1356         u8              bPreRfRxLpfShrink;
1357         u8              bCurRfRxLpfShrink;
1358
1359         u8              bPreLowPenaltyRa;
1360         u8              bCurLowPenaltyRa;
1361
1362         u8              preBtRetryIndex;
1363         u8              curBtRetryIndex;
1364
1365         u8              bPreDacSwingOn;
1366         u32             preDacSwingLvl;
1367         u8              bCurDacSwingOn;
1368         u32             curDacSwingLvl;
1369
1370         u8              bPreAdcBackOff;
1371         u8              bCurAdcBackOff;
1372
1373         u8              bPreAgcTableEn;
1374         u8              bCurAgcTableEn;
1375
1376         u32             preVal0x6c0;
1377         u32             curVal0x6c0;
1378         u32             preVal0x6c8;
1379         u32             curVal0x6c8;
1380         u8              preVal0x6cc;
1381         u8              curVal0x6cc;
1382
1383         u8              bCurIgnoreWlanAct;
1384         u8              bPreIgnoreWlanAct;
1385
1386         u8              prePsTdma;
1387         u8              curPsTdma;
1388         u8              psTdmaDuAdjType;
1389         u8              bPrePsTdmaOn;
1390         u8              bCurPsTdmaOn;
1391
1392         u8              preAlgorithm;
1393         u8              curAlgorithm;
1394         u8              bResetTdmaAdjust;
1395
1396
1397         u8              btStatus;
1398 } BTDM_8723A_2ANT, *PBTDM_8723A_2ANT;
1399 void BTDM_2AntBtCoexist8723A(PADAPTER padapter);
1400 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h =====
1401 #endif // __HALBTC87232ANT_C__
1402
1403 #ifdef __HALBTC8723_C__ // HAL/BTCoexist/HalBtc8723.h
1404 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc8723.h =====
1405
1406 #define BT_Q_PKT_OFF            0
1407 #define BT_Q_PKT_ON             1
1408
1409 #define BT_TX_PWR_OFF           0
1410 #define BT_TX_PWR_ON            1
1411
1412 // TDMA mode definition
1413 #define TDMA_2ANT                       0
1414 #define TDMA_1ANT                       1
1415 #define TDMA_NAV_OFF            0
1416 #define TDMA_NAV_ON             1
1417 #define TDMA_DAC_SWING_OFF      0
1418 #define TDMA_DAC_SWING_ON       1
1419
1420 #define BT_RSSI_LEVEL_H 0
1421 #define BT_RSSI_LEVEL_M 1
1422 #define BT_RSSI_LEVEL_L 2
1423
1424 // PTA mode related definition
1425 #define BT_PTA_MODE_OFF         0
1426 #define BT_PTA_MODE_ON          1
1427
1428 // Penalty Tx Rate Adaptive
1429 #define BT_TX_RATE_ADAPTIVE_NORMAL                      0
1430 #define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1
1431
1432 // RF Corner
1433 #define BT_RF_RX_LPF_CORNER_RESUME                      0
1434 #define BT_RF_RX_LPF_CORNER_SHRINK                      1
1435
1436 #define BT_INFO_ACL                     BIT(0)
1437 #define BT_INFO_SCO                     BIT(1)
1438 #define BT_INFO_INQ_PAG         BIT(2)
1439 #define BT_INFO_ACL_BUSY        BIT(3)
1440 #define BT_INFO_SCO_BUSY        BIT(4)
1441 #define BT_INFO_HID                     BIT(5)
1442 #define BT_INFO_A2DP            BIT(6)
1443 #define BT_INFO_FTP                     BIT(7)
1444
1445
1446
1447 typedef struct _BT_COEXIST_8723A
1448 {
1449         u32                                     highPriorityTx;
1450         u32                                     highPriorityRx;
1451         u32                                     lowPriorityTx;
1452         u32                                     lowPriorityRx;
1453         u8                                      btRssi;
1454         u8                                      TotalAntNum;
1455         u8                                      bC2hBtInfoSupport;
1456         u8                                      c2hBtInfo;
1457         u8                                      c2hBtInfoOriginal;
1458         u8                                      prec2hBtInfo; // for 1Ant
1459         u8                                      bC2hBtInquiryPage;
1460         u64                                     btInqPageStartTime; // for 2Ant
1461         u8                                      c2hBtProfile; // for 1Ant
1462         u8                                      btRetryCnt;
1463         u8                                      btInfoExt;
1464         u8                                      bC2hBtInfoReqSent;
1465         u8                                      bForceFwBtInfo;
1466         u8                                      bForceA2dpSink;
1467 //      u8                                      bForceLps;
1468 //      u8                                      bBtPwrSaveMode;
1469         BTDM_8723A_2ANT                 btdm2Ant;
1470         BTDM_8723A_1ANT                 btdm1Ant;
1471 } BT_COEXIST_8723A, *PBT_COEXIST_8723A;
1472
1473 void BTDM_SetFwChnlInfo(PADAPTER padapter, RT_MEDIA_STATUS mstatus);
1474 u8 BTDM_IsWifiConnectionExist(PADAPTER padapter);
1475 void BTDM_SetFw3a(PADAPTER padapter, u8 byte1, u8 byte2, u8 byte3, u8 byte4, u8 byte5);
1476 void BTDM_QueryBtInformation(PADAPTER padapter);
1477 void BTDM_SetSwRfRxLpfCorner(PADAPTER padapter, u8 type);
1478 void BTDM_SetSwPenaltyTxRateAdaptive(PADAPTER padapter, u8 raType);
1479 void BTDM_SetFwDecBtPwr(PADAPTER padapter, u8 bDecBtPwr);
1480 u8 BTDM_BtProfileSupport(PADAPTER padapter);
1481 void BTDM_LpsLeave(PADAPTER padapter);
1482 u8 BTDM_1Ant8723A(PADAPTER padapter);
1483 #define BT_1Ant BTDM_1Ant8723A
1484
1485 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc8723.h =====
1486 #endif // __HALBTC8723_C__
1487
1488 #ifdef __HALBTCCSR1ANT_C__ // HAL/BTCoexist/HalBtcCsr1Ant.h
1489 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h =====
1490
1491 enum BT_A2DP_INDEX{
1492         BT_A2DP_INDEX0          =0,                     // 32,12; the most critical for BT
1493         BT_A2DP_INDEX1,                                 // 12,24
1494         BT_A2DP_INDEX2,                                 // 0,0
1495         BT_A2DP_INDEX_MAX
1496 };
1497
1498 #define BT_A2DP_STATE_NOT_ENTERED               0
1499 #define BT_A2DP_STATE_DETECTING         1
1500 #define BT_A2DP_STATE_DETECTED                  2
1501
1502 #define BTDM_ANT_BT_IDLE                                0
1503 #define BTDM_ANT_WIFI                                   1
1504 #define BTDM_ANT_BT                                             2
1505
1506
1507 void BTDM_SingleAnt(PADAPTER padapter, u8 bSingleAntOn, u8 bInterruptOn, u8 bMultiNAVOn);
1508 void BTDM_CheckBTIdleChange1Ant(PADAPTER padapter);
1509
1510 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h =====
1511 #endif // __HALBTCCSR1ANT_C__
1512
1513 #ifdef __HALBTCCSR2ANT_C__ // HAL/BTCoexist/HalBtcCsr2Ant.h
1514 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h =====
1515
1516 //===========================================
1517 // For old core stack before v251
1518 //===========================================
1519 #define BT_RSSI_STATE_NORMAL_POWER      BIT0
1520 #define BT_RSSI_STATE_AMDPU_OFF         BIT1
1521 #define BT_RSSI_STATE_SPECIAL_LOW       BIT2
1522 #define BT_RSSI_STATE_BG_EDCA_LOW       BIT3
1523 #define BT_RSSI_STATE_TXPOWER_LOW       BIT4
1524
1525 #define BT_DACSWING_OFF                         0
1526 #define BT_DACSWING_M4                          1
1527 #define BT_DACSWING_M7                          2
1528 #define BT_DACSWING_M10                         3
1529
1530 void BTDM_DiminishWiFi(PADAPTER Adapter, u8 bDACOn, u8 bInterruptOn, u8 DACSwingLevel, u8 bNAVOn);
1531
1532 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h =====
1533 #endif // __HALBTCCSR2ANT_C__
1534
1535 #ifdef __HALBTCOEXIST_C__ // HAL/BTCoexist/HalBtCoexist.h
1536
1537 // HEADER/TypeDef.h
1538 #define MAX_FW_SUPPORT_MACID_NUM                        64
1539
1540 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h =====
1541
1542 #define FW_VER_BT_REG                   62
1543 #define FW_VER_BT_REG1          74
1544 #define REG_BT_ACTIVE                   0x444
1545 #define REG_BT_STATE                    0x448
1546 #define REG_BT_POLLING1         0x44c
1547 #define REG_BT_POLLING                  0x700
1548
1549 #define REG_BT_ACTIVE_OLD               0x488
1550 #define REG_BT_STATE_OLD                0x48c
1551 #define REG_BT_POLLING_OLD      0x490
1552
1553 // The reg define is for 8723
1554 #define REG_HIGH_PRIORITY_TXRX                  0x770
1555 #define REG_LOW_PRIORITY_TXRX                   0x774
1556
1557 #define BT_FW_COEX_THRESH_TOL                   6
1558 #define BT_FW_COEX_THRESH_20                            20
1559 #define BT_FW_COEX_THRESH_23                            23
1560 #define BT_FW_COEX_THRESH_25                            25
1561 #define BT_FW_COEX_THRESH_30                            30
1562 #define BT_FW_COEX_THRESH_35                            35
1563 #define BT_FW_COEX_THRESH_40                            40
1564 #define BT_FW_COEX_THRESH_45                            45
1565 #define BT_FW_COEX_THRESH_47                            47
1566 #define BT_FW_COEX_THRESH_50                            50
1567 #define BT_FW_COEX_THRESH_55                            55
1568 #define BT_FW_COEX_THRESH_65                            65
1569
1570 #define BT_COEX_STATE_BT30                                      BIT(0)
1571 #define BT_COEX_STATE_WIFI_HT20                 BIT(1)
1572 #define BT_COEX_STATE_WIFI_HT40                 BIT(2)
1573 #define BT_COEX_STATE_WIFI_LEGACY                       BIT(3)
1574
1575 #define BT_COEX_STATE_WIFI_RSSI_LOW             BIT(4)
1576 #define BT_COEX_STATE_WIFI_RSSI_MEDIUM  BIT(5)
1577 #define BT_COEX_STATE_WIFI_RSSI_HIGH            BIT(6)
1578 #define BT_COEX_STATE_DEC_BT_POWER              BIT(7)
1579
1580 #define BT_COEX_STATE_WIFI_IDLE                 BIT(8)
1581 #define BT_COEX_STATE_WIFI_UPLINK                       BIT(9)
1582 #define BT_COEX_STATE_WIFI_DOWNLINK             BIT(10)
1583
1584 #define BT_COEX_STATE_BT_INQ_PAGE       BIT(11)
1585 #define BT_COEX_STATE_BT_IDLE                           BIT(12)
1586 #define BT_COEX_STATE_BT_UPLINK                 BIT(13)
1587 #define BT_COEX_STATE_BT_DOWNLINK               BIT(14)
1588 //===========================================
1589 // Todo: Remove these definitions
1590 #define BT_COEX_STATE_BT_PAN_IDLE                       BIT(15)
1591 #define BT_COEX_STATE_BT_PAN_UPLINK             BIT(16)
1592 #define BT_COEX_STATE_BT_PAN_DOWNLINK   BIT(17)
1593 #define BT_COEX_STATE_BT_A2DP_IDLE              BIT(18)
1594 //===========================================
1595 #define BT_COEX_STATE_BT_RSSI_LOW                       BIT(19)
1596
1597 #define BT_COEX_STATE_PROFILE_HID                       BIT(20)
1598 #define BT_COEX_STATE_PROFILE_A2DP              BIT(21)
1599 #define BT_COEX_STATE_PROFILE_PAN                       BIT(22)
1600 #define BT_COEX_STATE_PROFILE_SCO                       BIT(23)
1601
1602 #define BT_COEX_STATE_WIFI_RSSI_1_LOW           BIT(24)
1603 #define BT_COEX_STATE_WIFI_RSSI_1_MEDIUM        BIT(25)
1604 #define BT_COEX_STATE_WIFI_RSSI_1_HIGH          BIT(26)
1605
1606 #define BT_COEX_STATE_WIFI_RSSI_BEACON_LOW              BIT(27)
1607 #define BT_COEX_STATE_WIFI_RSSI_BEACON_MEDIUM           BIT(28)
1608 #define BT_COEX_STATE_WIFI_RSSI_BEACON_HIGH             BIT(29)
1609
1610
1611 #define BT_COEX_STATE_BTINFO_COMMON                             BIT30
1612 #define BT_COEX_STATE_BTINFO_B_HID_SCOESCO              BIT31
1613 #define BT_COEX_STATE_BTINFO_B_FTP_A2DP                 BIT32
1614
1615 #define BT_COEX_STATE_BT_CNT_LEVEL_0                            BIT33
1616 #define BT_COEX_STATE_BT_CNT_LEVEL_1                            BIT34
1617 #define BT_COEX_STATE_BT_CNT_LEVEL_2                            BIT35
1618 #define BT_COEX_STATE_BT_CNT_LEVEL_3                            BIT36
1619
1620 #define BT_RSSI_STATE_HIGH                                      0
1621 #define BT_RSSI_STATE_MEDIUM                            1
1622 #define BT_RSSI_STATE_LOW                                       2
1623 #define BT_RSSI_STATE_STAY_HIGH                 3
1624 #define BT_RSSI_STATE_STAY_MEDIUM                       4
1625 #define BT_RSSI_STATE_STAY_LOW                  5
1626
1627
1628
1629 #define BT_AGCTABLE_OFF                         0
1630 #define BT_AGCTABLE_ON                          1
1631
1632 #define BT_BB_BACKOFF_OFF                       0
1633 #define BT_BB_BACKOFF_ON                                1
1634
1635 #define BT_FW_NAV_OFF                                   0
1636 #define BT_FW_NAV_ON                                    1
1637
1638
1639 #define BT_COEX_MECH_NONE                               0
1640 #define BT_COEX_MECH_SCO                                1
1641 #define BT_COEX_MECH_HID                                2
1642 #define BT_COEX_MECH_A2DP                               3
1643 #define BT_COEX_MECH_PAN                                4
1644 #define BT_COEX_MECH_HID_A2DP                   5
1645 #define BT_COEX_MECH_HID_PAN                    6
1646 #define BT_COEX_MECH_PAN_A2DP                   7
1647 #define BT_COEX_MECH_HID_SCO_ESCO               8
1648 #define BT_COEX_MECH_FTP_A2DP                   9
1649 #define BT_COEX_MECH_COMMON                     10
1650 #define BT_COEX_MECH_MAX                                11
1651 //===========================================
1652 //      BT Dbg Ctrl
1653 //===========================================
1654 #define BT_DBG_PROFILE_NONE                     0
1655 #define BT_DBG_PROFILE_SCO                      1
1656 #define BT_DBG_PROFILE_HID                      2
1657 #define BT_DBG_PROFILE_A2DP                     3
1658 #define BT_DBG_PROFILE_PAN                      4
1659 #define BT_DBG_PROFILE_HID_A2DP         5
1660 #define BT_DBG_PROFILE_HID_PAN          6
1661 #define BT_DBG_PROFILE_PAN_A2DP         7
1662 #define BT_DBG_PROFILE_MAX                      9
1663 //===========================================
1664
1665 typedef struct _BT_COEXIST_STR
1666 {
1667         u8                                      BluetoothCoexist;
1668         u8                                      BT_Ant_Num;
1669         u8                                      BT_CoexistType;
1670         u8                                      BT_Ant_isolation;       //0:good, 1:bad
1671         u8                                      BT_RadioSharedType;
1672         u32                                     Ratio_Tx;
1673         u32                                     Ratio_PRI;
1674         u8                                      bInitlized;
1675         u32                                     BtRfRegOrigin1E;
1676         u32                                     BtRfRegOrigin1F;
1677         u8                                      bBTBusyTraffic;
1678         u8                                      bBTTrafficModeSet;
1679         u8                                      bBTNonTrafficModeSet;
1680         BT_TRAFFIC_STATISTICS           BT21TrafficStatistics;
1681         u64                                     CurrentState;
1682         u64                                     PreviousState;
1683         u8                                      preRssiState;
1684         u8                                      preRssiState1;
1685         u8                                      preRssiStateBeacon;
1686         u8                                      bFWCoexistAllOff;
1687         u8                                      bSWCoexistAllOff;
1688         u8                                      bHWCoexistAllOff;
1689         u8                                      bBalanceOn;
1690         u8                                      bSingleAntOn;
1691         u8                                      bInterruptOn;
1692         u8                                      bMultiNAVOn;
1693         u8                                      PreWLANActH;
1694         u8                                      PreWLANActL;
1695         u8                                      WLANActH;
1696         u8                                      WLANActL;
1697         u8                                      A2DPState;
1698         u8                                      AntennaState;
1699         u32                                     lastBtEdca;
1700         u16                                     last_aggr_num;
1701         u8                                      bEDCAInitialized;
1702         u8                                      exec_cnt;
1703         u8                                      b8723aAgcTableOn;
1704         u8                                      b92DAgcTableOn;
1705         BT_COEXIST_8723A                        halCoex8723;
1706         u8                                      btActiveZeroCnt;
1707         u8                                      bCurBtDisabled;
1708         u8                                      bPreBtDisabled;
1709         u8                                      bNeedToRoamForBtDisableEnable;
1710         u8                                      fw3aVal[5];
1711 }BT_COEXIST_STR, *PBT_COEXIST_STR;
1712
1713
1714 void BTDM_CheckAntSelMode(PADAPTER padapter);
1715 void BTDM_FwC2hBtRssi(PADAPTER padapter, u8 *tmpBuf);
1716 #define BT_FwC2hBtRssi BTDM_FwC2hBtRssi
1717 void BTDM_FwC2hBtInfo(PADAPTER padapter, u8 *tmpBuf, u8 length);
1718 #define BT_FwC2hBtInfo BTDM_FwC2hBtInfo
1719 void BTDM_DisplayBtCoexInfo(PADAPTER padapter);
1720 #define BT_DisplayBtCoexInfo BTDM_DisplayBtCoexInfo
1721 void BTDM_RejectAPAggregatedPacket(PADAPTER padapter, u8 bReject);
1722 u8 BTDM_IsHT40(PADAPTER padapter);
1723 u8 BTDM_Legacy(PADAPTER padapter);
1724 void BTDM_CheckWiFiState(PADAPTER padapter);
1725 s32 BTDM_GetRxSS(PADAPTER padapter);
1726 u8 BTDM_CheckCoexBcnRssiState(PADAPTER padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1727 u8 BTDM_CheckCoexRSSIState1(PADAPTER padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1728 u8 BTDM_CheckCoexRSSIState(PADAPTER padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1729 u8 BTDM_DisableEDCATurbo(PADAPTER padapter);
1730 #define BT_DisableEDCATurbo BTDM_DisableEDCATurbo
1731 void BTDM_Balance(PADAPTER padapter, u8 bBalanceOn, u8 ms0, u8 ms1);
1732 void BTDM_AGCTable(PADAPTER padapter, u8 type);
1733 void BTDM_BBBackOffLevel(PADAPTER padapter, u8 type);
1734 void BTDM_FWCoexAllOff(PADAPTER padapter);
1735 void BTDM_SWCoexAllOff(PADAPTER padapter);
1736 void BTDM_HWCoexAllOff(PADAPTER padapter);
1737 void BTDM_CoexAllOff(PADAPTER padapter);
1738 void BTDM_TurnOffBtCoexistBeforeEnterIPS(PADAPTER padapter);
1739 void BTDM_SignalCompensation(PADAPTER padapter, u8 *rssi_wifi, u8 *rssi_bt);
1740 void BTDM_Coexist(PADAPTER padapter);
1741 #define BT_CoexistMechanism BTDM_Coexist
1742 void BTDM_UpdateCoexState(PADAPTER padapter);
1743 u8 BTDM_IsSameCoexistState(PADAPTER padapter);
1744 void BTDM_PWDBMonitor(PADAPTER padapter);
1745 u8 BTDM_IsBTBusy(PADAPTER padapter);
1746 #define BT_IsBtBusy BTDM_IsBTBusy
1747 u8 BTDM_IsWifiBusy(PADAPTER padapter);
1748 u8 BTDM_IsCoexistStateChanged(PADAPTER padapter);
1749 u8 BTDM_IsWifiUplink(PADAPTER padapter);
1750 u8 BTDM_IsWifiDownlink(PADAPTER padapter);
1751 u8 BTDM_IsBTHSMode(PADAPTER padapter);
1752 u8 BTDM_IsBTUplink(PADAPTER padapter);
1753 u8 BTDM_IsBTDownlink(PADAPTER padapter);
1754 void BTDM_AdjustForBtOperation(PADAPTER padapter);
1755 void BTDM_ForHalt(PADAPTER padapter);
1756 void BTDM_WifiScanNotify(PADAPTER padapter, u8 scanType);
1757 void BTDM_WifiAssociateNotify(PADAPTER padapter, u8 action);
1758 void BTDM_MediaStatusNotify(PADAPTER padapter, RT_MEDIA_STATUS mstatus);
1759 void BTDM_ForDhcp(PADAPTER padapter);
1760 void BTDM_ResetActionProfileState(PADAPTER padapter);
1761 void BTDM_SetBtCoexCurrAntNum(PADAPTER padapter, u8 antNum);
1762 #define BT_SetBtCoexCurrAntNum BTDM_SetBtCoexCurrAntNum
1763 u8 BTDM_IsActionSCO(PADAPTER padapter);
1764 u8 BTDM_IsActionHID(PADAPTER padapter);
1765 u8 BTDM_IsActionA2DP(PADAPTER padapter);
1766 u8 BTDM_IsActionPAN(PADAPTER padapter);
1767 u8 BTDM_IsActionHIDA2DP(PADAPTER padapter);
1768 u8 BTDM_IsActionHIDPAN(PADAPTER padapter);
1769 u8 BTDM_IsActionPANA2DP(PADAPTER padapter);
1770 u8 BTDM_IsBtDisabled(PADAPTER padapter);
1771 #define BT_IsBtDisabled BTDM_IsBtDisabled
1772 u32 BTDM_BtTxRxCounterH(PADAPTER padapter);
1773 u32 BTDM_BtTxRxCounterL(PADAPTER padapter);
1774
1775 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h =====
1776 #endif // __HALBTCOEXIST_C__
1777
1778 #ifdef __HALBT_C__ // HAL/HalBT.h
1779 // ===== Below this line is sync from SD7 driver HAL/HalBT.h =====
1780
1781 #define RTS_CTS_NO_LEN_LIMIT    0
1782
1783 u8 HALBT_GetPGAntNum(PADAPTER padapter);
1784 #define BT_GetPGAntNum HALBT_GetPGAntNum
1785 void HALBT_SetKey(PADAPTER padapter, u8 EntryNum);
1786 void HALBT_RemoveKey(PADAPTER padapter, u8 EntryNum);
1787 void HALBT_InitBTVars8723A(PADAPTER padapter);
1788 #define HALBT_InitHalVars HALBT_InitBTVars8723A
1789 #define BT_InitHalVars HALBT_InitHalVars
1790 u8 HALBT_IsBTExist(PADAPTER padapter);
1791 #define BT_IsBtExist HALBT_IsBTExist
1792 u8 HALBT_BTChipType(PADAPTER padapter);
1793 void HALBT_InitHwConfig(PADAPTER padapter);
1794 #define BT_InitHwConfig HALBT_InitHwConfig
1795 void HALBT_SetRtsCtsNoLenLimit(PADAPTER padapter);
1796
1797 // ===== End of sync from SD7 driver HAL/HalBT.c =====
1798 #endif // __HALBT_C__
1799
1800 #define _bt_dbg_off_            0
1801 #define _bt_dbg_on_             1
1802
1803 extern u32 BTCoexDbgLevel;
1804
1805
1806
1807 #endif // __RTL8723A_BT_COEXIST_H__