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