1 /****************************************************************************** 2 * 3 * Copyright(c) 2013 - 2017 Realtek Corporation. 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 __RTW_BTCOEX_H__ 16 #define __RTW_BTCOEX_H__ 17 18 #include <drv_types.h> 19 20 /* For H2C: H2C_BT_MP_OPER. Return status definition to the user layer */ 21 typedef enum _BT_CTRL_STATUS { 22 BT_STATUS_SUCCESS = 0x00, /* Success */ 23 BT_STATUS_BT_OP_SUCCESS = 0x01, /* bt fw op execution success */ 24 BT_STATUS_H2C_SUCCESS = 0x02, /* H2c success */ 25 BT_STATUS_H2C_FAIL = 0x03, /* H2c fail */ 26 BT_STATUS_H2C_LENGTH_EXCEEDED = 0x04, /* H2c command length exceeded */ 27 BT_STATUS_H2C_TIMTOUT = 0x05, /* H2c timeout */ 28 BT_STATUS_H2C_BT_NO_RSP = 0x06, /* H2c sent, bt no rsp */ 29 BT_STATUS_C2H_SUCCESS = 0x07, /* C2h success */ 30 BT_STATUS_C2H_REQNUM_MISMATCH = 0x08, /* bt fw wrong rsp */ 31 BT_STATUS_OPCODE_U_VERSION_MISMATCH = 0x08, /* Upper layer OP code version mismatch. */ 32 BT_STATUS_OPCODE_L_VERSION_MISMATCH = 0x0a, /* Lower layer OP code version mismatch. */ 33 BT_STATUS_UNKNOWN_OPCODE_U = 0x0b, /* Unknown Upper layer OP code */ 34 BT_STATUS_UNKNOWN_OPCODE_L = 0x0c, /* Unknown Lower layer OP code */ 35 BT_STATUS_PARAMETER_FORMAT_ERROR_U = 0x0d, /* Wrong parameters sent by upper layer. */ 36 BT_STATUS_PARAMETER_FORMAT_ERROR_L = 0x0e, /* bt fw parameter format is not consistency */ 37 BT_STATUS_PARAMETER_OUT_OF_RANGE_U = 0x0f, /* uppery layer parameter value is out of range */ 38 BT_STATUS_PARAMETER_OUT_OF_RANGE_L = 0x10, /* bt fw parameter value is out of range */ 39 BT_STATUS_UNKNOWN_STATUS_L = 0x11, /* bt returned an defined status code */ 40 BT_STATUS_UNKNOWN_STATUS_H = 0x12, /* driver need to do error handle or not handle-well. */ 41 BT_STATUS_WRONG_LEVEL = 0x13, /* should be under passive level */ 42 BT_STATUS_NOT_IMPLEMENT = 0x14, /* op code not implemented yet */ 43 BT_STATUS_BT_STACK_OP_SUCCESS = 0x15, /* bt stack op execution success */ 44 BT_STATUS_BT_STACK_NOT_SUPPORT = 0x16, /* stack version not support this. */ 45 BT_STATUS_BT_STACK_SEND_HCI_EVENT_FAIL = 0x17, /* send hci event fail */ 46 BT_STATUS_BT_STACK_NOT_BIND = 0x18, /* stack not bind wifi driver */ 47 BT_STATUS_BT_STACK_NO_RSP = 0x19, /* stack doesn't have any rsp. */ 48 BT_STATUS_MAX 49 } BT_CTRL_STATUS, *PBT_CTRL_STATUS; 50 51 typedef enum _BTCOEX_SUSPEND_STATE { 52 BTCOEX_SUSPEND_STATE_RESUME = 0x0, 53 BTCOEX_SUSPEND_STATE_SUSPEND = 0x1, 54 BTCOEX_SUSPEND_STATE_SUSPEND_KEEP_ANT = 0x2, 55 BTCOEX_SUSPEND_STATE_MAX 56 } BTCOEX_SUSPEND_STATE, *PBTCOEX_SUSPEND_STATE; 57 58 #define SET_BT_MP_OPER_RET(OpCode, StatusCode) ((OpCode << 8) | StatusCode) 59 #define GET_OP_CODE_FROM_BT_MP_OPER_RET(RetCode) ((RetCode & 0xF0) >> 8) 60 #define GET_STATUS_CODE_FROM_BT_MP_OPER_RET(RetCode) (RetCode & 0x0F) 61 #define CHECK_STATUS_CODE_FROM_BT_MP_OPER_RET(RetCode, StatusCode) (GET_STATUS_CODE_FROM_BT_MP_OPER_RET(RetCode) == StatusCode) 62 63 #ifdef CONFIG_BT_COEXIST_SOCKET_TRX 64 65 #define NETLINK_USER 31 66 #define CONNECT_PORT 30000 67 #define CONNECT_PORT_BT 30001 68 #define KERNEL_SOCKET_OK 0x01 69 #define NETLINK_SOCKET_OK 0x02 70 71 #define OTHER 0 72 #define RX_ATTEND_ACK 1 73 #define RX_LEAVE_ACK 2 74 #define RX_BT_LEAVE 3 75 #define RX_INVITE_REQ 4 76 #define RX_ATTEND_REQ 5 77 #define RX_INVITE_RSP 6 78 79 #define invite_req "INVITE_REQ" 80 #define invite_rsp "INVITE_RSP" 81 #define attend_req "ATTEND_REQ" 82 #define attend_ack "ATTEND_ACK" 83 #define wifi_leave "WIFI_LEAVE" 84 #define leave_ack "LEAVE_ACK" 85 #define bt_leave "BT_LEAVE" 86 87 #define BT_INFO_NOTIFY_CMD 0x0106 88 #define BT_INFO_LEN 8 89 90 typedef struct _HCI_LINK_INFO { 91 u2Byte ConnectHandle; 92 u1Byte IncomingTrafficMode; 93 u1Byte OutgoingTrafficMode; 94 u1Byte BTProfile; 95 u1Byte BTCoreSpec; 96 s1Byte BT_RSSI; 97 u1Byte TrafficProfile; 98 u1Byte linkRole; 99 } HCI_LINK_INFO, *PHCI_LINK_INFO; 100 101 #define MAX_BT_ACL_LINK_NUM 8 102 103 typedef struct _HCI_EXT_CONFIG { 104 HCI_LINK_INFO aclLink[MAX_BT_ACL_LINK_NUM]; 105 u1Byte btOperationCode; 106 u2Byte CurrentConnectHandle; 107 u1Byte CurrentIncomingTrafficMode; 108 u1Byte CurrentOutgoingTrafficMode; 109 110 u1Byte NumberOfACL; 111 u1Byte NumberOfSCO; 112 u1Byte CurrentBTStatus; 113 u2Byte HCIExtensionVer; 114 115 BOOLEAN bEnableWifiScanNotify; 116 } HCI_EXT_CONFIG, *PHCI_EXT_CONFIG; 117 118 typedef struct _HCI_PHY_LINK_BSS_INFO { 119 u2Byte bdCap; /* capability information */ 120 121 /* Qos related. Added by Annie, 2005-11-01. */ 122 /* BSS_QOS BssQos; */ 123 124 } HCI_PHY_LINK_BSS_INFO, *PHCI_PHY_LINK_BSS_INFO; 125 126 typedef enum _BT_CONNECT_TYPE { 127 BT_CONNECT_AUTH_REQ = 0x00, 128 BT_CONNECT_AUTH_RSP = 0x01, 129 BT_CONNECT_ASOC_REQ = 0x02, 130 BT_CONNECT_ASOC_RSP = 0x03, 131 BT_DISCONNECT = 0x04 132 } BT_CONNECT_TYPE, *PBT_CONNECT_TYPE; 133 134 135 typedef struct _PACKET_IRP_HCIEVENT_DATA { 136 u8 EventCode; 137 u8 Length; /* total cmd length = extension event length+1(extension event code length) */ 138 u8 Data[1]; /* byte1 is extension event code */ 139 } rtw_HCI_event; 140 141 142 struct btinfo_8761ATV { 143 u8 cid; 144 u8 len; 145 146 u8 bConnection:1; 147 u8 bSCOeSCO:1; 148 u8 bInQPage:1; 149 u8 bACLBusy:1; 150 u8 bSCOBusy:1; 151 u8 bHID:1; 152 u8 bA2DP:1; 153 u8 bFTP:1; 154 155 u8 retry_cnt:4; 156 u8 rsvd_34:1; 157 u8 bPage:1; 158 u8 TRxMask:1; 159 u8 Sniff_attempt:1; 160 161 u8 rssi; 162 163 u8 A2dp_rate:1; 164 u8 ReInit:1; 165 u8 MaxPower:1; 166 u8 bEnIgnoreWlanAct:1; 167 u8 TxPowerLow:1; 168 u8 TxPowerHigh:1; 169 u8 eSCO_SCO:1; 170 u8 Master_Slave:1; 171 172 u8 ACL_TRx_TP_low; 173 u8 ACL_TRx_TP_high; 174 }; 175 176 #define HCIOPCODE(_OCF, _OGF) ((_OGF)<<10|(_OCF)) 177 #define HCIOPCODELOW(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF) & 0x00ff) 178 #define HCIOPCODEHIGHT(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF)>>8) 179 #define HCI_OGF(opCode) (unsigned char)((0xFC00 & (opCode)) >> 10) 180 #define HCI_OCF(opCode) (0x3FF & (opCode)) 181 182 183 typedef enum _HCI_STATUS { 184 HCI_STATUS_SUCCESS = 0x00, /* Success */ 185 HCI_STATUS_UNKNOW_HCI_CMD = 0x01, /* Unknown HCI Command */ 186 HCI_STATUS_UNKNOW_CONNECT_ID = 0X02, /* Unknown Connection Identifier */ 187 HCI_STATUS_HW_FAIL = 0X03, /* Hardware Failure */ 188 HCI_STATUS_PAGE_TIMEOUT = 0X04, /* Page Timeout */ 189 HCI_STATUS_AUTH_FAIL = 0X05, /* Authentication Failure */ 190 HCI_STATUS_PIN_OR_KEY_MISSING = 0X06, /* PIN or Key Missing */ 191 HCI_STATUS_MEM_CAP_EXCEED = 0X07, /* Memory Capacity Exceeded */ 192 HCI_STATUS_CONNECT_TIMEOUT = 0X08, /* Connection Timeout */ 193 HCI_STATUS_CONNECT_LIMIT = 0X09, /* Connection Limit Exceeded */ 194 HCI_STATUS_SYN_CONNECT_LIMIT = 0X0a, /* Synchronous Connection Limit To A Device Exceeded */ 195 HCI_STATUS_ACL_CONNECT_EXISTS = 0X0b, /* ACL Connection Already Exists */ 196 HCI_STATUS_CMD_DISALLOW = 0X0c, /* Command Disallowed */ 197 HCI_STATUS_CONNECT_RJT_LIMIT_RESOURCE = 0X0d, /* Connection Rejected due to Limited Resources */ 198 HCI_STATUS_CONNECT_RJT_SEC_REASON = 0X0e, /* Connection Rejected Due To Security Reasons */ 199 HCI_STATUS_CONNECT_RJT_UNACCEPT_BD_ADDR = 0X0f, /* Connection Rejected due to Unacceptable BD_ADDR */ 200 HCI_STATUS_CONNECT_ACCEPT_TIMEOUT = 0X10, /* Connection Accept Timeout Exceeded */ 201 HCI_STATUS_UNSUPPORT_FEATURE_PARA_VALUE = 0X11, /* Unsupported Feature or Parameter Value */ 202 HCI_STATUS_INVALID_HCI_CMD_PARA_VALUE = 0X12, /* Invalid HCI Command Parameters */ 203 HCI_STATUS_REMOTE_USER_TERMINATE_CONNECT = 0X13, /* Remote User Terminated Connection */ 204 HCI_STATUS_REMOTE_DEV_TERMINATE_LOW_RESOURCE = 0X14, /* Remote Device Terminated Connection due to Low Resources */ 205 HCI_STATUS_REMOTE_DEV_TERMINATE_CONNECT_POWER_OFF = 0X15, /* Remote Device Terminated Connection due to Power Off */ 206 HCI_STATUS_CONNECT_TERMINATE_LOCAL_HOST = 0X16, /* Connection Terminated By Local Host */ 207 HCI_STATUS_REPEATE_ATTEMPT = 0X17, /* Repeated Attempts */ 208 HCI_STATUS_PAIR_NOT_ALLOW = 0X18, /* Pairing Not Allowed */ 209 HCI_STATUS_UNKNOW_LMP_PDU = 0X19, /* Unknown LMP PDU */ 210 HCI_STATUS_UNSUPPORT_REMOTE_LMP_FEATURE = 0X1a, /* Unsupported Remote Feature / Unsupported LMP Feature */ 211 HCI_STATUS_SOC_OFFSET_REJECT = 0X1b, /* SCO Offset Rejected */ 212 HCI_STATUS_SOC_INTERVAL_REJECT = 0X1c, /* SCO Interval Rejected */ 213 HCI_STATUS_SOC_AIR_MODE_REJECT = 0X1d, /* SCO Air Mode Rejected */ 214 HCI_STATUS_INVALID_LMP_PARA = 0X1e, /* Invalid LMP Parameters */ 215 HCI_STATUS_UNSPECIFIC_ERROR = 0X1f, /* Unspecified Error */ 216 HCI_STATUS_UNSUPPORT_LMP_PARA_VALUE = 0X20, /* Unsupported LMP Parameter Value */ 217 HCI_STATUS_ROLE_CHANGE_NOT_ALLOW = 0X21, /* Role Change Not Allowed */ 218 HCI_STATUS_LMP_RESPONSE_TIMEOUT = 0X22, /* LMP Response Timeout */ 219 HCI_STATUS_LMP_ERROR_TRANSACTION_COLLISION = 0X23, /* LMP Error Transaction Collision */ 220 HCI_STATUS_LMP_PDU_NOT_ALLOW = 0X24, /* LMP PDU Not Allowed */ 221 HCI_STATUS_ENCRYPTION_MODE_NOT_ALLOW = 0X25, /* Encryption Mode Not Acceptable */ 222 HCI_STATUS_LINK_KEY_CAN_NOT_CHANGE = 0X26, /* Link Key Can Not be Changed */ 223 HCI_STATUS_REQUEST_QOS_NOT_SUPPORT = 0X27, /* Requested QoS Not Supported */ 224 HCI_STATUS_INSTANT_PASSED = 0X28, /* Instant Passed */ 225 HCI_STATUS_PAIRING_UNIT_KEY_NOT_SUPPORT = 0X29, /* Pairing With Unit Key Not Supported */ 226 HCI_STATUS_DIFFERENT_TRANSACTION_COLLISION = 0X2a, /* Different Transaction Collision */ 227 HCI_STATUS_RESERVE_1 = 0X2b, /* Reserved */ 228 HCI_STATUS_QOS_UNACCEPT_PARA = 0X2c, /* QoS Unacceptable Parameter */ 229 HCI_STATUS_QOS_REJECT = 0X2d, /* QoS Rejected */ 230 HCI_STATUS_CHNL_CLASSIFICATION_NOT_SUPPORT = 0X2e, /* Channel Classification Not Supported */ 231 HCI_STATUS_INSUFFICIENT_SECURITY = 0X2f, /* Insufficient Security */ 232 HCI_STATUS_PARA_OUT_OF_RANGE = 0x30, /* Parameter Out Of Mandatory Range */ 233 HCI_STATUS_RESERVE_2 = 0X31, /* Reserved */ 234 HCI_STATUS_ROLE_SWITCH_PENDING = 0X32, /* Role Switch Pending */ 235 HCI_STATUS_RESERVE_3 = 0X33, /* Reserved */ 236 HCI_STATUS_RESERVE_SOLT_VIOLATION = 0X34, /* Reserved Slot Violation */ 237 HCI_STATUS_ROLE_SWITCH_FAIL = 0X35, /* Role Switch Failed */ 238 HCI_STATUS_EXTEND_INQUIRY_RSP_TOO_LARGE = 0X36, /* Extended Inquiry Response Too Large */ 239 HCI_STATUS_SEC_SIMPLE_PAIRING_NOT_SUPPORT = 0X37, /* Secure Simple Pairing Not Supported By Host. */ 240 HCI_STATUS_HOST_BUSY_PAIRING = 0X38, /* Host Busy - Pairing */ 241 HCI_STATUS_CONNECT_REJ_NOT_SUIT_CHNL_FOUND = 0X39, /* Connection Rejected due to No Suitable Channel Found */ 242 HCI_STATUS_CONTROLLER_BUSY = 0X3a /* CONTROLLER BUSY */ 243 } RTW_HCI_STATUS; 244 245 #define HCI_EVENT_COMMAND_COMPLETE 0x0e 246 247 #define OGF_EXTENSION 0X3f 248 typedef enum HCI_EXTENSION_COMMANDS { 249 HCI_SET_ACL_LINK_DATA_FLOW_MODE = 0x0010, 250 HCI_SET_ACL_LINK_STATUS = 0x0020, 251 HCI_SET_SCO_LINK_STATUS = 0x0030, 252 HCI_SET_RSSI_VALUE = 0x0040, 253 HCI_SET_CURRENT_BLUETOOTH_STATUS = 0x0041, 254 255 /* The following is for RTK8723 */ 256 HCI_EXTENSION_VERSION_NOTIFY = 0x0100, 257 HCI_LINK_STATUS_NOTIFY = 0x0101, 258 HCI_BT_OPERATION_NOTIFY = 0x0102, 259 HCI_ENABLE_WIFI_SCAN_NOTIFY = 0x0103, 260 HCI_QUERY_RF_STATUS = 0x0104, 261 HCI_BT_ABNORMAL_NOTIFY = 0x0105, 262 HCI_BT_INFO_NOTIFY = 0x0106, 263 HCI_BT_COEX_NOTIFY = 0x0107, 264 HCI_BT_PATCH_VERSION_NOTIFY = 0x0108, 265 HCI_BT_AFH_MAP_NOTIFY = 0x0109, 266 HCI_BT_REGISTER_VALUE_NOTIFY = 0x010a, 267 268 /* The following is for IVT */ 269 HCI_WIFI_CURRENT_CHANNEL = 0x0300, 270 HCI_WIFI_CURRENT_BANDWIDTH = 0x0301, 271 HCI_WIFI_CONNECTION_STATUS = 0x0302 272 } RTW_HCI_EXT_CMD; 273 274 #define HCI_EVENT_EXTENSION_RTK 0xfe 275 typedef enum HCI_EXTENSION_EVENT_RTK { 276 HCI_EVENT_EXT_WIFI_SCAN_NOTIFY = 0x01, 277 HCI_EVENT_EXT_WIFI_RF_STATUS_NOTIFY = 0x02, 278 HCI_EVENT_EXT_BT_INFO_CONTROL = 0x03, 279 HCI_EVENT_EXT_BT_COEX_CONTROL = 0x04 280 } RTW_HCI_EXT_EVENT; 281 282 typedef enum _BT_TRAFFIC_MODE { 283 BT_MOTOR_EXT_BE = 0x00, /* Best Effort. Default. for HCRP, PAN, SDP, RFCOMM-based profiles like FTP,OPP, SPP, DUN, etc. */ 284 BT_MOTOR_EXT_GUL = 0x01, /* Guaranteed Latency. This type of traffic is used e.g. for HID and AVRCP. */ 285 BT_MOTOR_EXT_GUB = 0X02, /* Guaranteed Bandwidth. */ 286 BT_MOTOR_EXT_GULB = 0X03 /* Guaranteed Latency and Bandwidth. for A2DP and VDP. */ 287 } BT_TRAFFIC_MODE; 288 289 typedef enum _BT_TRAFFIC_MODE_PROFILE { 290 BT_PROFILE_NONE, 291 BT_PROFILE_A2DP, 292 BT_PROFILE_PAN , 293 BT_PROFILE_HID, 294 BT_PROFILE_SCO 295 } BT_TRAFFIC_MODE_PROFILE; 296 297 typedef enum _HCI_EXT_BT_OPERATION { 298 HCI_BT_OP_NONE = 0x0, 299 HCI_BT_OP_INQUIRY_START = 0x1, 300 HCI_BT_OP_INQUIRY_FINISH = 0x2, 301 HCI_BT_OP_PAGING_START = 0x3, 302 HCI_BT_OP_PAGING_SUCCESS = 0x4, 303 HCI_BT_OP_PAGING_UNSUCCESS = 0x5, 304 HCI_BT_OP_PAIRING_START = 0x6, 305 HCI_BT_OP_PAIRING_FINISH = 0x7, 306 HCI_BT_OP_BT_DEV_ENABLE = 0x8, 307 HCI_BT_OP_BT_DEV_DISABLE = 0x9, 308 HCI_BT_OP_MAX 309 } HCI_EXT_BT_OPERATION, *PHCI_EXT_BT_OPERATION; 310 311 typedef struct _BT_MGNT { 312 BOOLEAN bBTConnectInProgress; 313 BOOLEAN bLogLinkInProgress; 314 BOOLEAN bPhyLinkInProgress; 315 BOOLEAN bPhyLinkInProgressStartLL; 316 u1Byte BtCurrentPhyLinkhandle; 317 u2Byte BtCurrentLogLinkhandle; 318 u1Byte CurrentConnectEntryNum; 319 u1Byte DisconnectEntryNum; 320 u1Byte CurrentBTConnectionCnt; 321 BT_CONNECT_TYPE BTCurrentConnectType; 322 BT_CONNECT_TYPE BTReceiveConnectPkt; 323 u1Byte BTAuthCount; 324 u1Byte BTAsocCount; 325 BOOLEAN bStartSendSupervisionPkt; 326 BOOLEAN BtOperationOn; 327 BOOLEAN BTNeedAMPStatusChg; 328 BOOLEAN JoinerNeedSendAuth; 329 HCI_PHY_LINK_BSS_INFO bssDesc; 330 HCI_EXT_CONFIG ExtConfig; 331 BOOLEAN bNeedNotifyAMPNoCap; 332 BOOLEAN bCreateSpportQos; 333 BOOLEAN bSupportProfile; 334 u1Byte BTChannel; 335 BOOLEAN CheckChnlIsSuit; 336 BOOLEAN bBtScan; 337 BOOLEAN btLogoTest; 338 BOOLEAN bRfStatusNotified; 339 BOOLEAN bBtRsvedPageDownload; 340 } BT_MGNT, *PBT_MGNT; 341 342 struct bt_coex_info { 343 /* For Kernel Socket */ 344 struct socket *udpsock; 345 struct sockaddr_in wifi_sockaddr; /*wifi socket*/ 346 struct sockaddr_in bt_sockaddr;/* BT socket */ 347 struct sock *sk_store;/*back up socket for UDP RX int*/ 348 349 /* store which socket is OK */ 350 u8 sock_open; 351 352 u8 BT_attend; 353 u8 is_exist; /* socket exist */ 354 BT_MGNT BtMgnt; 355 struct workqueue_struct *btcoex_wq; 356 struct delayed_work recvmsg_work; 357 }; 358 #endif /* CONFIG_BT_COEXIST_SOCKET_TRX */ 359 360 #define PACKET_NORMAL 0 361 #define PACKET_DHCP 1 362 #define PACKET_ARP 2 363 #define PACKET_EAPOL 3 364 365 void rtw_btcoex_Initialize(PADAPTER); 366 void rtw_btcoex_PowerOnSetting(PADAPTER padapter); 367 void rtw_btcoex_PowerOffSetting(PADAPTER padapter); 368 void rtw_btcoex_PreLoadFirmware(PADAPTER padapter); 369 void rtw_btcoex_HAL_Initialize(PADAPTER padapter, u8 bWifiOnly); 370 void rtw_btcoex_IpsNotify(PADAPTER, u8 type); 371 void rtw_btcoex_LpsNotify(PADAPTER, u8 type); 372 void rtw_btcoex_ScanNotify(PADAPTER, u8 type); 373 void rtw_btcoex_ConnectNotify(PADAPTER, u8 action); 374 void rtw_btcoex_MediaStatusNotify(PADAPTER, u8 mediaStatus); 375 void rtw_btcoex_SpecialPacketNotify(PADAPTER, u8 pktType); 376 void rtw_btcoex_IQKNotify(PADAPTER padapter, u8 state); 377 void rtw_btcoex_BtInfoNotify(PADAPTER, u8 length, u8 *tmpBuf); 378 void rtw_btcoex_BtMpRptNotify(PADAPTER, u8 length, u8 *tmpBuf); 379 void rtw_btcoex_SuspendNotify(PADAPTER, u8 state); 380 void rtw_btcoex_HaltNotify(PADAPTER); 381 void rtw_btcoex_switchband_notify(u8 under_scan, u8 band_type); 382 void rtw_btcoex_WlFwDbgInfoNotify(PADAPTER padapter, u8* tmpBuf, u8 length); 383 void rtw_btcoex_rx_rate_change_notify(PADAPTER padapter, u8 is_data_frame, u8 rate_id); 384 void rtw_btcoex_SwitchBtTRxMask(PADAPTER); 385 void rtw_btcoex_Switch(PADAPTER, u8 enable); 386 u8 rtw_btcoex_IsBtDisabled(PADAPTER); 387 void rtw_btcoex_Handler(PADAPTER); 388 s32 rtw_btcoex_IsBTCoexRejectAMPDU(PADAPTER padapter); 389 s32 rtw_btcoex_IsBTCoexCtrlAMPDUSize(PADAPTER); 390 u32 rtw_btcoex_GetAMPDUSize(PADAPTER); 391 void rtw_btcoex_SetManualControl(PADAPTER, u8 bmanual); 392 u8 rtw_btcoex_1Ant(PADAPTER); 393 u8 rtw_btcoex_IsBtControlLps(PADAPTER); 394 u8 rtw_btcoex_IsLpsOn(PADAPTER); 395 u8 rtw_btcoex_RpwmVal(PADAPTER); 396 u8 rtw_btcoex_LpsVal(PADAPTER); 397 u32 rtw_btcoex_GetRaMask(PADAPTER); 398 void rtw_btcoex_RecordPwrMode(PADAPTER, u8 *pCmdBuf, u8 cmdLen); 399 void rtw_btcoex_DisplayBtCoexInfo(PADAPTER, u8 *pbuf, u32 bufsize); 400 void rtw_btcoex_SetDBG(PADAPTER, u32 *pDbgModule); 401 u32 rtw_btcoex_GetDBG(PADAPTER, u8 *pStrBuf, u32 bufSize); 402 u8 rtw_btcoex_IncreaseScanDeviceNum(PADAPTER); 403 u8 rtw_btcoex_IsBtLinkExist(PADAPTER); 404 void rtw_btcoex_pta_off_on_notify(PADAPTER padapter, u8 bBTON); 405 406 #ifdef CONFIG_RF4CE_COEXIST 407 void rtw_btcoex_SetRf4ceLinkState(PADAPTER padapter, u8 state); 408 u8 rtw_btcoex_GetRf4ceLinkState(PADAPTER padapter); 409 #endif 410 411 #ifdef CONFIG_BT_COEXIST_SOCKET_TRX 412 void rtw_btcoex_SetBtPatchVersion(PADAPTER padapter, u16 btHciVer, u16 btPatchVer); 413 void rtw_btcoex_SetHciVersion(PADAPTER padapter, u16 hciVersion); 414 void rtw_btcoex_StackUpdateProfileInfo(void); 415 void rtw_btcoex_init_socket(_adapter *padapter); 416 void rtw_btcoex_close_socket(_adapter *padapter); 417 void rtw_btcoex_dump_tx_msg(u8 *tx_msg, u8 len, u8 *msg_name); 418 u8 rtw_btcoex_sendmsgbysocket(_adapter *padapter, u8 *msg, u8 msg_size, bool force); 419 u8 rtw_btcoex_create_kernel_socket(_adapter *padapter); 420 void rtw_btcoex_close_kernel_socket(_adapter *padapter); 421 void rtw_btcoex_recvmsgbysocket(void *data); 422 u16 rtw_btcoex_parse_recv_data(u8 *msg, u8 msg_size); 423 u8 rtw_btcoex_btinfo_cmd(PADAPTER padapter, u8 *pbuf, u16 length); 424 void rtw_btcoex_parse_hci_cmd(_adapter *padapter, u8 *cmd, u16 len); 425 void rtw_btcoex_SendEventExtBtCoexControl(PADAPTER Adapter, u8 bNeedDbgRsp, u8 dataLen, void *pData); 426 void rtw_btcoex_SendEventExtBtInfoControl(PADAPTER Adapter, u8 dataLen, void *pData); 427 void rtw_btcoex_SendScanNotify(PADAPTER padapter, u8 scanType); 428 #define BT_SendEventExtBtCoexControl(Adapter, bNeedDbgRsp, dataLen, pData) rtw_btcoex_SendEventExtBtCoexControl(Adapter, bNeedDbgRsp, dataLen, pData) 429 #define BT_SendEventExtBtInfoControl(Adapter, dataLen, pData) rtw_btcoex_SendEventExtBtInfoControl(Adapter, dataLen, pData) 430 #endif /* CONFIG_BT_COEXIST_SOCKET_TRX */ 431 u16 rtw_btcoex_btreg_read(PADAPTER padapter, u8 type, u16 addr, u32 *data); 432 u16 rtw_btcoex_btreg_write(PADAPTER padapter, u8 type, u16 addr, u16 val); 433 u8 rtw_btcoex_get_bt_coexist(PADAPTER padapter); 434 u8 rtw_btcoex_get_chip_type(PADAPTER padapter); 435 u8 rtw_btcoex_get_pg_ant_num(PADAPTER padapter); 436 u8 rtw_btcoex_get_pg_single_ant_path(PADAPTER padapter); 437 u8 rtw_btcoex_get_pg_rfe_type(PADAPTER padapter); 438 u8 rtw_btcoex_is_tfbga_package_type(PADAPTER padapter); 439 u8 rtw_btcoex_get_ant_div_cfg(PADAPTER padapter); 440 441 /* ================================================== 442 * Below Functions are called by BT-Coex 443 * ================================================== */ 444 void rtw_btcoex_rx_ampdu_apply(PADAPTER padapter); 445 void rtw_btcoex_LPS_Enter(PADAPTER padapter); 446 u8 rtw_btcoex_LPS_Leave(PADAPTER padapter); 447 448 #endif /* __RTW_BTCOEX_H__ */ 449