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