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 __HALBTC_OUT_SRC_H__ 16 #define __HALBTC_OUT_SRC_H__ 17 18 #define NORMAL_EXEC false 19 #define FORCE_EXEC true 20 21 #define BTC_RF_OFF 0x0 22 #define BTC_RF_ON 0x1 23 24 #define BTC_RF_A 0x0 25 #define BTC_RF_B 0x1 26 #define BTC_RF_C 0x2 27 #define BTC_RF_D 0x3 28 29 #define BTC_SMSP SINGLEMAC_SINGLEPHY 30 #define BTC_DMDP DUALMAC_DUALPHY 31 #define BTC_DMSP DUALMAC_SINGLEPHY 32 #define BTC_MP_UNKNOWN 0xff 33 34 #define BT_COEX_ANT_TYPE_PG 0 35 #define BT_COEX_ANT_TYPE_ANTDIV 1 36 #define BT_COEX_ANT_TYPE_DETECTED 2 37 38 #define BTC_MIMO_PS_STATIC 0 /* 1ss */ 39 #define BTC_MIMO_PS_DYNAMIC 1 /* 2ss */ 40 41 #define BTC_RATE_DISABLE 0 42 #define BTC_RATE_ENABLE 1 43 44 /* single Antenna definition */ 45 #define BTC_ANT_PATH_WIFI 0 46 #define BTC_ANT_PATH_BT 1 47 #define BTC_ANT_PATH_PTA 2 48 /* dual Antenna definition */ 49 #define BTC_ANT_WIFI_AT_MAIN 0 50 #define BTC_ANT_WIFI_AT_AUX 1 51 /* coupler Antenna definition */ 52 #define BTC_ANT_WIFI_AT_CPL_MAIN 0 53 #define BTC_ANT_WIFI_AT_CPL_AUX 1 54 55 typedef enum _BTC_POWERSAVE_TYPE{ 56 BTC_PS_WIFI_NATIVE = 0, /* wifi original power save behavior */ 57 BTC_PS_LPS_ON = 1, 58 BTC_PS_LPS_OFF = 2, 59 BTC_PS_MAX 60 } BTC_POWERSAVE_TYPE, *PBTC_POWERSAVE_TYPE; 61 62 typedef enum _BTC_BT_REG_TYPE{ 63 BTC_BT_REG_RF = 0, 64 BTC_BT_REG_MODEM = 1, 65 BTC_BT_REG_BLUEWIZE = 2, 66 BTC_BT_REG_VENDOR = 3, 67 BTC_BT_REG_LE = 4, 68 BTC_BT_REG_MAX 69 } BTC_BT_REG_TYPE, *PBTC_BT_REG_TYPE; 70 71 typedef enum _BTC_CHIP_INTERFACE{ 72 BTC_INTF_UNKNOWN = 0, 73 BTC_INTF_PCI = 1, 74 BTC_INTF_USB = 2, 75 BTC_INTF_SDIO = 3, 76 BTC_INTF_MAX 77 } BTC_CHIP_INTERFACE, *PBTC_CHIP_INTERFACE; 78 79 typedef enum _BTC_CHIP_TYPE { 80 BTC_CHIP_UNDEF = 0, 81 BTC_CHIP_CSR_BC4 = 1, 82 BTC_CHIP_CSR_BC8 = 2, 83 BTC_CHIP_RTL8723A = 3, 84 BTC_CHIP_RTL8821 = 4, 85 BTC_CHIP_RTL8723B = 5, 86 BTC_CHIP_MAX 87 } BTC_CHIP_TYPE, *PBTC_CHIP_TYPE; 88 89 typedef enum _BTC_MSG_TYPE { 90 BTC_MSG_INTERFACE = 0x0, 91 BTC_MSG_ALGORITHM = 0x1, 92 BTC_MSG_MAX 93 } BTC_MSG_TYPE; 94 extern u32 GLBtcDbgType[]; 95 96 /* following is for BTC_MSG_INTERFACE */ 97 #define INTF_INIT BIT0 98 #define INTF_NOTIFY BIT2 99 100 /* following is for BTC_ALGORITHM */ 101 #define ALGO_BT_RSSI_STATE BIT0 102 #define ALGO_WIFI_RSSI_STATE BIT1 103 #define ALGO_BT_MONITOR BIT2 104 #define ALGO_TRACE BIT3 105 #define ALGO_TRACE_FW BIT4 106 #define ALGO_TRACE_FW_DETAIL BIT5 107 #define ALGO_TRACE_FW_EXEC BIT6 108 #define ALGO_TRACE_SW BIT7 109 #define ALGO_TRACE_SW_DETAIL BIT8 110 #define ALGO_TRACE_SW_EXEC BIT9 111 112 /* following is for wifi link status */ 113 #define WIFI_STA_CONNECTED BIT0 114 #define WIFI_AP_CONNECTED BIT1 115 #define WIFI_HS_CONNECTED BIT2 116 #define WIFI_P2P_GO_CONNECTED BIT3 117 #define WIFI_P2P_GC_CONNECTED BIT4 118 119 /* following is for command line utility */ 120 #define CL_SPRINTF snprintf 121 #define CL_PRINTF DCMD_Printf 122 123 /* The following is for dbgview print */ 124 #if DBG 125 #define BTC_PRINT(dbgtype, dbgflag, printstr)\ 126 {\ 127 if (GLBtcDbgType[dbgtype] & dbgflag)\ 128 DbgPrint printstr;\ 129 } 130 131 #define BTC_PRINT_F(dbgtype, dbgflag, printstr)\ 132 {\ 133 if (GLBtcDbgType[dbgtype] & dbgflag) {\ 134 DbgPrint("%s(): ", __func__);\ 135 DbgPrint printstr;\ 136 } \ 137 } 138 139 #define BTC_PRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr)\ 140 {\ 141 if (GLBtcDbgType[dbgtype] & dbgflag) {\ 142 int __i;\ 143 u8 *ptr = (u8 *)_Ptr;\ 144 DbgPrint printstr;\ 145 DbgPrint(" ");\ 146 for (__i = 0; __i < 6; __i++)\ 147 DbgPrint("%02X%s", ptr[__i], (__i == 5) ? "" : "-");\ 148 DbgPrint("\n");\ 149 } \ 150 } 151 152 #define BTC_PRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)\ 153 {\ 154 if (GLBtcDbgType[dbgtype] & dbgflag) {\ 155 int __i;\ 156 u8 *ptr = (u8 *)_HexData;\ 157 DbgPrint(_TitleString);\ 158 for (__i = 0; __i < (int)_HexDataLen; __i++) {\ 159 DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0) ? " " : " ");\ 160 if (((__i + 1) % 16) == 0)\ 161 DbgPrint("\n");\ 162 } \ 163 DbgPrint("\n");\ 164 } \ 165 } 166 167 #else 168 #define BTC_PRINT(dbgtype, dbgflag, printstr) no_printk printstr 169 #define BTC_PRINT_F(dbgtype, dbgflag, printstr) no_printk printstr 170 #define BTC_PRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr) no_printk printstr 171 #define BTC_PRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen) \ 172 no_printk("%s %p %zu", _TitleString, _HexData, _HexDataLen) 173 #endif 174 175 typedef struct _BTC_BOARD_INFO { 176 /* The following is some board information */ 177 u8 btChipType; 178 u8 pgAntNum; /* pg ant number */ 179 u8 btdmAntNum; /* ant number for btdm */ 180 u8 btdmAntPos; /* Bryant Add to indicate Antenna Position for (pgAntNum = 2) && (btdmAntNum = 1) (DPDT+1Ant case) */ 181 u8 singleAntPath; /* current used for 8723b only, 1 =>s0, 0 =>s1 */ 182 /* bool bBtExist; */ 183 } BTC_BOARD_INFO, *PBTC_BOARD_INFO; 184 185 typedef enum _BTC_DBG_OPCODE { 186 BTC_DBG_SET_COEX_NORMAL = 0x0, 187 BTC_DBG_SET_COEX_WIFI_ONLY = 0x1, 188 BTC_DBG_SET_COEX_BT_ONLY = 0x2, 189 BTC_DBG_SET_COEX_DEC_BT_PWR = 0x3, 190 BTC_DBG_SET_COEX_BT_AFH_MAP = 0x4, 191 BTC_DBG_SET_COEX_BT_IGNORE_WLAN_ACT = 0x5, 192 BTC_DBG_MAX 193 } BTC_DBG_OPCODE, *PBTC_DBG_OPCODE; 194 195 typedef enum _BTC_RSSI_STATE { 196 BTC_RSSI_STATE_HIGH = 0x0, 197 BTC_RSSI_STATE_MEDIUM = 0x1, 198 BTC_RSSI_STATE_LOW = 0x2, 199 BTC_RSSI_STATE_STAY_HIGH = 0x3, 200 BTC_RSSI_STATE_STAY_MEDIUM = 0x4, 201 BTC_RSSI_STATE_STAY_LOW = 0x5, 202 BTC_RSSI_MAX 203 } BTC_RSSI_STATE, *PBTC_RSSI_STATE; 204 #define BTC_RSSI_HIGH(_rssi_) ((_rssi_ == BTC_RSSI_STATE_HIGH || _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? true : false) 205 #define BTC_RSSI_MEDIUM(_rssi_) ((_rssi_ == BTC_RSSI_STATE_MEDIUM || _rssi_ == BTC_RSSI_STATE_STAY_MEDIUM) ? true : false) 206 #define BTC_RSSI_LOW(_rssi_) ((_rssi_ == BTC_RSSI_STATE_LOW || _rssi_ == BTC_RSSI_STATE_STAY_LOW) ? true : false) 207 208 typedef enum _BTC_WIFI_ROLE { 209 BTC_ROLE_STATION = 0x0, 210 BTC_ROLE_AP = 0x1, 211 BTC_ROLE_IBSS = 0x2, 212 BTC_ROLE_HS_MODE = 0x3, 213 BTC_ROLE_MAX 214 } BTC_WIFI_ROLE, *PBTC_WIFI_ROLE; 215 216 typedef enum _BTC_WIFI_BW_MODE { 217 BTC_WIFI_BW_LEGACY = 0x0, 218 BTC_WIFI_BW_HT20 = 0x1, 219 BTC_WIFI_BW_HT40 = 0x2, 220 BTC_WIFI_BW_MAX 221 } BTC_WIFI_BW_MODE, *PBTC_WIFI_BW_MODE; 222 223 typedef enum _BTC_WIFI_TRAFFIC_DIR { 224 BTC_WIFI_TRAFFIC_TX = 0x0, 225 BTC_WIFI_TRAFFIC_RX = 0x1, 226 BTC_WIFI_TRAFFIC_MAX 227 } BTC_WIFI_TRAFFIC_DIR, *PBTC_WIFI_TRAFFIC_DIR; 228 229 typedef enum _BTC_WIFI_PNP { 230 BTC_WIFI_PNP_WAKE_UP = 0x0, 231 BTC_WIFI_PNP_SLEEP = 0x1, 232 BTC_WIFI_PNP_MAX 233 } BTC_WIFI_PNP, *PBTC_WIFI_PNP; 234 235 /* for 8723b-d cut large current issue */ 236 typedef enum _BT_WIFI_COEX_STATE { 237 BTC_WIFI_STAT_INIT, 238 BTC_WIFI_STAT_IQK, 239 BTC_WIFI_STAT_NORMAL_OFF, 240 BTC_WIFI_STAT_MP_OFF, 241 BTC_WIFI_STAT_NORMAL, 242 BTC_WIFI_STAT_ANT_DIV, 243 BTC_WIFI_STAT_MAX 244 } BT_WIFI_COEX_STATE, *PBT_WIFI_COEX_STATE; 245 246 /* defined for BFP_BTC_GET */ 247 typedef enum _BTC_GET_TYPE { 248 /* type bool */ 249 BTC_GET_BL_HS_OPERATION, 250 BTC_GET_BL_HS_CONNECTING, 251 BTC_GET_BL_WIFI_CONNECTED, 252 BTC_GET_BL_WIFI_BUSY, 253 BTC_GET_BL_WIFI_SCAN, 254 BTC_GET_BL_WIFI_LINK, 255 BTC_GET_BL_WIFI_ROAM, 256 BTC_GET_BL_WIFI_4_WAY_PROGRESS, 257 BTC_GET_BL_WIFI_UNDER_5G, 258 BTC_GET_BL_WIFI_AP_MODE_ENABLE, 259 BTC_GET_BL_WIFI_ENABLE_ENCRYPTION, 260 BTC_GET_BL_WIFI_UNDER_B_MODE, 261 BTC_GET_BL_EXT_SWITCH, 262 BTC_GET_BL_WIFI_IS_IN_MP_MODE, 263 264 /* type s32 */ 265 BTC_GET_S4_WIFI_RSSI, 266 BTC_GET_S4_HS_RSSI, 267 268 /* type u32 */ 269 BTC_GET_U4_WIFI_BW, 270 BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, 271 BTC_GET_U4_WIFI_FW_VER, 272 BTC_GET_U4_WIFI_LINK_STATUS, 273 BTC_GET_U4_BT_PATCH_VER, 274 275 /* type u8 */ 276 BTC_GET_U1_WIFI_DOT11_CHNL, 277 BTC_GET_U1_WIFI_CENTRAL_CHNL, 278 BTC_GET_U1_WIFI_HS_CHNL, 279 BTC_GET_U1_MAC_PHY_MODE, 280 BTC_GET_U1_AP_NUM, 281 282 /* for 1Ant ====== */ 283 BTC_GET_U1_LPS_MODE, 284 285 BTC_GET_MAX 286 } BTC_GET_TYPE, *PBTC_GET_TYPE; 287 288 /* defined for BFP_BTC_SET */ 289 typedef enum _BTC_SET_TYPE { 290 /* type bool */ 291 BTC_SET_BL_BT_DISABLE, 292 BTC_SET_BL_BT_TRAFFIC_BUSY, 293 BTC_SET_BL_BT_LIMITED_DIG, 294 BTC_SET_BL_FORCE_TO_ROAM, 295 BTC_SET_BL_TO_REJ_AP_AGG_PKT, 296 BTC_SET_BL_BT_CTRL_AGG_SIZE, 297 BTC_SET_BL_INC_SCAN_DEV_NUM, 298 BTC_SET_BL_BT_TX_RX_MASK, 299 300 /* type u8 */ 301 BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, 302 BTC_SET_U1_AGG_BUF_SIZE, 303 304 /* type trigger some action */ 305 BTC_SET_ACT_GET_BT_RSSI, 306 BTC_SET_ACT_AGGREGATE_CTRL, 307 /* for 1Ant ====== */ 308 /* type bool */ 309 310 /* type u8 */ 311 BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, 312 BTC_SET_U1_LPS_VAL, 313 BTC_SET_U1_RPWM_VAL, 314 /* type trigger some action */ 315 BTC_SET_ACT_LEAVE_LPS, 316 BTC_SET_ACT_ENTER_LPS, 317 BTC_SET_ACT_NORMAL_LPS, 318 BTC_SET_ACT_DISABLE_LOW_POWER, 319 BTC_SET_ACT_UPDATE_RAMASK, 320 BTC_SET_ACT_SEND_MIMO_PS, 321 /* BT Coex related */ 322 BTC_SET_ACT_CTRL_BT_INFO, 323 BTC_SET_ACT_CTRL_BT_COEX, 324 BTC_SET_ACT_CTRL_8723B_ANT, 325 /* */ 326 BTC_SET_MAX 327 } BTC_SET_TYPE, *PBTC_SET_TYPE; 328 329 typedef enum _BTC_DBG_DISP_TYPE { 330 BTC_DBG_DISP_COEX_STATISTICS = 0x0, 331 BTC_DBG_DISP_BT_LINK_INFO = 0x1, 332 BTC_DBG_DISP_FW_PWR_MODE_CMD = 0x2, 333 BTC_DBG_DISP_MAX 334 } BTC_DBG_DISP_TYPE, *PBTC_DBG_DISP_TYPE; 335 336 typedef enum _BTC_NOTIFY_TYPE_IPS { 337 BTC_IPS_LEAVE = 0x0, 338 BTC_IPS_ENTER = 0x1, 339 BTC_IPS_MAX 340 } BTC_NOTIFY_TYPE_IPS, *PBTC_NOTIFY_TYPE_IPS; 341 342 typedef enum _BTC_NOTIFY_TYPE_LPS { 343 BTC_LPS_DISABLE = 0x0, 344 BTC_LPS_ENABLE = 0x1, 345 BTC_LPS_MAX 346 } BTC_NOTIFY_TYPE_LPS, *PBTC_NOTIFY_TYPE_LPS; 347 348 typedef enum _BTC_NOTIFY_TYPE_SCAN { 349 BTC_SCAN_FINISH = 0x0, 350 BTC_SCAN_START = 0x1, 351 BTC_SCAN_MAX 352 } BTC_NOTIFY_TYPE_SCAN, *PBTC_NOTIFY_TYPE_SCAN; 353 354 typedef enum _BTC_NOTIFY_TYPE_ASSOCIATE { 355 BTC_ASSOCIATE_FINISH = 0x0, 356 BTC_ASSOCIATE_START = 0x1, 357 BTC_ASSOCIATE_MAX 358 } BTC_NOTIFY_TYPE_ASSOCIATE, *PBTC_NOTIFY_TYPE_ASSOCIATE; 359 360 typedef enum _BTC_NOTIFY_TYPE_MEDIA_STATUS { 361 BTC_MEDIA_DISCONNECT = 0x0, 362 BTC_MEDIA_CONNECT = 0x1, 363 BTC_MEDIA_MAX 364 } BTC_NOTIFY_TYPE_MEDIA_STATUS, *PBTC_NOTIFY_TYPE_MEDIA_STATUS; 365 366 typedef enum _BTC_NOTIFY_TYPE_SPECIAL_PACKET { 367 BTC_PACKET_UNKNOWN = 0x0, 368 BTC_PACKET_DHCP = 0x1, 369 BTC_PACKET_ARP = 0x2, 370 BTC_PACKET_EAPOL = 0x3, 371 BTC_PACKET_MAX 372 } BTC_NOTIFY_TYPE_SPECIAL_PACKET, *PBTC_NOTIFY_TYPE_SPECIAL_PACKET; 373 374 typedef enum _BTC_NOTIFY_TYPE_STACK_OPERATION { 375 BTC_STACK_OP_NONE = 0x0, 376 BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1, 377 BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2, 378 BTC_STACK_OP_MAX 379 } BTC_NOTIFY_TYPE_STACK_OPERATION, *PBTC_NOTIFY_TYPE_STACK_OPERATION; 380 381 /* Bryant Add */ 382 typedef enum _BTC_ANTENNA_POS { 383 BTC_ANTENNA_AT_MAIN_PORT = 0x1, 384 BTC_ANTENNA_AT_AUX_PORT = 0x2, 385 } BTC_ANTENNA_POS, *PBTC_ANTENNA_POS; 386 387 typedef u8 (*BFP_BTC_R1)(void *pBtcContext, u32 RegAddr); 388 typedef u16(*BFP_BTC_R2)(void *pBtcContext, u32 RegAddr); 389 typedef u32 (*BFP_BTC_R4)(void *pBtcContext, u32 RegAddr); 390 typedef void (*BFP_BTC_W1)(void *pBtcContext, u32 RegAddr, u8 Data); 391 typedef void(*BFP_BTC_W1_BIT_MASK)( 392 void *pBtcContext, u32 regAddr, u8 bitMask, u8 data1b 393 ); 394 typedef void (*BFP_BTC_W2)(void *pBtcContext, u32 RegAddr, u16 Data); 395 typedef void (*BFP_BTC_W4)(void *pBtcContext, u32 RegAddr, u32 Data); 396 typedef void (*BFP_BTC_LOCAL_REG_W1)(void *pBtcContext, u32 RegAddr, u8 Data); 397 typedef void (*BFP_BTC_SET_BB_REG)( 398 void *pBtcContext, u32 RegAddr, u32 BitMask, u32 Data 399 ); 400 typedef u32 (*BFP_BTC_GET_BB_REG)(void *pBtcContext, u32 RegAddr, u32 BitMask); 401 typedef void (*BFP_BTC_SET_RF_REG)( 402 void *pBtcContext, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data 403 ); 404 typedef u32 (*BFP_BTC_GET_RF_REG)( 405 void *pBtcContext, u8 eRFPath, u32 RegAddr, u32 BitMask 406 ); 407 typedef void (*BFP_BTC_FILL_H2C)( 408 void *pBtcContext, u8 elementId, u32 cmdLen, u8 *pCmdBuffer 409 ); 410 411 typedef u8 (*BFP_BTC_GET)(void *pBtCoexist, u8 getType, void *pOutBuf); 412 413 typedef u8 (*BFP_BTC_SET)(void *pBtCoexist, u8 setType, void *pInBuf); 414 typedef void (*BFP_BTC_SET_BT_REG)( 415 void *pBtcContext, u8 regType, u32 offset, u32 value 416 ); 417 typedef u32 (*BFP_BTC_GET_BT_REG)(void *pBtcContext, u8 regType, u32 offset); 418 typedef void (*BFP_BTC_DISP_DBG_MSG)(void *pBtCoexist, u8 dispType); 419 420 typedef struct _BTC_BT_INFO { 421 bool bBtDisabled; 422 u8 rssiAdjustForAgcTableOn; 423 u8 rssiAdjustFor1AntCoexType; 424 bool bPreBtCtrlAggBufSize; 425 bool bBtCtrlAggBufSize; 426 bool bRejectAggPkt; 427 bool bIncreaseScanDevNum; 428 bool bBtTxRxMask; 429 u8 preAggBufSize; 430 u8 aggBufSize; 431 bool bBtBusy; 432 bool bLimitedDig; 433 u16 btHciVer; 434 u16 btRealFwVer; 435 u8 btFwVer; 436 u32 getBtFwVerCnt; 437 438 bool bBtDisableLowPwr; 439 440 bool bBtCtrlLps; 441 bool bBtLpsOn; 442 bool bForceToRoam; /* for 1Ant solution */ 443 u8 lpsVal; 444 u8 rpwmVal; 445 u32 raMask; 446 } BTC_BT_INFO, *PBTC_BT_INFO; 447 448 typedef struct _BTC_STACK_INFO { 449 bool bProfileNotified; 450 u16 hciVersion; /* stack hci version */ 451 u8 numOfLink; 452 bool bBtLinkExist; 453 bool bScoExist; 454 bool bAclExist; 455 bool bA2dpExist; 456 bool bHidExist; 457 u8 numOfHid; 458 bool bPanExist; 459 bool bUnknownAclExist; 460 s8 minBtRssi; 461 } BTC_STACK_INFO, *PBTC_STACK_INFO; 462 463 typedef struct _BTC_BT_LINK_INFO { 464 bool bBtLinkExist; 465 bool bScoExist; 466 bool bScoOnly; 467 bool bA2dpExist; 468 bool bA2dpOnly; 469 bool bHidExist; 470 bool bHidOnly; 471 bool bPanExist; 472 bool bPanOnly; 473 bool bSlaveRole; 474 } BTC_BT_LINK_INFO, *PBTC_BT_LINK_INFO; 475 476 typedef struct _BTC_STATISTICS { 477 u32 cntBind; 478 u32 cntPowerOn; 479 u32 cntInitHwConfig; 480 u32 cntInitCoexDm; 481 u32 cntIpsNotify; 482 u32 cntLpsNotify; 483 u32 cntScanNotify; 484 u32 cntConnectNotify; 485 u32 cntMediaStatusNotify; 486 u32 cntSpecialPacketNotify; 487 u32 cntBtInfoNotify; 488 u32 cntRfStatusNotify; 489 u32 cntPeriodical; 490 u32 cntCoexDmSwitch; 491 u32 cntStackOperationNotify; 492 u32 cntDbgCtrl; 493 } BTC_STATISTICS, *PBTC_STATISTICS; 494 495 typedef struct _BTC_COEXIST { 496 bool bBinded; /* make sure only one adapter can bind the data context */ 497 void *Adapter; /* default adapter */ 498 BTC_BOARD_INFO boardInfo; 499 BTC_BT_INFO btInfo; /* some bt info referenced by non-bt module */ 500 BTC_STACK_INFO stackInfo; 501 BTC_BT_LINK_INFO btLinkInfo; 502 BTC_CHIP_INTERFACE chipInterface; 503 504 bool bInitilized; 505 bool bStopCoexDm; 506 bool bManualControl; 507 u8 *cliBuf; 508 BTC_STATISTICS statistics; 509 u8 pwrModeVal[10]; 510 511 /* function pointers */ 512 /* io related */ 513 BFP_BTC_R1 fBtcRead1Byte; 514 BFP_BTC_W1 fBtcWrite1Byte; 515 BFP_BTC_W1_BIT_MASK fBtcWrite1ByteBitMask; 516 BFP_BTC_R2 fBtcRead2Byte; 517 BFP_BTC_W2 fBtcWrite2Byte; 518 BFP_BTC_R4 fBtcRead4Byte; 519 BFP_BTC_W4 fBtcWrite4Byte; 520 BFP_BTC_LOCAL_REG_W1 fBtcWriteLocalReg1Byte; 521 /* read/write bb related */ 522 BFP_BTC_SET_BB_REG fBtcSetBbReg; 523 BFP_BTC_GET_BB_REG fBtcGetBbReg; 524 525 /* read/write rf related */ 526 BFP_BTC_SET_RF_REG fBtcSetRfReg; 527 BFP_BTC_GET_RF_REG fBtcGetRfReg; 528 529 /* fill h2c related */ 530 BFP_BTC_FILL_H2C fBtcFillH2c; 531 /* other */ 532 BFP_BTC_DISP_DBG_MSG fBtcDispDbgMsg; 533 /* normal get/set related */ 534 BFP_BTC_GET fBtcGet; 535 BFP_BTC_SET fBtcSet; 536 537 BFP_BTC_GET_BT_REG fBtcGetBtReg; 538 BFP_BTC_SET_BT_REG fBtcSetBtReg; 539 } BTC_COEXIST, *PBTC_COEXIST; 540 541 extern BTC_COEXIST GLBtCoexist; 542 543 u8 EXhalbtcoutsrc_InitlizeVariables(void *Adapter); 544 void EXhalbtcoutsrc_PowerOnSetting(PBTC_COEXIST pBtCoexist); 545 void EXhalbtcoutsrc_InitHwConfig(PBTC_COEXIST pBtCoexist, u8 bWifiOnly); 546 void EXhalbtcoutsrc_InitCoexDm(PBTC_COEXIST pBtCoexist); 547 void EXhalbtcoutsrc_IpsNotify(PBTC_COEXIST pBtCoexist, u8 type); 548 void EXhalbtcoutsrc_LpsNotify(PBTC_COEXIST pBtCoexist, u8 type); 549 void EXhalbtcoutsrc_ScanNotify(PBTC_COEXIST pBtCoexist, u8 type); 550 void EXhalbtcoutsrc_ConnectNotify(PBTC_COEXIST pBtCoexist, u8 action); 551 void EXhalbtcoutsrc_MediaStatusNotify( 552 PBTC_COEXIST pBtCoexist, RT_MEDIA_STATUS mediaStatus 553 ); 554 void EXhalbtcoutsrc_SpecialPacketNotify(PBTC_COEXIST pBtCoexist, u8 pktType); 555 void EXhalbtcoutsrc_BtInfoNotify( 556 PBTC_COEXIST pBtCoexist, u8 *tmpBuf, u8 length 557 ); 558 void EXhalbtcoutsrc_HaltNotify(PBTC_COEXIST pBtCoexist); 559 void EXhalbtcoutsrc_PnpNotify(PBTC_COEXIST pBtCoexist, u8 pnpState); 560 void EXhalbtcoutsrc_Periodical(PBTC_COEXIST pBtCoexist); 561 void EXhalbtcoutsrc_SetChipType(u8 chipType); 562 void EXhalbtcoutsrc_SetAntNum(u8 type, u8 antNum); 563 void EXhalbtcoutsrc_SetSingleAntPath(u8 singleAntPath); 564 void EXhalbtcoutsrc_DisplayBtCoexInfo(PBTC_COEXIST pBtCoexist); 565 566 #endif 567