1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __HALBTC_OUT_SRC_H__ 3 #define __HALBTC_OUT_SRC_H__ 4 5 #define NORMAL_EXEC FALSE 6 #define FORCE_EXEC TRUE 7 8 #define BTC_RF_OFF 0x0 9 #define BTC_RF_ON 0x1 10 11 #define BTC_RF_A 0x0 12 #define BTC_RF_B 0x1 13 #define BTC_RF_C 0x2 14 #define BTC_RF_D 0x3 15 16 #define BTC_SMSP SINGLEMAC_SINGLEPHY 17 #define BTC_DMDP DUALMAC_DUALPHY 18 #define BTC_DMSP DUALMAC_SINGLEPHY 19 #define BTC_MP_UNKNOWN 0xff 20 21 #define BT_COEX_ANT_TYPE_PG 0 22 #define BT_COEX_ANT_TYPE_ANTDIV 1 23 #define BT_COEX_ANT_TYPE_DETECTED 2 24 25 #define BTC_MIMO_PS_STATIC 0 // 1ss 26 #define BTC_MIMO_PS_DYNAMIC 1 // 2ss 27 28 #define BTC_RATE_DISABLE 0 29 #define BTC_RATE_ENABLE 1 30 31 // single Antenna definition 32 #define BTC_ANT_PATH_WIFI 0 33 #define BTC_ANT_PATH_BT 1 34 #define BTC_ANT_PATH_PTA 2 35 // dual Antenna definition 36 #define BTC_ANT_WIFI_AT_MAIN 0 37 #define BTC_ANT_WIFI_AT_AUX 1 38 // coupler Antenna definition 39 #define BTC_ANT_WIFI_AT_CPL_MAIN 0 40 #define BTC_ANT_WIFI_AT_CPL_AUX 1 41 42 typedef enum _BTC_POWERSAVE_TYPE{ 43 BTC_PS_WIFI_NATIVE = 0, // wifi original power save behavior 44 BTC_PS_LPS_ON = 1, 45 BTC_PS_LPS_OFF = 2, 46 BTC_PS_MAX 47 } BTC_POWERSAVE_TYPE, *PBTC_POWERSAVE_TYPE; 48 49 typedef enum _BTC_BT_REG_TYPE{ 50 BTC_BT_REG_RF = 0, 51 BTC_BT_REG_MODEM = 1, 52 BTC_BT_REG_BLUEWIZE = 2, 53 BTC_BT_REG_VENDOR = 3, 54 BTC_BT_REG_LE = 4, 55 BTC_BT_REG_MAX 56 } BTC_BT_REG_TYPE, *PBTC_BT_REG_TYPE; 57 58 typedef enum _BTC_CHIP_INTERFACE{ 59 BTC_INTF_UNKNOWN = 0, 60 BTC_INTF_PCI = 1, 61 BTC_INTF_USB = 2, 62 BTC_INTF_SDIO = 3, 63 BTC_INTF_MAX 64 } BTC_CHIP_INTERFACE, *PBTC_CHIP_INTERFACE; 65 66 typedef enum _BTC_CHIP_TYPE{ 67 BTC_CHIP_UNDEF = 0, 68 BTC_CHIP_CSR_BC4 = 1, 69 BTC_CHIP_CSR_BC8 = 2, 70 BTC_CHIP_RTL8723A = 3, 71 BTC_CHIP_RTL8821 = 4, 72 BTC_CHIP_RTL8723B = 5, 73 BTC_CHIP_MAX 74 } BTC_CHIP_TYPE, *PBTC_CHIP_TYPE; 75 76 // following is for wifi link status 77 #define WIFI_STA_CONNECTED BIT0 78 #define WIFI_AP_CONNECTED BIT1 79 #define WIFI_HS_CONNECTED BIT2 80 #define WIFI_P2P_GO_CONNECTED BIT3 81 #define WIFI_P2P_GC_CONNECTED BIT4 82 83 // following is for command line utility 84 #define CL_SPRINTF rsprintf 85 #define CL_PRINTF DCMD_Printf 86 87 88 typedef struct _BTC_BOARD_INFO{ 89 // The following is some board information 90 u1Byte btChipType; 91 u1Byte pgAntNum; // pg ant number 92 u1Byte btdmAntNum; // ant number for btdm 93 u1Byte btdmAntNumByAntDet; // ant number for btdm after antenna detection 94 u1Byte btdmAntPos; //Bryant Add to indicate Antenna Position for (pgAntNum = 2) && (btdmAntNum =1) (DPDT+1Ant case) 95 u1Byte singleAntPath; // current used for 8723b only, 1=>s0, 0=>s1 96 u1Byte bTfbgaPackage; //for Antenna detect threshold 97 u1Byte btdmAntDetFinish; 98 u1Byte antType; 99 } BTC_BOARD_INFO, *PBTC_BOARD_INFO; 100 101 typedef enum _BTC_DBG_OPCODE{ 102 BTC_DBG_SET_COEX_NORMAL = 0x0, 103 BTC_DBG_SET_COEX_WIFI_ONLY = 0x1, 104 BTC_DBG_SET_COEX_BT_ONLY = 0x2, 105 BTC_DBG_SET_COEX_DEC_BT_PWR = 0x3, 106 BTC_DBG_SET_COEX_BT_AFH_MAP = 0x4, 107 BTC_DBG_SET_COEX_BT_IGNORE_WLAN_ACT = 0x5, 108 BTC_DBG_MAX 109 }BTC_DBG_OPCODE,*PBTC_DBG_OPCODE; 110 111 typedef enum _BTC_RSSI_STATE{ 112 BTC_RSSI_STATE_HIGH = 0x0, 113 BTC_RSSI_STATE_MEDIUM = 0x1, 114 BTC_RSSI_STATE_LOW = 0x2, 115 BTC_RSSI_STATE_STAY_HIGH = 0x3, 116 BTC_RSSI_STATE_STAY_MEDIUM = 0x4, 117 BTC_RSSI_STATE_STAY_LOW = 0x5, 118 BTC_RSSI_MAX 119 }BTC_RSSI_STATE,*PBTC_RSSI_STATE; 120 #define BTC_RSSI_HIGH(_rssi_) ((_rssi_==BTC_RSSI_STATE_HIGH||_rssi_==BTC_RSSI_STATE_STAY_HIGH)? TRUE:FALSE) 121 #define BTC_RSSI_MEDIUM(_rssi_) ((_rssi_==BTC_RSSI_STATE_MEDIUM||_rssi_==BTC_RSSI_STATE_STAY_MEDIUM)? TRUE:FALSE) 122 #define BTC_RSSI_LOW(_rssi_) ((_rssi_==BTC_RSSI_STATE_LOW||_rssi_==BTC_RSSI_STATE_STAY_LOW)? TRUE:FALSE) 123 124 typedef enum _BTC_WIFI_ROLE{ 125 BTC_ROLE_STATION = 0x0, 126 BTC_ROLE_AP = 0x1, 127 BTC_ROLE_IBSS = 0x2, 128 BTC_ROLE_HS_MODE = 0x3, 129 BTC_ROLE_MAX 130 }BTC_WIFI_ROLE,*PBTC_WIFI_ROLE; 131 132 typedef enum _BTC_WIRELESS_FREQ{ 133 BTC_FREQ_2_4G = 0x0, 134 BTC_FREQ_5G = 0x1, 135 BTC_FREQ_MAX 136 }BTC_WIRELESS_FREQ,*PBTC_WIRELESS_FREQ; 137 138 typedef enum _BTC_WIFI_BW_MODE{ 139 BTC_WIFI_BW_LEGACY = 0x0, 140 BTC_WIFI_BW_HT20 = 0x1, 141 BTC_WIFI_BW_HT40 = 0x2, 142 BTC_WIFI_BW_HT80 = 0x3, 143 BTC_WIFI_BW_HT160 = 0x4, 144 BTC_WIFI_BW_MAX 145 }BTC_WIFI_BW_MODE,*PBTC_WIFI_BW_MODE; 146 147 typedef enum _BTC_WIFI_TRAFFIC_DIR{ 148 BTC_WIFI_TRAFFIC_TX = 0x0, 149 BTC_WIFI_TRAFFIC_RX = 0x1, 150 BTC_WIFI_TRAFFIC_MAX 151 }BTC_WIFI_TRAFFIC_DIR,*PBTC_WIFI_TRAFFIC_DIR; 152 153 typedef enum _BTC_WIFI_PNP{ 154 BTC_WIFI_PNP_WAKE_UP = 0x0, 155 BTC_WIFI_PNP_SLEEP = 0x1, 156 BTC_WIFI_PNP_MAX 157 }BTC_WIFI_PNP,*PBTC_WIFI_PNP; 158 159 typedef enum _BTC_IOT_PEER 160 { 161 BTC_IOT_PEER_UNKNOWN = 0, 162 BTC_IOT_PEER_REALTEK = 1, 163 BTC_IOT_PEER_REALTEK_92SE = 2, 164 BTC_IOT_PEER_BROADCOM = 3, 165 BTC_IOT_PEER_RALINK = 4, 166 BTC_IOT_PEER_ATHEROS = 5, 167 BTC_IOT_PEER_CISCO = 6, 168 BTC_IOT_PEER_MERU = 7, 169 BTC_IOT_PEER_MARVELL = 8, 170 BTC_IOT_PEER_REALTEK_SOFTAP = 9,// peer is RealTek SOFT_AP, by Bohn, 2009.12.17 171 BTC_IOT_PEER_SELF_SOFTAP = 10, // Self is SoftAP 172 BTC_IOT_PEER_AIRGO = 11, 173 BTC_IOT_PEER_INTEL = 12, 174 BTC_IOT_PEER_RTK_APCLIENT = 13, 175 BTC_IOT_PEER_REALTEK_81XX = 14, 176 BTC_IOT_PEER_REALTEK_WOW = 15, 177 BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 16, 178 BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 17, 179 BTC_IOT_PEER_MAX, 180 }BTC_IOT_PEER, *PBTC_IOT_PEER; 181 182 //for 8723b-d cut large current issue 183 typedef enum _BT_WIFI_COEX_STATE{ 184 BTC_WIFI_STAT_INIT, 185 BTC_WIFI_STAT_IQK, 186 BTC_WIFI_STAT_NORMAL_OFF, 187 BTC_WIFI_STAT_MP_OFF, 188 BTC_WIFI_STAT_NORMAL, 189 BTC_WIFI_STAT_ANT_DIV, 190 BTC_WIFI_STAT_MAX 191 }BT_WIFI_COEX_STATE,*PBT_WIFI_COEX_STATE; 192 193 typedef enum _BT_ANT_TYPE{ 194 BTC_ANT_TYPE_0, 195 BTC_ANT_TYPE_1, 196 BTC_ANT_TYPE_2, 197 BTC_ANT_TYPE_3, 198 BTC_ANT_TYPE_4, 199 BTC_ANT_TYPE_MAX 200 }BT_ANT_TYPE,*PBT_ANT_TYPE; 201 202 // defined for BFP_BTC_GET 203 typedef enum _BTC_GET_TYPE{ 204 // type BOOLEAN 205 BTC_GET_BL_HS_OPERATION, 206 BTC_GET_BL_HS_CONNECTING, 207 BTC_GET_BL_WIFI_CONNECTED, 208 BTC_GET_BL_WIFI_BUSY, 209 BTC_GET_BL_WIFI_SCAN, 210 BTC_GET_BL_WIFI_LINK, 211 BTC_GET_BL_WIFI_ROAM, 212 BTC_GET_BL_WIFI_4_WAY_PROGRESS, 213 BTC_GET_BL_WIFI_UNDER_5G, 214 BTC_GET_BL_WIFI_AP_MODE_ENABLE, 215 BTC_GET_BL_WIFI_ENABLE_ENCRYPTION, 216 BTC_GET_BL_WIFI_UNDER_B_MODE, 217 BTC_GET_BL_EXT_SWITCH, 218 BTC_GET_BL_WIFI_IS_IN_MP_MODE, 219 BTC_GET_BL_IS_ASUS_8723B, 220 221 // type s4Byte 222 BTC_GET_S4_WIFI_RSSI, 223 BTC_GET_S4_HS_RSSI, 224 225 // type u4Byte 226 BTC_GET_U4_WIFI_BW, 227 BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, 228 BTC_GET_U4_WIFI_FW_VER, 229 BTC_GET_U4_WIFI_LINK_STATUS, 230 BTC_GET_U4_BT_PATCH_VER, 231 232 // type u1Byte 233 BTC_GET_U1_WIFI_DOT11_CHNL, 234 BTC_GET_U1_WIFI_CENTRAL_CHNL, 235 BTC_GET_U1_WIFI_HS_CHNL, 236 BTC_GET_U1_MAC_PHY_MODE, 237 BTC_GET_U1_AP_NUM, 238 BTC_GET_U1_ANT_TYPE, 239 BTC_GET_U1_IOT_PEER, 240 241 //===== for 1Ant ====== 242 BTC_GET_U1_LPS_MODE, 243 244 BTC_GET_MAX 245 }BTC_GET_TYPE,*PBTC_GET_TYPE; 246 247 // defined for BFP_BTC_SET 248 typedef enum _BTC_SET_TYPE{ 249 // type BOOLEAN 250 BTC_SET_BL_BT_DISABLE, 251 BTC_SET_BL_BT_TRAFFIC_BUSY, 252 BTC_SET_BL_BT_LIMITED_DIG, 253 BTC_SET_BL_FORCE_TO_ROAM, 254 BTC_SET_BL_TO_REJ_AP_AGG_PKT, 255 BTC_SET_BL_BT_CTRL_AGG_SIZE, 256 BTC_SET_BL_INC_SCAN_DEV_NUM, 257 BTC_SET_BL_BT_TX_RX_MASK, 258 BTC_SET_BL_MIRACAST_PLUS_BT, 259 260 // type u1Byte 261 BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, 262 BTC_SET_U1_AGG_BUF_SIZE, 263 264 // type trigger some action 265 BTC_SET_ACT_GET_BT_RSSI, 266 BTC_SET_ACT_AGGREGATE_CTRL, 267 //===== for 1Ant ====== 268 // type BOOLEAN 269 270 // type u1Byte 271 BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, 272 BTC_SET_U1_LPS_VAL, 273 BTC_SET_U1_RPWM_VAL, 274 // type trigger some action 275 BTC_SET_ACT_LEAVE_LPS, 276 BTC_SET_ACT_ENTER_LPS, 277 BTC_SET_ACT_NORMAL_LPS, 278 BTC_SET_ACT_DISABLE_LOW_POWER, 279 BTC_SET_ACT_UPDATE_RAMASK, 280 BTC_SET_ACT_SEND_MIMO_PS, 281 // BT Coex related 282 BTC_SET_ACT_CTRL_BT_INFO, 283 BTC_SET_ACT_CTRL_BT_COEX, 284 BTC_SET_ACT_CTRL_8723B_ANT, 285 //================= 286 BTC_SET_MAX 287 }BTC_SET_TYPE,*PBTC_SET_TYPE; 288 289 typedef enum _BTC_DBG_DISP_TYPE{ 290 BTC_DBG_DISP_COEX_STATISTICS = 0x0, 291 BTC_DBG_DISP_BT_LINK_INFO = 0x1, 292 BTC_DBG_DISP_WIFI_STATUS = 0x2, 293 BTC_DBG_DISP_MAX 294 }BTC_DBG_DISP_TYPE,*PBTC_DBG_DISP_TYPE; 295 296 typedef enum _BTC_NOTIFY_TYPE_IPS{ 297 BTC_IPS_LEAVE = 0x0, 298 BTC_IPS_ENTER = 0x1, 299 BTC_IPS_MAX 300 }BTC_NOTIFY_TYPE_IPS,*PBTC_NOTIFY_TYPE_IPS; 301 typedef enum _BTC_NOTIFY_TYPE_LPS{ 302 BTC_LPS_DISABLE = 0x0, 303 BTC_LPS_ENABLE = 0x1, 304 BTC_LPS_MAX 305 }BTC_NOTIFY_TYPE_LPS,*PBTC_NOTIFY_TYPE_LPS; 306 typedef enum _BTC_NOTIFY_TYPE_SCAN{ 307 BTC_SCAN_FINISH = 0x0, 308 BTC_SCAN_START = 0x1, 309 BTC_SCAN_MAX 310 }BTC_NOTIFY_TYPE_SCAN,*PBTC_NOTIFY_TYPE_SCAN; 311 typedef enum _BTC_NOTIFY_TYPE_ASSOCIATE{ 312 BTC_ASSOCIATE_FINISH = 0x0, 313 BTC_ASSOCIATE_START = 0x1, 314 BTC_ASSOCIATE_MAX 315 }BTC_NOTIFY_TYPE_ASSOCIATE,*PBTC_NOTIFY_TYPE_ASSOCIATE; 316 typedef enum _BTC_NOTIFY_TYPE_MEDIA_STATUS{ 317 BTC_MEDIA_DISCONNECT = 0x0, 318 BTC_MEDIA_CONNECT = 0x1, 319 BTC_MEDIA_MAX 320 }BTC_NOTIFY_TYPE_MEDIA_STATUS,*PBTC_NOTIFY_TYPE_MEDIA_STATUS; 321 typedef enum _BTC_NOTIFY_TYPE_SPECIAL_PACKET{ 322 BTC_PACKET_UNKNOWN = 0x0, 323 BTC_PACKET_DHCP = 0x1, 324 BTC_PACKET_ARP = 0x2, 325 BTC_PACKET_EAPOL = 0x3, 326 BTC_PACKET_MAX 327 }BTC_NOTIFY_TYPE_SPECIAL_PACKET,*PBTC_NOTIFY_TYPE_SPECIAL_PACKET; 328 typedef enum _BTC_NOTIFY_TYPE_STACK_OPERATION{ 329 BTC_STACK_OP_NONE = 0x0, 330 BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1, 331 BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2, 332 BTC_STACK_OP_MAX 333 }BTC_NOTIFY_TYPE_STACK_OPERATION,*PBTC_NOTIFY_TYPE_STACK_OPERATION; 334 335 //Bryant Add 336 typedef enum _BTC_ANTENNA_POS{ 337 BTC_ANTENNA_AT_MAIN_PORT = 0x1, 338 BTC_ANTENNA_AT_AUX_PORT = 0x2, 339 }BTC_ANTENNA_POS,*PBTC_ANTENNA_POS; 340 341 //Bryant Add 342 typedef enum _BTC_BT_OFFON{ 343 BTC_BT_OFF = 0x0, 344 BTC_BT_ON = 0x1, 345 }BTC_BTOFFON,*PBTC_BT_OFFON; 346 347 typedef u1Byte 348 (*BFP_BTC_R1)( 349 IN PVOID pBtcContext, 350 IN u4Byte RegAddr 351 ); 352 typedef u2Byte 353 (*BFP_BTC_R2)( 354 IN PVOID pBtcContext, 355 IN u4Byte RegAddr 356 ); 357 typedef u4Byte 358 (*BFP_BTC_R4)( 359 IN PVOID pBtcContext, 360 IN u4Byte RegAddr 361 ); 362 typedef VOID 363 (*BFP_BTC_W1)( 364 IN PVOID pBtcContext, 365 IN u4Byte RegAddr, 366 IN u1Byte Data 367 ); 368 typedef VOID 369 (*BFP_BTC_W1_BIT_MASK)( 370 IN PVOID pBtcContext, 371 IN u4Byte regAddr, 372 IN u1Byte bitMask, 373 IN u1Byte data1b 374 ); 375 typedef VOID 376 (*BFP_BTC_W2)( 377 IN PVOID pBtcContext, 378 IN u4Byte RegAddr, 379 IN u2Byte Data 380 ); 381 typedef VOID 382 (*BFP_BTC_W4)( 383 IN PVOID pBtcContext, 384 IN u4Byte RegAddr, 385 IN u4Byte Data 386 ); 387 typedef VOID 388 (*BFP_BTC_LOCAL_REG_W1)( 389 IN PVOID pBtcContext, 390 IN u4Byte RegAddr, 391 IN u1Byte Data 392 ); 393 typedef VOID 394 (*BFP_BTC_SET_BB_REG)( 395 IN PVOID pBtcContext, 396 IN u4Byte RegAddr, 397 IN u4Byte BitMask, 398 IN u4Byte Data 399 ); 400 typedef u4Byte 401 (*BFP_BTC_GET_BB_REG)( 402 IN PVOID pBtcContext, 403 IN u4Byte RegAddr, 404 IN u4Byte BitMask 405 ); 406 typedef VOID 407 (*BFP_BTC_SET_RF_REG)( 408 IN PVOID pBtcContext, 409 IN u1Byte eRFPath, 410 IN u4Byte RegAddr, 411 IN u4Byte BitMask, 412 IN u4Byte Data 413 ); 414 typedef u4Byte 415 (*BFP_BTC_GET_RF_REG)( 416 IN PVOID pBtcContext, 417 IN u1Byte eRFPath, 418 IN u4Byte RegAddr, 419 IN u4Byte BitMask 420 ); 421 typedef VOID 422 (*BFP_BTC_FILL_H2C)( 423 IN PVOID pBtcContext, 424 IN u1Byte elementId, 425 IN u4Byte cmdLen, 426 IN pu1Byte pCmdBuffer 427 ); 428 429 typedef BOOLEAN 430 (*BFP_BTC_GET)( 431 IN PVOID pBtCoexist, 432 IN u1Byte getType, 433 OUT PVOID pOutBuf 434 ); 435 436 typedef BOOLEAN 437 (*BFP_BTC_SET)( 438 IN PVOID pBtCoexist, 439 IN u1Byte setType, 440 OUT PVOID pInBuf 441 ); 442 typedef VOID 443 (*BFP_BTC_SET_BT_REG)( 444 IN PVOID pBtcContext, 445 IN u1Byte regType, 446 IN u4Byte offset, 447 IN u4Byte value 448 ); 449 typedef BOOLEAN 450 (*BFP_BTC_SET_BT_ANT_DETECTION)( 451 IN PVOID pBtcContext, 452 IN u1Byte txTime, 453 IN u1Byte btChnl 454 ); 455 typedef u4Byte 456 (*BFP_BTC_GET_BT_REG)( 457 IN PVOID pBtcContext, 458 IN u1Byte regType, 459 IN u4Byte offset 460 ); 461 typedef VOID 462 (*BFP_BTC_DISP_DBG_MSG)( 463 IN PVOID pBtCoexist, 464 IN u1Byte dispType 465 ); 466 467 typedef struct _BTC_BT_INFO{ 468 BOOLEAN bBtDisabled; 469 u1Byte rssiAdjustForAgcTableOn; 470 u1Byte rssiAdjustFor1AntCoexType; 471 BOOLEAN bPreBtCtrlAggBufSize; 472 BOOLEAN bBtCtrlAggBufSize; 473 BOOLEAN bPreRejectAggPkt; 474 BOOLEAN bRejectAggPkt; 475 BOOLEAN bIncreaseScanDevNum; 476 BOOLEAN bBtTxRxMask; 477 u1Byte preAggBufSize; 478 u1Byte aggBufSize; 479 BOOLEAN bBtBusy; 480 BOOLEAN bLimitedDig; 481 u2Byte btHciVer; 482 u2Byte btRealFwVer; 483 u1Byte btFwVer; 484 u4Byte getBtFwVerCnt; 485 BOOLEAN bMiracastPlusBt; 486 487 BOOLEAN bBtDisableLowPwr; 488 489 BOOLEAN bBtCtrlLps; 490 BOOLEAN bBtLpsOn; 491 BOOLEAN bForceToRoam; // for 1Ant solution 492 u1Byte lpsVal; 493 u1Byte rpwmVal; 494 u4Byte raMask; 495 } BTC_BT_INFO, *PBTC_BT_INFO; 496 497 typedef struct _BTC_STACK_INFO{ 498 BOOLEAN bProfileNotified; 499 u2Byte hciVersion; // stack hci version 500 u1Byte numOfLink; 501 BOOLEAN bBtLinkExist; 502 BOOLEAN bScoExist; 503 BOOLEAN bAclExist; 504 BOOLEAN bA2dpExist; 505 BOOLEAN bHidExist; 506 u1Byte numOfHid; 507 BOOLEAN bPanExist; 508 BOOLEAN bUnknownAclExist; 509 s1Byte minBtRssi; 510 } BTC_STACK_INFO, *PBTC_STACK_INFO; 511 512 typedef struct _BTC_BT_LINK_INFO{ 513 BOOLEAN bBtLinkExist; 514 BOOLEAN bBtHiPriLinkExist; 515 BOOLEAN bScoExist; 516 BOOLEAN bScoOnly; 517 BOOLEAN bA2dpExist; 518 BOOLEAN bA2dpOnly; 519 BOOLEAN bHidExist; 520 BOOLEAN bHidOnly; 521 BOOLEAN bPanExist; 522 BOOLEAN bPanOnly; 523 BOOLEAN bSlaveRole; 524 BOOLEAN bAclBusy; 525 } BTC_BT_LINK_INFO, *PBTC_BT_LINK_INFO; 526 527 typedef struct _BTC_STATISTICS{ 528 u4Byte cntBind; 529 u4Byte cntPowerOn; 530 u4Byte cntPreLoadFirmware; 531 u4Byte cntInitHwConfig; 532 u4Byte cntInitCoexDm; 533 u4Byte cntIpsNotify; 534 u4Byte cntLpsNotify; 535 u4Byte cntScanNotify; 536 u4Byte cntConnectNotify; 537 u4Byte cntMediaStatusNotify; 538 u4Byte cntSpecialPacketNotify; 539 u4Byte cntBtInfoNotify; 540 u4Byte cntRfStatusNotify; 541 u4Byte cntPeriodical; 542 u4Byte cntCoexDmSwitch; 543 u4Byte cntStackOperationNotify; 544 u4Byte cntDbgCtrl; 545 } BTC_STATISTICS, *PBTC_STATISTICS; 546 547 typedef struct _BTC_COEXIST{ 548 BOOLEAN bBinded; // make sure only one adapter can bind the data context 549 PVOID Adapter; // default adapter 550 BTC_BOARD_INFO boardInfo; 551 BTC_BT_INFO btInfo; // some bt info referenced by non-bt module 552 BTC_STACK_INFO stackInfo; 553 BTC_BT_LINK_INFO btLinkInfo; 554 BTC_CHIP_INTERFACE chipInterface; 555 556 BOOLEAN bInitilized; 557 BOOLEAN bStopCoexDm; 558 BOOLEAN bManualControl; 559 pu1Byte cliBuf; 560 BTC_STATISTICS statistics; 561 u1Byte pwrModeVal[10]; 562 563 // function pointers 564 // io related 565 BFP_BTC_R1 fBtcRead1Byte; 566 BFP_BTC_W1 fBtcWrite1Byte; 567 BFP_BTC_W1_BIT_MASK fBtcWrite1ByteBitMask; 568 BFP_BTC_R2 fBtcRead2Byte; 569 BFP_BTC_W2 fBtcWrite2Byte; 570 BFP_BTC_R4 fBtcRead4Byte; 571 BFP_BTC_W4 fBtcWrite4Byte; 572 BFP_BTC_LOCAL_REG_W1 fBtcWriteLocalReg1Byte; 573 // read/write bb related 574 BFP_BTC_SET_BB_REG fBtcSetBbReg; 575 BFP_BTC_GET_BB_REG fBtcGetBbReg; 576 577 // read/write rf related 578 BFP_BTC_SET_RF_REG fBtcSetRfReg; 579 BFP_BTC_GET_RF_REG fBtcGetRfReg; 580 581 // fill h2c related 582 BFP_BTC_FILL_H2C fBtcFillH2c; 583 // other 584 BFP_BTC_DISP_DBG_MSG fBtcDispDbgMsg; 585 // normal get/set related 586 BFP_BTC_GET fBtcGet; 587 BFP_BTC_SET fBtcSet; 588 589 BFP_BTC_GET_BT_REG fBtcGetBtReg; 590 BFP_BTC_SET_BT_REG fBtcSetBtReg; 591 592 BFP_BTC_SET_BT_ANT_DETECTION fBtcSetBtAntDetection; 593 } BTC_COEXIST, *PBTC_COEXIST; 594 595 extern BTC_COEXIST GLBtCoexist; 596 597 BOOLEAN 598 EXhalbtcoutsrc_InitlizeVariables( 599 IN PVOID Adapter 600 ); 601 VOID 602 EXhalbtcoutsrc_PowerOnSetting( 603 IN PBTC_COEXIST pBtCoexist 604 ); 605 VOID 606 EXhalbtcoutsrc_PreLoadFirmware( 607 IN PBTC_COEXIST pBtCoexist 608 ); 609 VOID 610 EXhalbtcoutsrc_InitHwConfig( 611 IN PBTC_COEXIST pBtCoexist, 612 IN BOOLEAN bWifiOnly 613 ); 614 VOID 615 EXhalbtcoutsrc_InitCoexDm( 616 IN PBTC_COEXIST pBtCoexist 617 ); 618 VOID 619 EXhalbtcoutsrc_IpsNotify( 620 IN PBTC_COEXIST pBtCoexist, 621 IN u1Byte type 622 ); 623 VOID 624 EXhalbtcoutsrc_LpsNotify( 625 IN PBTC_COEXIST pBtCoexist, 626 IN u1Byte type 627 ); 628 VOID 629 EXhalbtcoutsrc_ScanNotify( 630 IN PBTC_COEXIST pBtCoexist, 631 IN u1Byte type 632 ); 633 VOID 634 EXhalbtcoutsrc_ConnectNotify( 635 IN PBTC_COEXIST pBtCoexist, 636 IN u1Byte action 637 ); 638 VOID 639 EXhalbtcoutsrc_MediaStatusNotify( 640 IN PBTC_COEXIST pBtCoexist, 641 IN RT_MEDIA_STATUS mediaStatus 642 ); 643 VOID 644 EXhalbtcoutsrc_SpecialPacketNotify( 645 IN PBTC_COEXIST pBtCoexist, 646 IN u1Byte pktType 647 ); 648 VOID 649 EXhalbtcoutsrc_BtInfoNotify( 650 IN PBTC_COEXIST pBtCoexist, 651 IN pu1Byte tmpBuf, 652 IN u1Byte length 653 ); 654 VOID 655 EXhalbtcoutsrc_RfStatusNotify( 656 IN PBTC_COEXIST pBtCoexist, 657 IN u1Byte type 658 ); 659 VOID 660 EXhalbtcoutsrc_StackOperationNotify( 661 IN PBTC_COEXIST pBtCoexist, 662 IN u1Byte type 663 ); 664 VOID 665 EXhalbtcoutsrc_HaltNotify( 666 IN PBTC_COEXIST pBtCoexist 667 ); 668 VOID 669 EXhalbtcoutsrc_PnpNotify( 670 IN PBTC_COEXIST pBtCoexist, 671 IN u1Byte pnpState 672 ); 673 VOID 674 EXhalbtcoutsrc_CoexDmSwitch( 675 IN PBTC_COEXIST pBtCoexist 676 ); 677 VOID 678 EXhalbtcoutsrc_Periodical( 679 IN PBTC_COEXIST pBtCoexist 680 ); 681 VOID 682 EXhalbtcoutsrc_DbgControl( 683 IN PBTC_COEXIST pBtCoexist, 684 IN u1Byte opCode, 685 IN u1Byte opLen, 686 IN pu1Byte pData 687 ); 688 VOID 689 EXhalbtcoutsrc_AntennaDetection( 690 IN PBTC_COEXIST pBtCoexist, 691 IN u4Byte centFreq, 692 IN u4Byte offset, 693 IN u4Byte span, 694 IN u4Byte seconds 695 ); 696 VOID 697 EXhalbtcoutsrc_StackUpdateProfileInfo( 698 VOID 699 ); 700 VOID 701 EXhalbtcoutsrc_SetHciVersion( 702 IN u2Byte hciVersion 703 ); 704 VOID 705 EXhalbtcoutsrc_SetBtPatchVersion( 706 IN u2Byte btHciVersion, 707 IN u2Byte btPatchVersion 708 ); 709 VOID 710 EXhalbtcoutsrc_UpdateMinBtRssi( 711 IN s1Byte btRssi 712 ); 713 #if 0 714 VOID 715 EXhalbtcoutsrc_SetBtExist( 716 IN BOOLEAN bBtExist 717 ); 718 #endif 719 VOID 720 EXhalbtcoutsrc_SetChipType( 721 IN u1Byte chipType 722 ); 723 VOID 724 EXhalbtcoutsrc_SetAntNum( 725 IN u1Byte type, 726 IN u1Byte antNum 727 ); 728 VOID 729 EXhalbtcoutsrc_SetSingleAntPath( 730 IN u1Byte singleAntPath 731 ); 732 VOID 733 EXhalbtcoutsrc_DisplayBtCoexInfo( 734 IN PBTC_COEXIST pBtCoexist 735 ); 736 VOID 737 EXhalbtcoutsrc_DisplayAntDetection( 738 IN PBTC_COEXIST pBtCoexist 739 ); 740 741 #endif 742