1 /******************************************************************************
3 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 ******************************************************************************/
15 #ifndef __RTL8723A_BT_COEXIST_H__
16 #define __RTL8723A_BT_COEXIST_H__
18 #include <drv_types.h>
19 #include "odm_precomp.h"
22 /* HEADER/PlatformDef.h */
23 enum rt_media_status {
24 RT_MEDIA_DISCONNECT = 0,
28 /* ===== Below this line is sync from SD7 driver COMMON/BT.h ===== */
30 #define BT_TMP_BUF_SIZE 100
32 void BT_SignalCompensation(struct rtw_adapter *padapter,
33 u8 *rssi_wifi, u8 *rssi_bt);
34 void BT_WifiScanNotify(struct rtw_adapter *padapter, u8 scanType);
35 void BT_WifiAssociateNotify(struct rtw_adapter *padapter, u8 action);
36 void BT_WifiMediaStatusNotify(struct rtw_adapter *padapter,
37 enum rt_media_status mstatus);
38 void BT_SpecialPacketNotify(struct rtw_adapter * padapter);
39 void BT_HaltProcess(struct rtw_adapter * padapter);
40 void BT_LpsLeave(struct rtw_adapter * padapter);
43 #define BT_HsConnectionEstablished(Adapter) false
44 /* ===== End of sync from SD7 driver COMMON/BT.h ===== */
46 /* HEADER/SecurityType.h */
47 #define TKIP_ENC_KEY_POS 32 /* KEK_LEN+KEK_LEN) */
48 #define MAXRSNIELEN 256
50 /* COMMON/Protocol802_11.h */
52 /* 802.11 Management frame Status Code field */
60 /* AES_CCMP specific */
62 AESCCMP_BLK_SIZE = 16, /* # octets in an AES block */
63 AESCCMP_MAX_PACKET = 4*512, /* largest packet size */
64 AESCCMP_N_RESERVED = 0, /* reserved nonce octet value */
65 AESCCMP_A_DATA = 0x40, /* the Adata bit in the flags */
66 AESCCMP_M_SHIFT = 3, /* how much to shift the 3-bit M field */
67 AESCCMP_L_SHIFT = 0, /* how much to shift the 3-bit L field */
68 AESCCMP_L_SIZE = 2, /* size of the l(m) length field (in octets) */
69 AESCCMP_OFFSET_SC = 22,
70 AESCCMP_OFFSET_DURATION = 4,
71 AESCCMP_OFFSET_A2 = 10,
72 AESCCMP_OFFSET_A4 = 24,
73 AESCCMP_QC_TID_MASK = 0x0f,
74 AESCCMP_BLK_SIZE_TOTAL = 16*16, /* Added by Annie for CKIP AES MIC BSOD, 2006-08-17. */
75 /* 16*8 < 4*60 Resove to 16*16 */
80 #define PTK_LEN_TKIP 64
82 #define KEY_NONCE_LEN 32
86 struct chnl_txpower_triple {
93 /* ===== Below this line is sync from SD7 driver COMMON/bt_hci.h ===== */
94 /* The following is for BT 3.0 + HS HCI COMMAND ERRORS CODES */
96 #define Max80211PALPDUSize 1492
97 #define Max80211AMPASSOCLen 672
98 #define MinGUserPrio 4
99 #define MaxGUserPrio 7
100 #define BEUserPrio0 0
101 #define BEUserPrio1 3
102 #define Max80211BeaconPeriod 2000
103 #define ShortRangeModePowerMax 4
105 #define BT_Default_Chnl 10
106 #define ACLDataHeaderLen 4
108 #define BTTotalDataBlockNum 0x100
109 #define BTLocalBufNum 0x200
110 #define BTMaxDataBlockLen 0x800
111 #define BTTOTALBANDWIDTH 0x7530
112 #define BTMAXBANDGUBANDWIDTH 0x4e20
113 #define TmpLocalBufSize 0x100
114 #define BTSynDataPacketLength 0xff
117 #define BTMaxAuthCount 5
118 #define BTMaxAsocCount 5
120 #define MAX_LOGICAL_LINK_NUM 2 /* temporarily define */
121 #define MAX_BT_ASOC_ENTRY_NUM 2 /* temporarily define */
123 #define INVALID_PL_HANDLE 0xff
124 #define INVALID_ENTRY_NUM 0xff
127 #define CAM_BT_START_INDEX (HALF_CAM_ENTRY - 4) /* MAX_BT_ASOC_ENTRY_NUM : 4 !!! */
128 #define BT_HWCAM_STAR CAM_BT_START_INDEX /* We used HALF_CAM_ENTRY ~ HALF_CAM_ENTRY -MAX_BT_ASOC_ENTRY_NUM */
131 HCI_STATUS_SUCCESS = 0x00, /* Success */
132 HCI_STATUS_UNKNOW_HCI_CMD = 0x01, /* Unknown HCI Command */
133 HCI_STATUS_UNKNOW_CONNECT_ID = 0X02, /* Unknown Connection Identifier */
134 HCI_STATUS_HW_FAIL = 0X03, /* Hardware Failure */
135 HCI_STATUS_PAGE_TIMEOUT = 0X04, /* Page Timeout */
136 HCI_STATUS_AUTH_FAIL = 0X05, /* Authentication Failure */
137 HCI_STATUS_PIN_OR_KEY_MISSING = 0X06, /* PIN or Key Missing */
138 HCI_STATUS_MEM_CAP_EXCEED = 0X07, /* Memory Capacity Exceeded */
139 HCI_STATUS_CONNECT_TIMEOUT = 0X08, /* Connection Timeout */
140 HCI_STATUS_CONNECT_LIMIT = 0X09, /* Connection Limit Exceeded */
141 HCI_STATUS_SYN_CONNECT_LIMIT = 0X0a, /* Synchronous Connection Limit To A Device Exceeded */
142 HCI_STATUS_ACL_CONNECT_EXISTS = 0X0b, /* ACL Connection Already Exists */
143 HCI_STATUS_CMD_DISALLOW = 0X0c, /* Command Disallowed */
144 HCI_STATUS_CONNECT_RJT_LIMIT_RESOURCE = 0X0d, /* Connection Rejected due to Limited Resources */
145 HCI_STATUS_CONNECT_RJT_SEC_REASON = 0X0e, /* Connection Rejected Due To Security Reasons */
146 HCI_STATUS_CONNECT_RJT_UNACCEPT_BD_ADDR = 0X0f, /* Connection Rejected due to Unacceptable BD_ADDR */
147 HCI_STATUS_CONNECT_ACCEPT_TIMEOUT = 0X10, /* Connection Accept Timeout Exceeded */
148 HCI_STATUS_UNSUPPORT_FEATURE_PARA_VALUE = 0X11, /* Unsupported Feature or Parameter Value */
149 HCI_STATUS_INVALID_HCI_CMD_PARA_VALUE = 0X12, /* Invalid HCI Command Parameters */
150 HCI_STATUS_REMOTE_USER_TERMINATE_CONNECT = 0X13, /* Remote User Terminated Connection */
151 HCI_STATUS_REMOTE_DEV_TERMINATE_LOW_RESOURCE = 0X14, /* Remote Device Terminated Connection due to Low Resources */
152 HCI_STATUS_REMOTE_DEV_TERMINATE_CONNECT_POWER_OFF = 0X15, /* Remote Device Terminated Connection due to Power Off */
153 HCI_STATUS_CONNECT_TERMINATE_LOCAL_HOST = 0X16, /* Connection Terminated By Local Host */
154 HCI_STATUS_REPEATE_ATTEMPT = 0X17, /* Repeated Attempts */
155 HCI_STATUS_PAIR_NOT_ALLOW = 0X18, /* Pairing Not Allowed */
156 HCI_STATUS_UNKNOW_LMP_PDU = 0X19, /* Unknown LMP PDU */
157 HCI_STATUS_UNSUPPORT_REMOTE_LMP_FEATURE = 0X1a, /* Unsupported Remote Feature / Unsupported LMP Feature */
158 HCI_STATUS_SOC_OFFSET_REJECT = 0X1b, /* SCO Offset Rejected */
159 HCI_STATUS_SOC_INTERVAL_REJECT = 0X1c, /* SCO Interval Rejected */
160 HCI_STATUS_SOC_AIR_MODE_REJECT = 0X1d,/* SCO Air Mode Rejected */
161 HCI_STATUS_INVALID_LMP_PARA = 0X1e, /* Invalid LMP Parameters */
162 HCI_STATUS_UNSPECIFIC_ERROR = 0X1f, /* Unspecified Error */
163 HCI_STATUS_UNSUPPORT_LMP_PARA_VALUE = 0X20, /* Unsupported LMP Parameter Value */
164 HCI_STATUS_ROLE_CHANGE_NOT_ALLOW = 0X21, /* Role Change Not Allowed */
165 HCI_STATUS_LMP_RESPONSE_TIMEOUT = 0X22, /* LMP Response Timeout */
166 HCI_STATUS_LMP_ERROR_TRANSACTION_COLLISION = 0X23, /* LMP Error Transaction Collision */
167 HCI_STATUS_LMP_PDU_NOT_ALLOW = 0X24, /* LMP PDU Not Allowed */
168 HCI_STATUS_ENCRYPTION_MODE_NOT_ALLOW = 0X25, /* Encryption Mode Not Acceptable */
169 HCI_STATUS_LINK_KEY_CAN_NOT_CHANGE = 0X26, /* Link Key Can Not be Changed */
170 HCI_STATUS_REQUEST_QOS_NOT_SUPPORT = 0X27, /* Requested QoS Not Supported */
171 HCI_STATUS_INSTANT_PASSED = 0X28, /* Instant Passed */
172 HCI_STATUS_PAIRING_UNIT_KEY_NOT_SUPPORT = 0X29, /* Pairing With Unit Key Not Supported */
173 HCI_STATUS_DIFFERENT_TRANSACTION_COLLISION = 0X2a, /* Different Transaction Collision */
174 HCI_STATUS_RESERVE_1 = 0X2b, /* Reserved */
175 HCI_STATUS_QOS_UNACCEPT_PARA = 0X2c, /* QoS Unacceptable Parameter */
176 HCI_STATUS_QOS_REJECT = 0X2d, /* QoS Rejected */
177 HCI_STATUS_CHNL_CLASSIFICATION_NOT_SUPPORT = 0X2e, /* Channel Classification Not Supported */
178 HCI_STATUS_INSUFFICIENT_SECURITY = 0X2f, /* Insufficient Security */
179 HCI_STATUS_PARA_OUT_OF_RANGE = 0x30, /* Parameter Out Of Mandatory Range */
180 HCI_STATUS_RESERVE_2 = 0X31, /* Reserved */
181 HCI_STATUS_ROLE_SWITCH_PENDING = 0X32, /* Role Switch Pending */
182 HCI_STATUS_RESERVE_3 = 0X33, /* Reserved */
183 HCI_STATUS_RESERVE_SOLT_VIOLATION = 0X34, /* Reserved Slot Violation */
184 HCI_STATUS_ROLE_SWITCH_FAIL = 0X35, /* Role Switch Failed */
185 HCI_STATUS_EXTEND_INQUIRY_RSP_TOO_LARGE = 0X36, /* Extended Inquiry Response Too Large */
186 HCI_STATUS_SEC_SIMPLE_PAIRING_NOT_SUPPORT = 0X37, /* Secure Simple Pairing Not Supported By Host. */
187 HCI_STATUS_HOST_BUSY_PAIRING = 0X38, /* Host Busy - Pairing */
188 HCI_STATUS_CONNECT_REJ_NOT_SUIT_CHNL_FOUND = 0X39, /* Connection Rejected due to No Suitable Channel Found */
189 HCI_STATUS_CONTROLLER_BUSY = 0X3a /* CONTROLLER BUSY */
193 /* The following is for BT 3.0 + HS HCI COMMAND */
196 /* bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
201 #define LINK_CONTROL_COMMANDS 0x01
202 enum link_control_commands {
203 HCI_INQUIRY = 0x0001,
204 HCI_INQUIRY_CANCEL = 0x0002,
205 HCI_PERIODIC_INQUIRY_MODE = 0x0003,
206 HCI_EXIT_PERIODIC_INQUIRY_MODE = 0x0004,
207 HCI_CREATE_CONNECTION = 0x0005,
208 HCI_DISCONNECT = 0x0006,
209 HCI_CREATE_CONNECTION_CANCEL = 0x0008,
210 HCI_ACCEPT_CONNECTIONREQUEST = 0x0009,
211 HCI_REJECT_CONNECTION_REQUEST = 0x000a,
212 HCI_LINK_KEY_REQUEST_REPLY = 0x000b,
213 HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY = 0x000c,
214 HCI_PIN_CODE_REQUEST_REPLY = 0x000d,
215 HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY = 0x000e,
216 HCI_CHANGE_CONNECTION_PACKET_TYPE = 0x000f,
217 HCI_AUTHENTICATION_REQUESTED = 0x0011,
218 HCI_SET_CONNECTION_ENCRYPTION = 0x0013,
219 HCI_CHANGE_CONNECTION_LINK_KEY = 0x0015,
220 HCI_MASTER_LINK_KEY = 0x0017,
221 HCI_REMOTE_NAME_REQUEST = 0x0019,
222 HCI_REMOTE_NAME_REQUEST_CANCEL = 0x001a,
223 HCI_READ_REMOTE_SUPPORTED_FEATURES = 0x001b,
224 HCI_READ_REMOTE_EXTENDED_FEATURES = 0x001c,
225 HCI_READ_REMOTE_VERSION_INFORMATION = 0x001d,
226 HCI_READ_CLOCK_OFFSET = 0x001f,
227 HCI_READ_LMP_HANDLE = 0x0020,
228 HCI_SETUP_SYNCHRONOUS_CONNECTION = 0x0028,
229 HCI_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST = 0x0029,
230 HCI_REJECT_SYNCHRONOUS_CONNECTION_REQUEST = 0x002a,
231 HCI_IO_CAPABILITY_REQUEST_REPLY = 0x002b,
232 HCI_USER_CONFIRMATION_REQUEST_REPLY = 0x002c,
233 HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY = 0x002d,
234 HCI_USER_PASSKEY_REQUEST_REPLY = 0x002e,
235 HCI_USER_PASSKEY_REQUESTNEGATIVE_REPLY = 0x002f,
236 HCI_REMOTE_OOB_DATA_REQUEST_REPLY = 0x0030,
237 HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY = 0x0033,
238 HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY = 0x0034,
239 HCI_CREATE_PHYSICAL_LINK = 0x0035,
240 HCI_ACCEPT_PHYSICAL_LINK = 0x0036,
241 HCI_DISCONNECT_PHYSICAL_LINK = 0x0037,
242 HCI_CREATE_LOGICAL_LINK = 0x0038,
243 HCI_ACCEPT_LOGICAL_LINK = 0x0039,
244 HCI_DISCONNECT_LOGICAL_LINK = 0x003a,
245 HCI_LOGICAL_LINK_CANCEL = 0x003b,
246 HCI_FLOW_SPEC_MODIFY = 0x003c
250 #define HOLD_MODE_COMMAND 0x02
251 enum hold_mode_command {
252 HCI_HOLD_MODE = 0x0001,
253 HCI_SNIFF_MODE = 0x0002,
254 HCI_EXIT_SNIFF_MODE = 0x0003,
255 HCI_PARK_STATE = 0x0005,
256 HCI_EXIT_PARK_STATE = 0x0006,
257 HCI_QOS_SETUP = 0x0007,
258 HCI_ROLE_DISCOVERY = 0x0009,
259 HCI_SWITCH_ROLE = 0x000b,
260 HCI_READ_LINK_POLICY_SETTINGS = 0x000c,
261 HCI_WRITE_LINK_POLICY_SETTINGS = 0x000d,
262 HCI_READ_DEFAULT_LINK_POLICY_SETTINGS = 0x000e,
263 HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS = 0x000f,
264 HCI_FLOW_SPECIFICATION = 0x0010,
265 HCI_SNIFF_SUBRATING = 0x0011
269 #define OGF_SET_EVENT_MASK_COMMAND 0x03
270 enum set_event_mask_command {
271 HCI_SET_EVENT_MASK = 0x0001,
273 HCI_SET_EVENT_FILTER = 0x0005,
275 HCI_READ_PIN_TYPE = 0x0009,
276 HCI_WRITE_PIN_TYPE = 0x000a,
277 HCI_CREATE_NEW_UNIT_KEY = 0x000b,
278 HCI_READ_STORED_LINK_KEY = 0x000d,
279 HCI_WRITE_STORED_LINK_KEY = 0x0011,
280 HCI_DELETE_STORED_LINK_KEY = 0x0012,
281 HCI_WRITE_LOCAL_NAME = 0x0013,
282 HCI_READ_LOCAL_NAME = 0x0014,
283 HCI_READ_CONNECTION_ACCEPT_TIMEOUT = 0x0015,
284 HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT = 0x0016,
285 HCI_READ_PAGE_TIMEOUT = 0x0017,
286 HCI_WRITE_PAGE_TIMEOUT = 0x0018,
287 HCI_READ_SCAN_ENABLE = 0x0019,
288 HCI_WRITE_SCAN_ENABLE = 0x001a,
289 HCI_READ_PAGE_SCAN_ACTIVITY = 0x001b,
290 HCI_WRITE_PAGE_SCAN_ACTIVITY = 0x001c,
291 HCI_READ_INQUIRY_SCAN_ACTIVITY = 0x001d,
292 HCI_WRITE_INQUIRY_SCAN_ACTIVITY = 0x001e,
293 HCI_READ_AUTHENTICATION_ENABLE = 0x001f,
294 HCI_WRITE_AUTHENTICATION_ENABLE = 0x0020,
295 HCI_READ_CLASS_OF_DEVICE = 0x0023,
296 HCI_WRITE_CLASS_OF_DEVICE = 0x0024,
297 HCI_READ_VOICE_SETTING = 0x0025,
298 HCI_WRITE_VOICE_SETTING = 0x0026,
299 HCI_READ_AUTOMATIC_FLUSH_TIMEOUT = 0x0027,
300 HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT = 0x0028,
301 HCI_READ_NUM_BROADCAST_RETRANSMISSIONS = 0x0029,
302 HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS = 0x002a,
303 HCI_READ_HOLD_MODE_ACTIVITY = 0x002b,
304 HCI_WRITE_HOLD_MODE_ACTIVITY = 0x002c,
305 HCI_READ_SYNCHRONOUS_FLOW_CONTROL_ENABLE = 0x002e,
306 HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE = 0x002f,
307 HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL = 0x0031,
308 HCI_HOST_BUFFER_SIZE = 0x0033,
309 HCI_HOST_NUMBER_OF_COMPLETED_PACKETS = 0x0035,
310 HCI_READ_LINK_SUPERVISION_TIMEOUT = 0x0036,
311 HCI_WRITE_LINK_SUPERVISION_TIMEOUT = 0x0037,
312 HCI_READ_NUMBER_OF_SUPPORTED_IAC = 0x0038,
313 HCI_READ_CURRENT_IAC_LAP = 0x0039,
314 HCI_WRITE_CURRENT_IAC_LAP = 0x003a,
315 HCI_READ_PAGE_SCAN_MODE = 0x003d,
316 HCI_WRITE_PAGE_SCAN_MODE = 0x003e,
317 HCI_SET_AFH_HOST_CHANNEL_CLASSIFICATION = 0x003f,
318 HCI_READ_INQUIRY_SCAN_TYPE = 0x0042,
319 HCI_WRITE_INQUIRY_SCAN_TYPE = 0x0043,
320 HCI_READ_INQUIRY_MODE = 0x0044,
321 HCI_WRITE_INQUIRY_MODE = 0x0045,
322 HCI_READ_PAGE_SCAN_TYPE = 0x0046,
323 HCI_WRITE_PAGE_SCAN_TYPE = 0x0047,
324 HCI_READ_AFH_CHANNEL_ASSESSMENT_MODE = 0x0048,
325 HCI_WRITE_AFH_CHANNEL_ASSESSMENT_MODE = 0x0049,
326 HCI_READ_EXTENDED_INQUIRY_RESPONSE = 0x0051,
327 HCI_WRITE_EXTENDED_INQUIRY_RESPONSE = 0x0052,
328 HCI_REFRESH_ENCRYPTION_KEY = 0x0053,
329 HCI_READ_SIMPLE_PAIRING_MODE = 0x0055,
330 HCI_WRITE_SIMPLE_PAIRING_MODE = 0x0056,
331 HCI_READ_LOCAL_OOB_DATA = 0x0057,
332 HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL = 0x0058,
333 HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL = 0x0059,
334 HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING = 0x005a,
335 HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING = 0x005b,
336 HCI_ENHANCED_FLUSH = 0x005f,
337 HCI_SEND_KEYPRESS_NOTIFICATION = 0x0060,
338 HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0061,
339 HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0062,
340 HCI_SET_EVENT_MASK_PAGE_2 = 0x0063,
341 HCI_READ_LOCATION_DATA = 0x0064,
342 HCI_WRITE_LOCATION_DATA = 0x0065,
343 HCI_READ_FLOW_CONTROL_MODE = 0x0066,
344 HCI_WRITE_FLOW_CONTROL_MODE = 0x0067,
345 HCI_READ_ENHANCE_TRANSMIT_POWER_LEVEL = 0x0068,
346 HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT = 0x0069,
347 HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT = 0x006a,
348 HCI_SHORT_RANGE_MODE = 0x006b
352 #define OGF_INFORMATIONAL_PARAMETERS 0x04
353 enum informational_params {
354 HCI_READ_LOCAL_VERSION_INFORMATION = 0x0001,
355 HCI_READ_LOCAL_SUPPORTED_COMMANDS = 0x0002,
356 HCI_READ_LOCAL_SUPPORTED_FEATURES = 0x0003,
357 HCI_READ_LOCAL_EXTENDED_FEATURES = 0x0004,
358 HCI_READ_BUFFER_SIZE = 0x0005,
359 HCI_READ_BD_ADDR = 0x0009,
360 HCI_READ_DATA_BLOCK_SIZE = 0x000a
364 #define OGF_STATUS_PARAMETERS 0x05
366 HCI_READ_FAILED_CONTACT_COUNTER = 0x0001,
367 HCI_RESET_FAILED_CONTACT_COUNTER = 0x0002,
368 HCI_READ_LINK_QUALITY = 0x0003,
369 HCI_READ_RSSI = 0x0005,
370 HCI_READ_AFH_CHANNEL_MAP = 0x0006,
371 HCI_READ_CLOCK = 0x0007,
372 HCI_READ_ENCRYPTION_KEY_SIZE = 0x0008,
373 HCI_READ_LOCAL_AMP_INFO = 0x0009,
374 HCI_READ_LOCAL_AMP_ASSOC = 0x000a,
375 HCI_WRITE_REMOTE_AMP_ASSOC = 0x000b
379 #define OGF_TESTING_COMMANDS 0x06
380 enum testing_commands {
381 HCI_READ_LOOPBACK_MODE = 0x0001,
382 HCI_WRITE_LOOPBACK_MODE = 0x0002,
383 HCI_ENABLE_DEVICE_UNDER_TEST_MODE = 0x0003,
384 HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE = 0x0004,
385 HCI_ENABLE_AMP_RECEIVER_REPORTS = 0x0007,
386 HCI_AMP_TEST_END = 0x0008,
387 HCI_AMP_TEST_COMMAND = 0x0009
391 #define OGF_EXTENSION 0X3f
392 enum hci_extension_commands {
393 HCI_SET_ACL_LINK_DATA_FLOW_MODE = 0x0010,
394 HCI_SET_ACL_LINK_STATUS = 0x0020,
395 HCI_SET_SCO_LINK_STATUS = 0x0030,
396 HCI_SET_RSSI_VALUE = 0x0040,
397 HCI_SET_CURRENT_BLUETOOTH_STATUS = 0x0041,
399 /* The following is for RTK8723 */
400 HCI_EXTENSION_VERSION_NOTIFY = 0x0100,
401 HCI_LINK_STATUS_NOTIFY = 0x0101,
402 HCI_BT_OPERATION_NOTIFY = 0x0102,
403 HCI_ENABLE_WIFI_SCAN_NOTIFY = 0x0103,
406 /* The following is for IVT */
407 HCI_WIFI_CURRENT_CHANNEL = 0x0300,
408 HCI_WIFI_CURRENT_BANDWIDTH = 0x0301,
409 HCI_WIFI_CONNECTION_STATUS = 0x0302,
413 BT_SPEC_1_0_b = 0x00,
416 BT_SPEC_2_0_EDR = 0x03,
417 BT_SPEC_2_1_EDR = 0x04,
418 BT_SPEC_3_0_HS = 0x05,
422 /* The following is for BT 3.0 + HS EVENTS */
424 HCI_EVENT_INQUIRY_COMPLETE = 0x01,
425 HCI_EVENT_INQUIRY_RESULT = 0x02,
426 HCI_EVENT_CONNECTION_COMPLETE = 0x03,
427 HCI_EVENT_CONNECTION_REQUEST = 0x04,
428 HCI_EVENT_DISCONNECTION_COMPLETE = 0x05,
429 HCI_EVENT_AUTHENTICATION_COMPLETE = 0x06,
430 HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE = 0x07,
431 HCI_EVENT_ENCRYPTION_CHANGE = 0x08,
432 HCI_EVENT_CHANGE_LINK_KEY_COMPLETE = 0x09,
433 HCI_EVENT_MASTER_LINK_KEY_COMPLETE = 0x0a,
434 HCI_EVENT_READ_REMOTE_SUPPORT_FEATURES_COMPLETE = 0x0b,
435 HCI_EVENT_READ_REMOTE_VER_INFO_COMPLETE = 0x0c,
436 HCI_EVENT_QOS_SETUP_COMPLETE = 0x0d,
437 HCI_EVENT_COMMAND_COMPLETE = 0x0e,
438 HCI_EVENT_COMMAND_STATUS = 0x0f,
439 HCI_EVENT_HARDWARE_ERROR = 0x10,
440 HCI_EVENT_FLUSH_OCCRUED = 0x11,
441 HCI_EVENT_ROLE_CHANGE = 0x12,
442 HCI_EVENT_NUMBER_OF_COMPLETE_PACKETS = 0x13,
443 HCI_EVENT_MODE_CHANGE = 0x14,
444 HCI_EVENT_RETURN_LINK_KEYS = 0x15,
445 HCI_EVENT_PIN_CODE_REQUEST = 0x16,
446 HCI_EVENT_LINK_KEY_REQUEST = 0x17,
447 HCI_EVENT_LINK_KEY_NOTIFICATION = 0x18,
448 HCI_EVENT_LOOPBACK_COMMAND = 0x19,
449 HCI_EVENT_DATA_BUFFER_OVERFLOW = 0x1a,
450 HCI_EVENT_MAX_SLOTS_CHANGE = 0x1b,
451 HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE = 0x1c,
452 HCI_EVENT_CONNECT_PACKET_TYPE_CHANGE = 0x1d,
453 HCI_EVENT_QOS_VIOLATION = 0x1e,
454 HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE = 0x20,
455 HCI_EVENT_FLOW_SEPC_COMPLETE = 0x21,
456 HCI_EVENT_INQUIRY_RESULT_WITH_RSSI = 0x22,
457 HCI_EVENT_READ_REMOTE_EXT_FEATURES_COMPLETE = 0x23,
458 HCI_EVENT_SYNC_CONNECT_COMPLETE = 0x2c,
459 HCI_EVENT_SYNC_CONNECT_CHANGE = 0x2d,
460 HCI_EVENT_SNIFFER_SUBRATING = 0x2e,
461 HCI_EVENT_EXTENTED_INQUIRY_RESULT = 0x2f,
462 HCI_EVENT_ENCRYPTION_KEY_REFLASH_COMPLETE = 0x30,
463 HCI_EVENT_IO_CAPIBILITY_COMPLETE = 0x31,
464 HCI_EVENT_IO_CAPIBILITY_RESPONSE = 0x32,
465 HCI_EVENT_USER_CONFIRMTION_REQUEST = 0x33,
466 HCI_EVENT_USER_PASSKEY_REQUEST = 0x34,
467 HCI_EVENT_REMOTE_OOB_DATA_REQUEST = 0x35,
468 HCI_EVENT_SIMPLE_PAIRING_COMPLETE = 0x36,
469 HCI_EVENT_LINK_SUPERVISION_TIMEOUT_CHANGE = 0x38,
470 HCI_EVENT_ENHANCED_FLUSH_COMPLETE = 0x39,
471 HCI_EVENT_USER_PASSKEY_NOTIFICATION = 0x3b,
472 HCI_EVENT_KEYPRESS_NOTIFICATION = 0x3c,
473 HCI_EVENT_REMOTE_HOST_SUPPORT_FEATURES_NOTIFICATION = 0x3d,
474 HCI_EVENT_PHY_LINK_COMPLETE = 0x40,
475 HCI_EVENT_CHANNEL_SELECT = 0x41,
476 HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE = 0x42,
477 HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING = 0x43,
478 HCI_EVENT_PHY_LINK_RECOVER = 0x44,
479 HCI_EVENT_LOGICAL_LINK_COMPLETE = 0x45,
480 HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE = 0x46,
481 HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE = 0x47,
482 HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS = 0x48,
483 HCI_EVENT_AMP_START_TEST = 0x49,
484 HCI_EVENT_AMP_TEST_END = 0x4a,
485 HCI_EVENT_AMP_RECEIVER_REPORT = 0x4b,
486 HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE = 0x4c,
487 HCI_EVENT_AMP_STATUS_CHANGE = 0x4d,
488 HCI_EVENT_EXTENSION_RTK = 0xfe,
489 HCI_EVENT_EXTENSION_MOTO = 0xff,
492 enum hci_extension_event_moto {
493 HCI_EVENT_GET_BT_RSSI = 0x01,
496 enum hci_extension_event {
497 HCI_EVENT_EXT_WIFI_SCAN_NOTIFY = 0x01,
500 enum hci_event_mask_page_2 {
501 EMP2_HCI_EVENT_PHY_LINK_COMPLETE = 0x0000000000000001,
502 EMP2_HCI_EVENT_CHANNEL_SELECT = 0x0000000000000002,
503 EMP2_HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE = 0x0000000000000004,
504 EMP2_HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING = 0x0000000000000008,
505 EMP2_HCI_EVENT_PHY_LINK_RECOVER = 0x0000000000000010,
506 EMP2_HCI_EVENT_LOGICAL_LINK_COMPLETE = 0x0000000000000020,
507 EMP2_HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE = 0x0000000000000040,
508 EMP2_HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE = 0x0000000000000080,
509 EMP2_HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS = 0x0000000000000100,
510 EMP2_HCI_EVENT_AMP_START_TEST = 0x0000000000000200,
511 EMP2_HCI_EVENT_AMP_TEST_END = 0x0000000000000400,
512 EMP2_HCI_EVENT_AMP_RECEIVER_REPORT = 0x0000000000000800,
513 EMP2_HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE = 0x0000000000001000,
514 EMP2_HCI_EVENT_AMP_STATUS_CHANGE = 0x0000000000002000,
517 enum hci_state_machine {
518 HCI_STATE_STARTING = 0x01,
519 HCI_STATE_CONNECTING = 0x02,
520 HCI_STATE_AUTHENTICATING = 0x04,
521 HCI_STATE_CONNECTED = 0x08,
522 HCI_STATE_DISCONNECTING = 0x10,
523 HCI_STATE_DISCONNECTED = 0x20
526 enum amp_assoc_structure_type {
528 AMP_PREFERRED_CHANNEL_LIST = 0x02,
529 AMP_CONNECTED_CHANNEL = 0x03,
530 AMP_80211_PAL_CAP_LIST = 0x04,
531 AMP_80211_PAL_VISION = 0x05,
532 AMP_RESERVED_FOR_TESTING = 0x33
541 enum hci_state_with_cmd {
542 STATE_CMD_CREATE_PHY_LINK,
543 STATE_CMD_ACCEPT_PHY_LINK,
544 STATE_CMD_DISCONNECT_PHY_LINK,
545 STATE_CMD_CONNECT_ACCEPT_TIMEOUT,
546 STATE_CMD_MAC_START_COMPLETE,
547 STATE_CMD_MAC_START_FAILED,
548 STATE_CMD_MAC_CONNECT_COMPLETE,
549 STATE_CMD_MAC_CONNECT_FAILED,
550 STATE_CMD_MAC_DISCONNECT_INDICATE,
551 STATE_CMD_MAC_CONNECT_CANCEL_INDICATE,
552 STATE_CMD_4WAY_FAILED,
553 STATE_CMD_4WAY_SUCCESSED,
554 STATE_CMD_ENTER_STATE,
555 STATE_CMD_NO_SUCH_CMD,
558 enum hci_service_type {
564 enum hci_traffic_mode {
565 TRAFFIC_MODE_BEST_EFFORT = 0x00,
566 TRAFFIC_MODE_GUARANTEED_LATENCY = 0x01,
567 TRAFFIC_MODE_GUARANTEED_BANDWIDTH = 0x02,
568 TRAFFIC_MODE_GUARANTEED_LATENCY_AND_BANDWIDTH = 0x03
571 #define HCIOPCODE(_OCF, _OGF) (_OGF<<10|_OCF)
572 #define HCIOPCODELOW(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF)&0x00ff)
573 #define HCIOPCODEHIGHT(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF)>>8)
575 #define TWOBYTE_HIGHTBYTE(_DATA) (u8)(_DATA>>8)
576 #define TWOBYTE_LOWBYTE(_DATA) (u8)(_DATA)
579 AMP_STATUS_AVA_PHY_PWR_DWN = 0x0,
580 AMP_STATUS_BT_USE_ONLY = 0x1,
581 AMP_STATUS_NO_CAPACITY_FOR_BT = 0x2,
582 AMP_STATUS_LOW_CAPACITY_FOR_BT = 0x3,
583 AMP_STATUS_MEDIUM_CAPACITY_FOR_BT = 0x4,
584 AMP_STATUS_HIGH_CAPACITY_FOR_BT = 0x5,
585 AMP_STATUS_FULL_CAPACITY_FOR_BT = 0x6
588 enum bt_wpa_msg_type {
596 enum bt_connect_type {
597 BT_CONNECT_AUTH_REQ = 0x00,
598 BT_CONNECT_AUTH_RSP = 0x01,
599 BT_CONNECT_ASOC_REQ = 0x02,
600 BT_CONNECT_ASOC_RSP = 0x03,
604 enum bt_ll_service_type {
609 enum bt_ll_flowspec {
610 BT_TX_BE_FS, /* TX best effort flowspec */
611 BT_RX_BE_FS, /* RX best effort flowspec */
612 BT_TX_GU_FS, /* TX guaranteed latency flowspec */
613 BT_RX_GU_FS, /* RX guaranteed latency flowspec */
614 BT_TX_BE_AGG_FS, /* TX aggregated best effort flowspec */
615 BT_RX_BE_AGG_FS, /* RX aggregated best effort flowspec */
616 BT_TX_GU_BW_FS, /* TX guaranteed bandwidth flowspec */
617 BT_RX_GU_BW_FS, /* RX guaranteed bandwidth flowspec */
618 BT_TX_GU_LARGE_FS, /* TX guaranteed latency flowspec, for testing only */
619 BT_RX_GU_LARGE_FS, /* RX guaranteed latency flowspec, for testing only */
622 enum bt_traffic_mode {
623 BT_MOTOR_EXT_BE = 0x00, /* Best Effort. Default. for HCRP, PAN, SDP, RFCOMM-based profiles like FTP, OPP, SPP, DUN, etc. */
624 BT_MOTOR_EXT_GUL = 0x01, /* Guaranteed Latency. This type of traffic is used e.g. for HID and AVRCP. */
625 BT_MOTOR_EXT_GUB = 0X02, /* Guaranteed Bandwidth. */
626 BT_MOTOR_EXT_GULB = 0X03 /* Guaranteed Latency and Bandwidth. for A2DP and VDP. */
629 enum bt_traffic_mode_profile {
642 enum bt_state_wpa_auth {
643 STATE_WPA_AUTH_UNINITIALIZED,
644 STATE_WPA_AUTH_WAIT_PACKET_1, /* Join */
645 STATE_WPA_AUTH_WAIT_PACKET_2, /* Creat */
646 STATE_WPA_AUTH_WAIT_PACKET_3,
647 STATE_WPA_AUTH_WAIT_PACKET_4,
648 STATE_WPA_AUTH_SUCCESSED
651 #define BT_WPA_AUTH_TIMEOUT_PERIOD 1000
652 #define BTMaxWPAAuthReTransmitCoun 5
654 #define MAX_AMP_ASSOC_FRAG_LEN 248
655 #define TOTAL_ALLOCIATE_ASSOC_LEN 1000
657 struct hci_flow_spec {
661 u32 SDUInterArrivalTime;
666 struct hci_log_link_cmd_data {
670 struct hci_flow_spec Tx_Flow_Spec;
671 struct hci_flow_spec Rx_Flow_Spec;
673 u32 BestEffortFlushTimeout;
675 u8 bLLCompleteEventIsSet;
677 u8 bLLCancelCMDIsSetandComplete;
680 struct hci_phy_link_cmd_data {
681 /* Physical_Link_Handle */
684 u16 LinkSuperversionTimeout;
686 /* u16 SuperTimeOutCnt; */
688 /* Dedicated_AMP_Key_Length */
690 /* Dedicated_AMP_Key_Type */
692 /* Dedicated_AMP_Key */
693 u8 BtAMPKey[PMK_LEN];
696 struct amp_assoc_structure {
705 struct amp_pref_chnl_regulatory {
711 struct amp_assoc_cmd_data {
712 /* Physical_Link_Handle */
717 u16 MaxRemoteASSOCLen;
718 /* AMP_ASSOC_Remaining_Length */
720 /* AMP_ASSOC_fragment */
721 void *AMPAssocfragment;
724 struct hci_link_info {
726 u8 IncomingTrafficMode;
727 u8 OutgoingTrafficMode;
735 struct hci_ext_config {
736 struct hci_link_info linkInfo[MAX_BT_ASOC_ENTRY_NUM];
738 u16 CurrentConnectHandle;
739 u8 CurrentIncomingTrafficMode;
740 u8 CurrentOutgoingTrafficMode;
747 /* Bt coexist related */
753 u8 bEnableWifiScanNotify;
755 u8 bHoldForBtOperation;
759 struct hci_acl_packet_data {
760 u16 ACLDataPacketLen;
761 u8 SyncDataPacketLen;
762 u16 TotalNumACLDataPackets;
763 u16 TotalSyncNumDataPackets;
766 struct hci_phy_link_bss_info {
767 u16 bdCap; /* capability information */
770 struct packet_irp_hcicmd_data {
777 struct bt_asoc_entry {
782 struct hci_phy_link_cmd_data PhyLinkCmdData;
784 struct hci_log_link_cmd_data LogLinkCmdData[MAX_LOGICAL_LINK_NUM];
786 struct hci_acl_packet_data ACLPacketsData;
788 struct amp_assoc_cmd_data AmpAsocCmdData;
789 struct octet_string BTSsid;
792 enum hci_status PhyLinkDisconnectReason;
794 u8 bSendSupervisionPacket;
795 /* u8 CurrentSuervisionPacketSendNum; */
796 /* u8 LastSuervisionPacketSendNum; */
798 /* Is Creator or Joiner */
799 enum amp_btap_type AMPRole;
801 /* BT current state */
806 u8 bNeedPhysLinkCompleteEvent;
808 enum hci_status PhysLinkCompleteStatus;
810 u8 BTRemoteMACAddr[6];
814 u8 SyncDataPacketLen;
816 u16 TotalSyncNumDataPackets;
817 u16 TotalNumACLDataPackets;
821 u8 PTK[PTK_LEN_TKIP];
823 u8 ANonce[KEY_NONCE_LEN];
824 u8 SNonce[KEY_NONCE_LEN];
825 u64 KeyReplayCounter;
826 u8 WPAAuthReplayCount;
827 u8 AESKeyBuf[AESCCMP_BLK_SIZE_TOTAL];
829 enum bt_state_wpa_auth BTWPAAuthState;
830 s32 UndecoratedSmoothedPWDB;
832 /* Add for HW security !! */
833 u8 HwCAMIndex; /* Cam index */
839 struct bt_traffic_statistics {
843 u32 TxPktCntInPeriod;
844 u32 RxPktCntInPeriod;
845 u64 TxPktLenInPeriod;
846 u64 RxPktLenInPeriod;
850 u8 bBTConnectInProgress;
851 u8 bLogLinkInProgress;
852 u8 bPhyLinkInProgress;
853 u8 bPhyLinkInProgressStartLL;
854 u8 BtCurrentPhyLinkhandle;
855 u16 BtCurrentLogLinkhandle;
856 u8 CurrentConnectEntryNum;
857 u8 DisconnectEntryNum;
858 u8 CurrentBTConnectionCnt;
859 enum bt_connect_type BTCurrentConnectType;
860 enum bt_connect_type BTReceiveConnectPkt;
863 u8 bStartSendSupervisionPkt;
865 u8 BTNeedAMPStatusChg;
866 u8 JoinerNeedSendAuth;
867 struct hci_phy_link_bss_info bssDesc;
868 struct hci_ext_config ExtConfig;
869 u8 bNeedNotifyAMPNoCap;
878 struct bt_hci_dgb_info {
880 u32 hciCmdCntUnknown;
881 u32 hciCmdCntCreatePhyLink;
882 u32 hciCmdCntAcceptPhyLink;
883 u32 hciCmdCntDisconnectPhyLink;
884 u32 hciCmdPhyLinkStatus;
885 u32 hciCmdCntCreateLogLink;
886 u32 hciCmdCntAcceptLogLink;
887 u32 hciCmdCntDisconnectLogLink;
888 u32 hciCmdCntReadLocalAmpAssoc;
889 u32 hciCmdCntWriteRemoteAmpAssoc;
890 u32 hciCmdCntSetAclLinkStatus;
891 u32 hciCmdCntSetScoLinkStatus;
892 u32 hciCmdCntExtensionVersionNotify;
893 u32 hciCmdCntLinkStatusNotify;
896 struct bt_irp_dgb_info {
901 u32 irpIoCtrlHciEvent;
902 u32 irpIoCtrlHciTxData;
903 u32 irpIoCtrlHciRxData;
904 u32 irpIoCtrlUnknown;
906 u32 irpIoCtrlHciTxData1s;
909 struct bt_packet_dgb_info {
912 u32 btPktRxProbReqFail;
917 u32 btPktRxAuthButDrop;
920 u32 btPktRxAssocReqButDrop;
934 u32 btPktTxLinkSuperReq;
935 u32 btPktRxLinkSuperReq;
936 u32 btPktTxLinkSuperRsp;
937 u32 btPktRxLinkSuperRsp;
945 struct bt_hci_dgb_info dbgHciInfo;
946 struct bt_irp_dgb_info dbgIrpInfo;
947 struct bt_packet_dgb_info dbgBtPkt;
951 /* 802.11 Pal version specifier */
956 /* Connected channel list */
957 u16 BTConnectChnlListLen;
958 u8 BTConnectChnllist[64];
960 /* Fail contact counter */
961 u16 FailContactCount;
965 u64 BTEventMaskPage2;
968 u16 ConnAcceptTimeout;
969 u16 LogicalAcceptTimeout;
972 u8 LocationDomainAware;
974 u8 LocationDomainOptions;
979 /* Preferred channel list */
980 u16 BtPreChnlListLen;
981 u8 BTPreChnllist[64];
983 u16 enFlush_LLH; /* enhanced flush handle */
984 u16 FLTO_LLH; /* enhanced flush handle */
987 /* Test command only. */
992 u8 TestReportInterval;
996 u16 TestNumOfErrFrame;
998 u16 TestNumOfErrBits;
1003 /* Add for check replay data */
1004 u8 LastRxUniFragNum;
1005 u16 LastRxUniSeqNum;
1007 /* s32 EntryMaxUndecoratedSmoothedPWDB; */
1008 /* s32 EntryMinUndecoratedSmoothedPWDB; */
1010 struct bt_traffic_statistics Bt30TrafficStatistics;
1013 #define RT_WORK_ITEM struct work_struct
1015 struct bt_security {
1017 * May need to remove to BTSecInfo ...
1018 * enum bt_state_wpa_auth BTWPAAuthState;
1020 struct octet_string RSNIE;
1021 u8 RSNIEBuf[MAXRSNIELEN];
1027 struct rtw_adapter *padapter;
1028 struct bt_asoc_entry BtAsocEntry[MAX_BT_ASOC_ENTRY_NUM];
1029 struct bt_mgnt BtMgnt;
1030 struct bt_dgb BtDbg;
1031 struct bt_hci_info BtHciInfo;
1032 struct bt_traffic BtTraffic;
1033 struct bt_security BtSec;
1034 RT_WORK_ITEM HCICmdWorkItem;
1035 struct timer_list BTHCICmdTimer;
1036 RT_WORK_ITEM BTPsDisableWorkItem;
1037 RT_WORK_ITEM BTConnectWorkItem;
1038 struct timer_list BTHCIDiscardAclDataTimer;
1039 struct timer_list BTHCIJoinTimeoutTimer;
1040 struct timer_list BTTestSendPacketTimer;
1041 struct timer_list BTDisconnectPhyLinkTimer;
1042 struct timer_list BTBeaconTimer;
1045 struct timer_list BTPsDisableTimer;
1050 struct packet_irp_acl_data {
1058 struct packet_irp_hcievent_data {
1064 struct common_triple {
1070 #define COUNTRY_STR_LEN 3 /* country string len = 3 */
1074 enum hci_wifi_connect_status {
1075 HCI_WIFI_NOT_CONNECTED = 0x0,
1076 HCI_WIFI_CONNECTED = 0x1,
1077 HCI_WIFI_CONNECT_IN_PROGRESS = 0x2,
1080 enum hci_ext_bp_operation {
1081 HCI_BT_OP_NONE = 0x0,
1082 HCI_BT_OP_INQUIRY_START = 0x1,
1083 HCI_BT_OP_INQUIRY_FINISH = 0x2,
1084 HCI_BT_OP_PAGING_START = 0x3,
1085 HCI_BT_OP_PAGING_SUCCESS = 0x4,
1086 HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
1087 HCI_BT_OP_PAIRING_START = 0x6,
1088 HCI_BT_OP_PAIRING_FINISH = 0x7,
1089 HCI_BT_OP_BT_DEV_ENABLE = 0x8,
1090 HCI_BT_OP_BT_DEV_DISABLE = 0x9,
1094 /* Function proto type */
1095 struct btdata_entry {
1096 struct list_head List;
1100 #define BTHCI_SM_WITH_INFO(_Adapter, _StateToEnter, _StateCmd, _EntryNum) \
1102 RTPRINT(FIOCTL, IOCTL_STATE, ("[BT state change] caused by ""%s"", line =%d\n", __FUNCTION__, __LINE__)); \
1103 BTHCI_StateMachine(_Adapter, _StateToEnter, _StateCmd, _EntryNum);\
1106 void BTHCI_EventParse(struct rtw_adapter * padapter, void *pEvntData, u32 dataLen);
1107 #define BT_EventParse BTHCI_EventParse
1108 u8 BTHCI_HsConnectionEstablished(struct rtw_adapter * padapter);
1109 void BTHCI_UpdateBTProfileRTKToMoto(struct rtw_adapter * padapter);
1110 void BTHCI_WifiScanNotify(struct rtw_adapter * padapter, u8 scanType);
1111 void BTHCI_StateMachine(struct rtw_adapter * padapter, u8 StateToEnter, enum hci_state_with_cmd StateCmd, u8 EntryNum);
1112 void BTHCI_DisconnectPeer(struct rtw_adapter * padapter, u8 EntryNum);
1113 void BTHCI_EventNumOfCompletedDataBlocks(struct rtw_adapter * padapter);
1114 void BTHCI_EventAMPStatusChange(struct rtw_adapter * padapter, u8 AMP_Status);
1115 void BTHCI_DisconnectAll(struct rtw_adapter * padapter);
1116 enum hci_status BTHCI_HandleHCICMD(struct rtw_adapter * padapter, struct packet_irp_hcicmd_data *pHciCmd);
1118 /* ===== End of sync from SD7 driver COMMON/bt_hci.h ===== */
1120 /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h ===== */
1121 #define GET_BT_INFO(padapter) (&GET_HAL_DATA(padapter)->BtInfo)
1123 #define BTC_FOR_SCAN_START 1
1124 #define BTC_FOR_SCAN_FINISH 0
1126 #define BT_TXRX_CNT_THRES_1 1200
1127 #define BT_TXRX_CNT_THRES_2 1400
1128 #define BT_TXRX_CNT_THRES_3 3000
1129 #define BT_TXRX_CNT_LEVEL_0 0 /* < 1200 */
1130 #define BT_TXRX_CNT_LEVEL_1 1 /* >= 1200 && < 1400 */
1131 #define BT_TXRX_CNT_LEVEL_2 2 /* >= 1400 */
1132 #define BT_TXRX_CNT_LEVEL_3 3 /* >= 3000 */
1134 enum bt_state_1ant {
1135 BT_INFO_STATE_DISABLED = 0,
1136 BT_INFO_STATE_NO_CONNECTION = 1,
1137 BT_INFO_STATE_CONNECT_IDLE = 2,
1138 BT_INFO_STATE_INQ_OR_PAG = 3,
1139 BT_INFO_STATE_ACL_ONLY_BUSY = 4,
1140 BT_INFO_STATE_SCO_ONLY_BUSY = 5,
1141 BT_INFO_STATE_ACL_SCO_BUSY = 6,
1142 BT_INFO_STATE_ACL_INQ_OR_PAG = 7,
1143 BT_INFO_STATE_MAX = 8
1146 struct btdm_8723a_1ant {
1158 u32 psTdmaMonitorCnt;
1159 u32 psTdmaGlobalCnt;
1161 /* DurationAdjust For SCO */
1162 u32 psTdmaMonitorCntForSCO;
1163 u8 psTdmaDuAdjTypeForSCO;
1171 void BTDM_1AntSignalCompensation(struct rtw_adapter * padapter, u8 *rssi_wifi, u8 *rssi_bt);
1172 void BTDM_1AntForDhcp(struct rtw_adapter * padapter);
1173 void BTDM_1AntBtCoexist8723A(struct rtw_adapter * padapter);
1175 /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h ===== */
1177 /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h ===== */
1178 enum bt_2ant_bt_status {
1179 BT_2ANT_BT_STATUS_IDLE = 0x0,
1180 BT_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1,
1181 BT_2ANT_BT_STATUS_NON_IDLE = 0x2,
1182 BT_2ANT_BT_STATUS_MAX
1185 enum bt_2ant_coex_algo {
1186 BT_2ANT_COEX_ALGO_UNDEFINED = 0x0,
1187 BT_2ANT_COEX_ALGO_SCO = 0x1,
1188 BT_2ANT_COEX_ALGO_HID = 0x2,
1189 BT_2ANT_COEX_ALGO_A2DP = 0x3,
1190 BT_2ANT_COEX_ALGO_PANEDR = 0x4,
1191 BT_2ANT_COEX_ALGO_PANHS = 0x5,
1192 BT_2ANT_COEX_ALGO_PANEDR_A2DP = 0x6,
1193 BT_2ANT_COEX_ALGO_PANEDR_HID = 0x7,
1194 BT_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x8,
1195 BT_2ANT_COEX_ALGO_HID_A2DP = 0x9,
1196 BT_2ANT_COEX_ALGO_HID_A2DP_PANHS = 0xA,
1197 BT_2ANT_COEX_ALGO_MAX = 0xB,
1200 struct btdm_8723a_2ant {
1209 u8 preFwDacSwingLvl;
1210 u8 curFwDacSwingLvl;
1212 u8 bPreRfRxLpfShrink;
1213 u8 bCurRfRxLpfShrink;
1215 u8 bPreLowPenaltyRa;
1216 u8 bCurLowPenaltyRa;
1239 u8 bCurIgnoreWlanAct;
1240 u8 bPreIgnoreWlanAct;
1250 u8 bResetTdmaAdjust;
1255 void BTDM_2AntBtCoexist8723A(struct rtw_adapter * padapter);
1256 /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h ===== */
1258 /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc8723.h ===== */
1260 #define BT_Q_PKT_OFF 0
1261 #define BT_Q_PKT_ON 1
1263 #define BT_TX_PWR_OFF 0
1264 #define BT_TX_PWR_ON 1
1266 /* TDMA mode definition */
1269 #define TDMA_NAV_OFF 0
1270 #define TDMA_NAV_ON 1
1271 #define TDMA_DAC_SWING_OFF 0
1272 #define TDMA_DAC_SWING_ON 1
1274 #define BT_RSSI_LEVEL_H 0
1275 #define BT_RSSI_LEVEL_M 1
1276 #define BT_RSSI_LEVEL_L 2
1278 /* PTA mode related definition */
1279 #define BT_PTA_MODE_OFF 0
1280 #define BT_PTA_MODE_ON 1
1282 /* Penalty Tx Rate Adaptive */
1283 #define BT_TX_RATE_ADAPTIVE_NORMAL 0
1284 #define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1
1287 #define BT_RF_RX_LPF_CORNER_RESUME 0
1288 #define BT_RF_RX_LPF_CORNER_SHRINK 1
1290 #define BT_INFO_ACL BIT(0)
1291 #define BT_INFO_SCO BIT(1)
1292 #define BT_INFO_INQ_PAG BIT(2)
1293 #define BT_INFO_ACL_BUSY BIT(3)
1294 #define BT_INFO_SCO_BUSY BIT(4)
1295 #define BT_INFO_HID BIT(5)
1296 #define BT_INFO_A2DP BIT(6)
1297 #define BT_INFO_FTP BIT(7)
1301 struct bt_coexist_8723a {
1308 u8 bC2hBtInfoSupport;
1310 u8 c2hBtInfoOriginal;
1311 u8 prec2hBtInfo; /* for 1Ant */
1312 u8 bC2hBtInquiryPage;
1313 unsigned long btInqPageStartTime; /* for 2Ant */
1314 u8 c2hBtProfile; /* for 1Ant */
1317 u8 bC2hBtInfoReqSent;
1320 struct btdm_8723a_2ant btdm2Ant;
1321 struct btdm_8723a_1ant btdm1Ant;
1324 void BTDM_SetFwChnlInfo(struct rtw_adapter * padapter, enum rt_media_status mstatus);
1325 u8 BTDM_IsWifiConnectionExist(struct rtw_adapter * padapter);
1326 void BTDM_SetFw3a(struct rtw_adapter * padapter, u8 byte1, u8 byte2, u8 byte3, u8 byte4, u8 byte5);
1327 void BTDM_QueryBtInformation(struct rtw_adapter * padapter);
1328 void BTDM_SetSwRfRxLpfCorner(struct rtw_adapter * padapter, u8 type);
1329 void BTDM_SetSwPenaltyTxRateAdaptive(struct rtw_adapter * padapter, u8 raType);
1330 void BTDM_SetFwDecBtPwr(struct rtw_adapter * padapter, u8 bDecBtPwr);
1331 u8 BTDM_BtProfileSupport(struct rtw_adapter * padapter);
1332 void BTDM_LpsLeave(struct rtw_adapter * padapter);
1333 u8 BTDM_1Ant8723A(struct rtw_adapter * padapter);
1334 #define BT_1Ant BTDM_1Ant8723A
1336 /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc8723.h ===== */
1338 /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h ===== */
1341 BT_A2DP_INDEX0 = 0, /* 32, 12; the most critical for BT */
1342 BT_A2DP_INDEX1, /* 12, 24 */
1343 BT_A2DP_INDEX2, /* 0, 0 */
1347 #define BT_A2DP_STATE_NOT_ENTERED 0
1348 #define BT_A2DP_STATE_DETECTING 1
1349 #define BT_A2DP_STATE_DETECTED 2
1351 #define BTDM_ANT_BT_IDLE 0
1352 #define BTDM_ANT_WIFI 1
1353 #define BTDM_ANT_BT 2
1356 void BTDM_SingleAnt(struct rtw_adapter * padapter, u8 bSingleAntOn, u8 bInterruptOn, u8 bMultiNAVOn);
1357 void BTDM_CheckBTIdleChange1Ant(struct rtw_adapter * padapter);
1359 /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h ===== */
1361 /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h ===== */
1364 /* For old core stack before v251 */
1366 #define BT_RSSI_STATE_NORMAL_POWER BIT(0)
1367 #define BT_RSSI_STATE_AMDPU_OFF BIT(1)
1368 #define BT_RSSI_STATE_SPECIAL_LOW BIT(2)
1369 #define BT_RSSI_STATE_BG_EDCA_LOW BIT(3)
1370 #define BT_RSSI_STATE_TXPOWER_LOW BIT(4)
1372 #define BT_DACSWING_OFF 0
1373 #define BT_DACSWING_M4 1
1374 #define BT_DACSWING_M7 2
1375 #define BT_DACSWING_M10 3
1377 void BTDM_DiminishWiFi(struct rtw_adapter * Adapter, u8 bDACOn, u8 bInterruptOn, u8 DACSwingLevel, u8 bNAVOn);
1379 /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h ===== */
1381 /* HEADER/TypeDef.h */
1382 #define MAX_FW_SUPPORT_MACID_NUM 64
1384 /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h ===== */
1386 #define FW_VER_BT_REG 62
1387 #define FW_VER_BT_REG1 74
1388 #define REG_BT_ACTIVE 0x444
1389 #define REG_BT_STATE 0x448
1390 #define REG_BT_POLLING1 0x44c
1391 #define REG_BT_POLLING 0x700
1393 #define REG_BT_ACTIVE_OLD 0x488
1394 #define REG_BT_STATE_OLD 0x48c
1395 #define REG_BT_POLLING_OLD 0x490
1397 /* The reg define is for 8723 */
1398 #define REG_HIGH_PRIORITY_TXRX 0x770
1399 #define REG_LOW_PRIORITY_TXRX 0x774
1401 #define BT_FW_COEX_THRESH_TOL 6
1402 #define BT_FW_COEX_THRESH_20 20
1403 #define BT_FW_COEX_THRESH_23 23
1404 #define BT_FW_COEX_THRESH_25 25
1405 #define BT_FW_COEX_THRESH_30 30
1406 #define BT_FW_COEX_THRESH_35 35
1407 #define BT_FW_COEX_THRESH_40 40
1408 #define BT_FW_COEX_THRESH_45 45
1409 #define BT_FW_COEX_THRESH_47 47
1410 #define BT_FW_COEX_THRESH_50 50
1411 #define BT_FW_COEX_THRESH_55 55
1412 #define BT_FW_COEX_THRESH_65 65
1414 #define BT_COEX_STATE_BT30 BIT(0)
1415 #define BT_COEX_STATE_WIFI_HT20 BIT(1)
1416 #define BT_COEX_STATE_WIFI_HT40 BIT(2)
1417 #define BT_COEX_STATE_WIFI_LEGACY BIT(3)
1419 #define BT_COEX_STATE_WIFI_RSSI_LOW BIT(4)
1420 #define BT_COEX_STATE_WIFI_RSSI_MEDIUM BIT(5)
1421 #define BT_COEX_STATE_WIFI_RSSI_HIGH BIT(6)
1422 #define BT_COEX_STATE_DEC_BT_POWER BIT(7)
1424 #define BT_COEX_STATE_WIFI_IDLE BIT(8)
1425 #define BT_COEX_STATE_WIFI_UPLINK BIT(9)
1426 #define BT_COEX_STATE_WIFI_DOWNLINK BIT(10)
1428 #define BT_COEX_STATE_BT_INQ_PAGE BIT(11)
1429 #define BT_COEX_STATE_BT_IDLE BIT(12)
1430 #define BT_COEX_STATE_BT_UPLINK BIT(13)
1431 #define BT_COEX_STATE_BT_DOWNLINK BIT(14)
1433 /* Todo: Remove these definitions */
1434 #define BT_COEX_STATE_BT_PAN_IDLE BIT(15)
1435 #define BT_COEX_STATE_BT_PAN_UPLINK BIT(16)
1436 #define BT_COEX_STATE_BT_PAN_DOWNLINK BIT(17)
1437 #define BT_COEX_STATE_BT_A2DP_IDLE BIT(18)
1439 #define BT_COEX_STATE_BT_RSSI_LOW BIT(19)
1441 #define BT_COEX_STATE_PROFILE_HID BIT(20)
1442 #define BT_COEX_STATE_PROFILE_A2DP BIT(21)
1443 #define BT_COEX_STATE_PROFILE_PAN BIT(22)
1444 #define BT_COEX_STATE_PROFILE_SCO BIT(23)
1446 #define BT_COEX_STATE_WIFI_RSSI_1_LOW BIT(24)
1447 #define BT_COEX_STATE_WIFI_RSSI_1_MEDIUM BIT(25)
1448 #define BT_COEX_STATE_WIFI_RSSI_1_HIGH BIT(26)
1450 #define BT_COEX_STATE_WIFI_RSSI_BEACON_LOW BIT(27)
1451 #define BT_COEX_STATE_WIFI_RSSI_BEACON_MEDIUM BIT(28)
1452 #define BT_COEX_STATE_WIFI_RSSI_BEACON_HIGH BIT(29)
1455 #define BT_COEX_STATE_BTINFO_COMMON BIT(30)
1456 #define BT_COEX_STATE_BTINFO_B_HID_SCOESCO BIT(31)
1457 #define BT_COEX_STATE_BTINFO_B_FTP_A2DP BIT(32)
1459 #define BT_COEX_STATE_BT_CNT_LEVEL_0 BIT(33)
1460 #define BT_COEX_STATE_BT_CNT_LEVEL_1 BIT(34)
1461 #define BT_COEX_STATE_BT_CNT_LEVEL_2 BIT(35)
1462 #define BT_COEX_STATE_BT_CNT_LEVEL_3 BIT(36)
1464 #define BT_RSSI_STATE_HIGH 0
1465 #define BT_RSSI_STATE_MEDIUM 1
1466 #define BT_RSSI_STATE_LOW 2
1467 #define BT_RSSI_STATE_STAY_HIGH 3
1468 #define BT_RSSI_STATE_STAY_MEDIUM 4
1469 #define BT_RSSI_STATE_STAY_LOW 5
1471 #define BT_AGCTABLE_OFF 0
1472 #define BT_AGCTABLE_ON 1
1474 #define BT_BB_BACKOFF_OFF 0
1475 #define BT_BB_BACKOFF_ON 1
1477 #define BT_FW_NAV_OFF 0
1478 #define BT_FW_NAV_ON 1
1480 #define BT_COEX_MECH_NONE 0
1481 #define BT_COEX_MECH_SCO 1
1482 #define BT_COEX_MECH_HID 2
1483 #define BT_COEX_MECH_A2DP 3
1484 #define BT_COEX_MECH_PAN 4
1485 #define BT_COEX_MECH_HID_A2DP 5
1486 #define BT_COEX_MECH_HID_PAN 6
1487 #define BT_COEX_MECH_PAN_A2DP 7
1488 #define BT_COEX_MECH_HID_SCO_ESCO 8
1489 #define BT_COEX_MECH_FTP_A2DP 9
1490 #define BT_COEX_MECH_COMMON 10
1491 #define BT_COEX_MECH_MAX 11
1493 #define BT_DBG_PROFILE_NONE 0
1494 #define BT_DBG_PROFILE_SCO 1
1495 #define BT_DBG_PROFILE_HID 2
1496 #define BT_DBG_PROFILE_A2DP 3
1497 #define BT_DBG_PROFILE_PAN 4
1498 #define BT_DBG_PROFILE_HID_A2DP 5
1499 #define BT_DBG_PROFILE_HID_PAN 6
1500 #define BT_DBG_PROFILE_PAN_A2DP 7
1501 #define BT_DBG_PROFILE_MAX 9
1503 struct bt_coexist_str {
1504 u8 BluetoothCoexist;
1507 u8 BT_Ant_isolation; /* 0:good, 1:bad */
1508 u8 bt_radiosharedtype;
1512 u32 BtRfRegOrigin1E;
1513 u32 BtRfRegOrigin1F;
1515 u8 bBTTrafficModeSet;
1516 u8 bBTNonTrafficModeSet;
1517 struct bt_traffic_statistics BT21TrafficStatistics;
1522 u8 preRssiStateBeacon;
1523 u8 bFWCoexistAllOff;
1524 u8 bSWCoexistAllOff;
1525 u8 bHWCoexistAllOff;
1538 u8 bEDCAInitialized;
1540 u8 b8723aAgcTableOn;
1542 struct bt_coexist_8723a halCoex8723;
1546 u8 bNeedToRoamForBtDisableEnable;
1550 void BTDM_CheckAntSelMode(struct rtw_adapter * padapter);
1551 void BTDM_FwC2hBtRssi(struct rtw_adapter * padapter, u8 *tmpBuf);
1552 #define BT_FwC2hBtRssi BTDM_FwC2hBtRssi
1553 void BTDM_FwC2hBtInfo(struct rtw_adapter * padapter, u8 *tmpBuf, u8 length);
1554 #define BT_FwC2hBtInfo BTDM_FwC2hBtInfo
1555 void BTDM_DisplayBtCoexInfo(struct rtw_adapter * padapter);
1556 #define BT_DisplayBtCoexInfo BTDM_DisplayBtCoexInfo
1557 void BTDM_RejectAPAggregatedPacket(struct rtw_adapter * padapter, u8 bReject);
1558 u8 BTDM_IsHT40(struct rtw_adapter * padapter);
1559 u8 BTDM_Legacy(struct rtw_adapter * padapter);
1560 void BTDM_CheckWiFiState(struct rtw_adapter * padapter);
1561 s32 BTDM_GetRxSS(struct rtw_adapter * padapter);
1562 u8 BTDM_CheckCoexBcnRssiState(struct rtw_adapter * padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1563 u8 BTDM_CheckCoexRSSIState1(struct rtw_adapter * padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1564 u8 BTDM_CheckCoexRSSIState(struct rtw_adapter * padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1565 u8 BTDM_DisableEDCATurbo(struct rtw_adapter * padapter);
1566 #define BT_DisableEDCATurbo BTDM_DisableEDCATurbo
1567 void BTDM_Balance(struct rtw_adapter * padapter, u8 bBalanceOn, u8 ms0, u8 ms1);
1568 void BTDM_AGCTable(struct rtw_adapter * padapter, u8 type);
1569 void BTDM_BBBackOffLevel(struct rtw_adapter * padapter, u8 type);
1570 void BTDM_FWCoexAllOff(struct rtw_adapter * padapter);
1571 void BTDM_SWCoexAllOff(struct rtw_adapter * padapter);
1572 void BTDM_HWCoexAllOff(struct rtw_adapter * padapter);
1573 void BTDM_CoexAllOff(struct rtw_adapter * padapter);
1574 void BTDM_TurnOffBtCoexistBeforeEnterIPS(struct rtw_adapter * padapter);
1575 void BTDM_SignalCompensation(struct rtw_adapter * padapter, u8 *rssi_wifi, u8 *rssi_bt);
1576 void BTDM_Coexist(struct rtw_adapter * padapter);
1577 #define BT_CoexistMechanism BTDM_Coexist
1578 void BTDM_UpdateCoexState(struct rtw_adapter * padapter);
1579 u8 BTDM_IsSameCoexistState(struct rtw_adapter * padapter);
1580 void BTDM_PWDBMonitor(struct rtw_adapter * padapter);
1581 u8 BTDM_IsBTBusy(struct rtw_adapter * padapter);
1582 #define BT_IsBtBusy BTDM_IsBTBusy
1583 u8 BTDM_IsWifiBusy(struct rtw_adapter * padapter);
1584 u8 BTDM_IsCoexistStateChanged(struct rtw_adapter * padapter);
1585 u8 BTDM_IsWifiUplink(struct rtw_adapter * padapter);
1586 u8 BTDM_IsWifiDownlink(struct rtw_adapter * padapter);
1587 u8 BTDM_IsBTHSMode(struct rtw_adapter * padapter);
1588 u8 BTDM_IsBTUplink(struct rtw_adapter * padapter);
1589 u8 BTDM_IsBTDownlink(struct rtw_adapter * padapter);
1590 void BTDM_AdjustForBtOperation(struct rtw_adapter * padapter);
1591 void BTDM_ForHalt(struct rtw_adapter * padapter);
1592 void BTDM_WifiScanNotify(struct rtw_adapter * padapter, u8 scanType);
1593 void BTDM_WifiAssociateNotify(struct rtw_adapter * padapter, u8 action);
1594 void BTDM_MediaStatusNotify(struct rtw_adapter * padapter, enum rt_media_status mstatus);
1595 void BTDM_ForDhcp(struct rtw_adapter * padapter);
1596 void BTDM_ResetActionProfileState(struct rtw_adapter * padapter);
1597 void BTDM_SetBtCoexCurrAntNum(struct rtw_adapter * padapter, u8 antNum);
1598 #define BT_SetBtCoexCurrAntNum BTDM_SetBtCoexCurrAntNum
1599 u8 BTDM_IsActionSCO(struct rtw_adapter * padapter);
1600 u8 BTDM_IsActionHID(struct rtw_adapter * padapter);
1601 u8 BTDM_IsActionA2DP(struct rtw_adapter * padapter);
1602 u8 BTDM_IsActionPAN(struct rtw_adapter * padapter);
1603 u8 BTDM_IsActionHIDA2DP(struct rtw_adapter * padapter);
1604 u8 BTDM_IsActionHIDPAN(struct rtw_adapter * padapter);
1605 u8 BTDM_IsActionPANA2DP(struct rtw_adapter * padapter);
1606 u8 BTDM_IsBtDisabled(struct rtw_adapter * padapter);
1607 #define BT_IsBtDisabled BTDM_IsBtDisabled
1608 u32 BTDM_BtTxRxCounterH(struct rtw_adapter * padapter);
1609 u32 BTDM_BtTxRxCounterL(struct rtw_adapter * padapter);
1611 /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h ===== */
1613 /* ===== Below this line is sync from SD7 driver HAL/HalBT.h ===== */
1615 #define RTS_CTS_NO_LEN_LIMIT 0
1617 u8 HALBT_GetPGAntNum(struct rtw_adapter * padapter);
1618 #define BT_GetPGAntNum HALBT_GetPGAntNum
1619 void HALBT_SetKey(struct rtw_adapter * padapter, u8 EntryNum);
1620 void HALBT_RemoveKey(struct rtw_adapter * padapter, u8 EntryNum);
1621 void HALBT_InitBTVars8723A(struct rtw_adapter * padapter);
1622 #define HALBT_InitHalVars HALBT_InitBTVars8723A
1623 #define BT_InitHalVars HALBT_InitHalVars
1624 u8 HALBT_IsBTExist(struct rtw_adapter * padapter);
1625 #define BT_IsBtExist HALBT_IsBTExist
1626 u8 HALBT_BTChipType(struct rtw_adapter * padapter);
1627 void HALBT_InitHwConfig(struct rtw_adapter * padapter);
1628 #define BT_InitHwConfig HALBT_InitHwConfig
1629 void HALBT_SetRtsCtsNoLenLimit(struct rtw_adapter * padapter);
1631 /* ===== End of sync from SD7 driver HAL/HalBT.c ===== */
1633 #define _bt_dbg_off_ 0
1634 #define _bt_dbg_on_ 1
1636 extern u32 BTCoexDbgLevel;
1640 #endif /* __RTL8723A_BT_COEXIST_H__ */