1 //============================================================
\r
4 // This file is for RTL8192E Co-exist mechanism
\r
7 // 2012/11/15 Cosa first check in.
\r
9 //============================================================
\r
11 //============================================================
\r
13 //============================================================
\r
14 #include "Mp_Precomp.h"
\r
15 #if(BT_30_SUPPORT == 1)
\r
16 //============================================================
\r
17 // Global variables, these are static variables
\r
18 //============================================================
\r
19 static COEX_DM_8192E_2ANT GLCoexDm8192e2Ant;
\r
20 static PCOEX_DM_8192E_2ANT pCoexDm=&GLCoexDm8192e2Ant;
\r
21 static COEX_STA_8192E_2ANT GLCoexSta8192e2Ant;
\r
22 static PCOEX_STA_8192E_2ANT pCoexSta=&GLCoexSta8192e2Ant;
\r
24 const char *const GLBtInfoSrc8192e2Ant[]={
\r
27 "BT Info[bt auto report]",
\r
30 u4Byte GLCoexVerDate8192e2Ant=20130912;
\r
31 u4Byte GLCoexVer8192e2Ant=0x35;
\r
33 //============================================================
\r
34 // local function proto type if needed
\r
35 //============================================================
\r
36 //============================================================
\r
37 // local function start with halbtc8192e2ant_
\r
38 //============================================================
\r
40 halbtc8192e2ant_BtRssiState(
\r
47 u1Byte btRssiState=pCoexSta->preBtRssiState;
\r
49 btRssi = pCoexSta->btRssi;
\r
53 if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) ||
\r
54 (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW))
\r
56 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi pre state=LOW\n"));
\r
57 if(btRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT))
\r
59 btRssiState = BTC_RSSI_STATE_HIGH;
\r
60 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n"));
\r
64 btRssiState = BTC_RSSI_STATE_STAY_LOW;
\r
65 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n"));
\r
70 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi pre state=HIGH\n"));
\r
71 if(btRssi < rssiThresh)
\r
73 btRssiState = BTC_RSSI_STATE_LOW;
\r
74 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n"));
\r
78 btRssiState = BTC_RSSI_STATE_STAY_HIGH;
\r
79 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n"));
\r
83 else if(levelNum == 3)
\r
85 if(rssiThresh > rssiThresh1)
\r
87 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi thresh error!!\n"));
\r
88 return pCoexSta->preBtRssiState;
\r
91 if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) ||
\r
92 (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW))
\r
94 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi pre state=LOW\n"));
\r
95 if(btRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT))
\r
97 btRssiState = BTC_RSSI_STATE_MEDIUM;
\r
98 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n"));
\r
102 btRssiState = BTC_RSSI_STATE_STAY_LOW;
\r
103 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n"));
\r
106 else if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
107 (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_MEDIUM))
\r
109 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi pre state=MEDIUM\n"));
\r
110 if(btRssi >= (rssiThresh1+BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT))
\r
112 btRssiState = BTC_RSSI_STATE_HIGH;
\r
113 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n"));
\r
115 else if(btRssi < rssiThresh)
\r
117 btRssiState = BTC_RSSI_STATE_LOW;
\r
118 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n"));
\r
122 btRssiState = BTC_RSSI_STATE_STAY_MEDIUM;
\r
123 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Medium\n"));
\r
128 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi pre state=HIGH\n"));
\r
129 if(btRssi < rssiThresh1)
\r
131 btRssiState = BTC_RSSI_STATE_MEDIUM;
\r
132 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n"));
\r
136 btRssiState = BTC_RSSI_STATE_STAY_HIGH;
\r
137 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n"));
\r
142 pCoexSta->preBtRssiState = btRssiState;
\r
144 return btRssiState;
\r
148 halbtc8192e2ant_WifiRssiState(
\r
149 IN PBTC_COEXIST pBtCoexist,
\r
151 IN u1Byte levelNum,
\r
152 IN u1Byte rssiThresh,
\r
153 IN u1Byte rssiThresh1
\r
157 u1Byte wifiRssiState=pCoexSta->preWifiRssiState[index];
\r
159 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi);
\r
163 if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) ||
\r
164 (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW))
\r
166 if(wifiRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT))
\r
168 wifiRssiState = BTC_RSSI_STATE_HIGH;
\r
169 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n"));
\r
173 wifiRssiState = BTC_RSSI_STATE_STAY_LOW;
\r
174 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n"));
\r
179 if(wifiRssi < rssiThresh)
\r
181 wifiRssiState = BTC_RSSI_STATE_LOW;
\r
182 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n"));
\r
186 wifiRssiState = BTC_RSSI_STATE_STAY_HIGH;
\r
187 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n"));
\r
191 else if(levelNum == 3)
\r
193 if(rssiThresh > rssiThresh1)
\r
195 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI thresh error!!\n"));
\r
196 return pCoexSta->preWifiRssiState[index];
\r
199 if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) ||
\r
200 (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW))
\r
202 if(wifiRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT))
\r
204 wifiRssiState = BTC_RSSI_STATE_MEDIUM;
\r
205 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n"));
\r
209 wifiRssiState = BTC_RSSI_STATE_STAY_LOW;
\r
210 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n"));
\r
213 else if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_MEDIUM) ||
\r
214 (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_MEDIUM))
\r
216 if(wifiRssi >= (rssiThresh1+BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT))
\r
218 wifiRssiState = BTC_RSSI_STATE_HIGH;
\r
219 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n"));
\r
221 else if(wifiRssi < rssiThresh)
\r
223 wifiRssiState = BTC_RSSI_STATE_LOW;
\r
224 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n"));
\r
228 wifiRssiState = BTC_RSSI_STATE_STAY_MEDIUM;
\r
229 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Medium\n"));
\r
234 if(wifiRssi < rssiThresh1)
\r
236 wifiRssiState = BTC_RSSI_STATE_MEDIUM;
\r
237 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n"));
\r
241 wifiRssiState = BTC_RSSI_STATE_STAY_HIGH;
\r
242 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n"));
\r
247 pCoexSta->preWifiRssiState[index] = wifiRssiState;
\r
249 return wifiRssiState;
\r
253 halbtc8192e2ant_MonitorBtEnableDisable(
\r
254 IN PBTC_COEXIST pBtCoexist
\r
257 static BOOLEAN bPreBtDisabled=FALSE;
\r
258 static u4Byte btDisableCnt=0;
\r
259 BOOLEAN bBtActive=TRUE, bBtDisabled=FALSE;
\r
261 // This function check if bt is disabled
\r
263 if( pCoexSta->highPriorityTx == 0 &&
\r
264 pCoexSta->highPriorityRx == 0 &&
\r
265 pCoexSta->lowPriorityTx == 0 &&
\r
266 pCoexSta->lowPriorityRx == 0)
\r
270 if( pCoexSta->highPriorityTx == 0xffff &&
\r
271 pCoexSta->highPriorityRx == 0xffff &&
\r
272 pCoexSta->lowPriorityTx == 0xffff &&
\r
273 pCoexSta->lowPriorityRx == 0xffff)
\r
280 bBtDisabled = FALSE;
\r
281 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled);
\r
282 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is enabled !!\n"));
\r
287 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], bt all counters=0, %d times!!\n",
\r
289 if(btDisableCnt >= 2)
\r
291 bBtDisabled = TRUE;
\r
292 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled);
\r
293 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is disabled !!\n"));
\r
296 if(bPreBtDisabled != bBtDisabled)
\r
298 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is from %s to %s!!\n",
\r
299 (bPreBtDisabled ? "disabled":"enabled"),
\r
300 (bBtDisabled ? "disabled":"enabled")));
\r
301 bPreBtDisabled = bBtDisabled;
\r
312 halbtc8192e2ant_DecideRaMask(
\r
313 IN PBTC_COEXIST pBtCoexist,
\r
315 IN u4Byte raMaskType
\r
318 u4Byte disRaMask=0x0;
\r
322 case 0: // normal mode
\r
324 disRaMask = 0x0; // enable 2ss
\r
326 disRaMask = 0xfff00000; // disable 2ss
\r
328 case 1: // disable cck 1/2
\r
330 disRaMask = 0x00000003; // enable 2ss
\r
332 disRaMask = 0xfff00003; // disable 2ss
\r
334 case 2: // disable cck 1/2/5.5, ofdm 6/9/12/18/24, mcs 0/1/2/3/4
\r
336 disRaMask = 0x0001f1f7; // enable 2ss
\r
338 disRaMask = 0xfff1f1f7; // disable 2ss
\r
348 halbtc8192e2ant_UpdateRaMask(
\r
349 IN PBTC_COEXIST pBtCoexist,
\r
350 IN BOOLEAN bForceExec,
\r
351 IN u4Byte disRateMask
\r
354 pCoexDm->curRaMask = disRateMask;
\r
356 if( bForceExec || (pCoexDm->preRaMask != pCoexDm->curRaMask))
\r
358 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_UPDATE_RAMASK, &pCoexDm->curRaMask);
\r
360 pCoexDm->preRaMask = pCoexDm->curRaMask;
\r
364 halbtc8192e2ant_AutoRateFallbackRetry(
\r
365 IN PBTC_COEXIST pBtCoexist,
\r
366 IN BOOLEAN bForceExec,
\r
370 BOOLEAN bWifiUnderBMode=FALSE;
\r
372 pCoexDm->curArfrType = type;
\r
374 if( bForceExec || (pCoexDm->preArfrType != pCoexDm->curArfrType))
\r
376 switch(pCoexDm->curArfrType)
\r
378 case 0: // normal mode
\r
379 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x430, pCoexDm->backupArfrCnt1);
\r
380 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x434, pCoexDm->backupArfrCnt2);
\r
383 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_UNDER_B_MODE, &bWifiUnderBMode);
\r
384 if(bWifiUnderBMode)
\r
386 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x430, 0x0);
\r
387 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x434, 0x01010101);
\r
391 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x430, 0x0);
\r
392 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x434, 0x04030201);
\r
400 pCoexDm->preArfrType = pCoexDm->curArfrType;
\r
404 halbtc8192e2ant_RetryLimit(
\r
405 IN PBTC_COEXIST pBtCoexist,
\r
406 IN BOOLEAN bForceExec,
\r
410 pCoexDm->curRetryLimitType = type;
\r
412 if( bForceExec || (pCoexDm->preRetryLimitType != pCoexDm->curRetryLimitType))
\r
414 switch(pCoexDm->curRetryLimitType)
\r
416 case 0: // normal mode
\r
417 pBtCoexist->fBtcWrite2Byte(pBtCoexist, 0x42a, pCoexDm->backupRetryLimit);
\r
419 case 1: // retry limit=8
\r
420 pBtCoexist->fBtcWrite2Byte(pBtCoexist, 0x42a, 0x0808);
\r
427 pCoexDm->preRetryLimitType = pCoexDm->curRetryLimitType;
\r
431 halbtc8192e2ant_AmpduMaxTime(
\r
432 IN PBTC_COEXIST pBtCoexist,
\r
433 IN BOOLEAN bForceExec,
\r
437 pCoexDm->curAmpduTimeType = type;
\r
439 if( bForceExec || (pCoexDm->preAmpduTimeType != pCoexDm->curAmpduTimeType))
\r
441 switch(pCoexDm->curAmpduTimeType)
\r
443 case 0: // normal mode
\r
444 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x456, pCoexDm->backupAmpduMaxTime);
\r
446 case 1: // AMPDU timw = 0x38 * 32us
\r
447 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x456, 0x38);
\r
454 pCoexDm->preAmpduTimeType = pCoexDm->curAmpduTimeType;
\r
458 halbtc8192e2ant_LimitedTx(
\r
459 IN PBTC_COEXIST pBtCoexist,
\r
460 IN BOOLEAN bForceExec,
\r
461 IN u1Byte raMaskType,
\r
462 IN u1Byte arfrType,
\r
463 IN u1Byte retryLimitType,
\r
464 IN u1Byte ampduTimeType
\r
467 u4Byte disRaMask=0x0;
\r
469 pCoexDm->curRaMaskType = raMaskType;
\r
470 disRaMask = halbtc8192e2ant_DecideRaMask(pBtCoexist, pCoexDm->curSsType, raMaskType);
\r
471 halbtc8192e2ant_UpdateRaMask(pBtCoexist, bForceExec, disRaMask);
\r
473 halbtc8192e2ant_AutoRateFallbackRetry(pBtCoexist, bForceExec, arfrType);
\r
474 halbtc8192e2ant_RetryLimit(pBtCoexist, bForceExec, retryLimitType);
\r
475 halbtc8192e2ant_AmpduMaxTime(pBtCoexist, bForceExec, ampduTimeType);
\r
479 halbtc8192e2ant_LimitedRx(
\r
480 IN PBTC_COEXIST pBtCoexist,
\r
481 IN BOOLEAN bForceExec,
\r
482 IN BOOLEAN bRejApAggPkt,
\r
483 IN BOOLEAN bBtCtrlAggBufSize,
\r
484 IN u1Byte aggBufSize
\r
487 BOOLEAN bRejectRxAgg=bRejApAggPkt;
\r
488 BOOLEAN bBtCtrlRxAggSize=bBtCtrlAggBufSize;
\r
489 u1Byte rxAggSize=aggBufSize;
\r
491 //============================================
\r
492 // Rx Aggregation related setting
\r
493 //============================================
\r
494 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, &bRejectRxAgg);
\r
495 // decide BT control aggregation buf size or not
\r
496 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE, &bBtCtrlRxAggSize);
\r
497 // aggregation buf size, only work when BT control Rx aggregation size.
\r
498 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_AGG_BUF_SIZE, &rxAggSize);
\r
499 // real update aggregation setting
\r
500 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL);
\r
506 halbtc8192e2ant_MonitorBtCtr(
\r
507 IN PBTC_COEXIST pBtCoexist
\r
510 u4Byte regHPTxRx, regLPTxRx, u4Tmp;
\r
511 u4Byte regHPTx=0, regHPRx=0, regLPTx=0, regLPRx=0;
\r
517 u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, regHPTxRx);
\r
518 regHPTx = u4Tmp & bMaskLWord;
\r
519 regHPRx = (u4Tmp & bMaskHWord)>>16;
\r
521 u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, regLPTxRx);
\r
522 regLPTx = u4Tmp & bMaskLWord;
\r
523 regLPRx = (u4Tmp & bMaskHWord)>>16;
\r
525 pCoexSta->highPriorityTx = regHPTx;
\r
526 pCoexSta->highPriorityRx = regHPRx;
\r
527 pCoexSta->lowPriorityTx = regLPTx;
\r
528 pCoexSta->lowPriorityRx = regLPRx;
\r
530 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], High Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n",
\r
531 regHPTxRx, regHPTx, regHPTx, regHPRx, regHPRx));
\r
532 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], Low Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n",
\r
533 regLPTxRx, regLPTx, regLPTx, regLPRx, regLPRx));
\r
536 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc);
\r
540 halbtc8192e2ant_QueryBtInfo(
\r
541 IN PBTC_COEXIST pBtCoexist
\r
544 u1Byte H2C_Parameter[1] ={0};
\r
546 pCoexSta->bC2hBtInfoReqSent = TRUE;
\r
548 H2C_Parameter[0] |= BIT0; // trigger
\r
550 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Query Bt Info, FW write 0x61=0x%x\n",
\r
551 H2C_Parameter[0]));
\r
553 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x61, 1, H2C_Parameter);
\r
557 halbtc8192e2ant_IsWifiStatusChanged(
\r
558 IN PBTC_COEXIST pBtCoexist
\r
561 static BOOLEAN bPreWifiBusy=FALSE, bPreUnder4way=FALSE, bPreBtHsOn=FALSE;
\r
562 BOOLEAN bWifiBusy=FALSE, bUnder4way=FALSE, bBtHsOn=FALSE;
\r
563 BOOLEAN bWifiConnected=FALSE;
\r
565 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
\r
566 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
\r
567 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
\r
568 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &bUnder4way);
\r
572 if(bWifiBusy != bPreWifiBusy)
\r
574 bPreWifiBusy = bWifiBusy;
\r
577 if(bUnder4way != bPreUnder4way)
\r
579 bPreUnder4way = bUnder4way;
\r
582 if(bBtHsOn != bPreBtHsOn)
\r
584 bPreBtHsOn = bBtHsOn;
\r
593 halbtc8192e2ant_UpdateBtLinkInfo(
\r
594 IN PBTC_COEXIST pBtCoexist
\r
597 PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->btLinkInfo;
\r
598 BOOLEAN bBtHsOn=FALSE;
\r
600 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
\r
602 pBtLinkInfo->bBtLinkExist = pCoexSta->bBtLinkExist;
\r
603 pBtLinkInfo->bScoExist = pCoexSta->bScoExist;
\r
604 pBtLinkInfo->bA2dpExist = pCoexSta->bA2dpExist;
\r
605 pBtLinkInfo->bPanExist = pCoexSta->bPanExist;
\r
606 pBtLinkInfo->bHidExist = pCoexSta->bHidExist;
\r
608 // work around for HS mode.
\r
611 pBtLinkInfo->bPanExist = TRUE;
\r
612 pBtLinkInfo->bBtLinkExist = TRUE;
\r
615 // check if Sco only
\r
616 if( pBtLinkInfo->bScoExist &&
\r
617 !pBtLinkInfo->bA2dpExist &&
\r
618 !pBtLinkInfo->bPanExist &&
\r
619 !pBtLinkInfo->bHidExist )
\r
620 pBtLinkInfo->bScoOnly = TRUE;
\r
622 pBtLinkInfo->bScoOnly = FALSE;
\r
624 // check if A2dp only
\r
625 if( !pBtLinkInfo->bScoExist &&
\r
626 pBtLinkInfo->bA2dpExist &&
\r
627 !pBtLinkInfo->bPanExist &&
\r
628 !pBtLinkInfo->bHidExist )
\r
629 pBtLinkInfo->bA2dpOnly = TRUE;
\r
631 pBtLinkInfo->bA2dpOnly = FALSE;
\r
633 // check if Pan only
\r
634 if( !pBtLinkInfo->bScoExist &&
\r
635 !pBtLinkInfo->bA2dpExist &&
\r
636 pBtLinkInfo->bPanExist &&
\r
637 !pBtLinkInfo->bHidExist )
\r
638 pBtLinkInfo->bPanOnly = TRUE;
\r
640 pBtLinkInfo->bPanOnly = FALSE;
\r
642 // check if Hid only
\r
643 if( !pBtLinkInfo->bScoExist &&
\r
644 !pBtLinkInfo->bA2dpExist &&
\r
645 !pBtLinkInfo->bPanExist &&
\r
646 pBtLinkInfo->bHidExist )
\r
647 pBtLinkInfo->bHidOnly = TRUE;
\r
649 pBtLinkInfo->bHidOnly = FALSE;
\r
653 halbtc8192e2ant_ActionAlgorithm(
\r
654 IN PBTC_COEXIST pBtCoexist
\r
657 PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->btLinkInfo;
\r
658 PBTC_STACK_INFO pStackInfo=&pBtCoexist->stackInfo;
\r
659 BOOLEAN bBtHsOn=FALSE;
\r
660 u1Byte algorithm=BT_8192E_2ANT_COEX_ALGO_UNDEFINED;
\r
661 u1Byte numOfDiffProfile=0;
\r
663 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
\r
665 if(!pBtLinkInfo->bBtLinkExist)
\r
667 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], No BT link exists!!!\n"));
\r
671 if(pBtLinkInfo->bScoExist)
\r
672 numOfDiffProfile++;
\r
673 if(pBtLinkInfo->bHidExist)
\r
674 numOfDiffProfile++;
\r
675 if(pBtLinkInfo->bPanExist)
\r
676 numOfDiffProfile++;
\r
677 if(pBtLinkInfo->bA2dpExist)
\r
678 numOfDiffProfile++;
\r
680 if(numOfDiffProfile == 1)
\r
682 if(pBtLinkInfo->bScoExist)
\r
684 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO only\n"));
\r
685 algorithm = BT_8192E_2ANT_COEX_ALGO_SCO;
\r
689 if(pBtLinkInfo->bHidExist)
\r
691 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID only\n"));
\r
692 algorithm = BT_8192E_2ANT_COEX_ALGO_HID;
\r
694 else if(pBtLinkInfo->bA2dpExist)
\r
696 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP only\n"));
\r
697 algorithm = BT_8192E_2ANT_COEX_ALGO_A2DP;
\r
699 else if(pBtLinkInfo->bPanExist)
\r
703 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(HS) only\n"));
\r
704 algorithm = BT_8192E_2ANT_COEX_ALGO_PANHS;
\r
708 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(EDR) only\n"));
\r
709 algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR;
\r
714 else if(numOfDiffProfile == 2)
\r
716 if(pBtLinkInfo->bScoExist)
\r
718 if(pBtLinkInfo->bHidExist)
\r
720 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID\n"));
\r
721 algorithm = BT_8192E_2ANT_COEX_ALGO_SCO;
\r
723 else if(pBtLinkInfo->bA2dpExist)
\r
725 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP ==> SCO\n"));
\r
726 algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_HID;
\r
728 else if(pBtLinkInfo->bPanExist)
\r
732 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(HS)\n"));
\r
733 algorithm = BT_8192E_2ANT_COEX_ALGO_SCO;
\r
737 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(EDR)\n"));
\r
738 algorithm = BT_8192E_2ANT_COEX_ALGO_SCO_PAN;
\r
744 if( pBtLinkInfo->bHidExist &&
\r
745 pBtLinkInfo->bA2dpExist )
\r
747 if(pStackInfo->numOfHid >= 2)
\r
749 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID*2 + A2DP\n"));
\r
750 algorithm = BT_8192E_2ANT_COEX_ALGO_HID_A2DP_PANEDR;
\r
754 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP\n"));
\r
755 algorithm = BT_8192E_2ANT_COEX_ALGO_HID_A2DP;
\r
758 else if( pBtLinkInfo->bHidExist &&
\r
759 pBtLinkInfo->bPanExist )
\r
763 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(HS)\n"));
\r
764 algorithm = BT_8192E_2ANT_COEX_ALGO_HID;
\r
768 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(EDR)\n"));
\r
769 algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_HID;
\r
772 else if( pBtLinkInfo->bPanExist &&
\r
773 pBtLinkInfo->bA2dpExist )
\r
777 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(HS)\n"));
\r
778 algorithm = BT_8192E_2ANT_COEX_ALGO_A2DP_PANHS;
\r
782 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(EDR)\n"));
\r
783 algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_A2DP;
\r
788 else if(numOfDiffProfile == 3)
\r
790 if(pBtLinkInfo->bScoExist)
\r
792 if( pBtLinkInfo->bHidExist &&
\r
793 pBtLinkInfo->bA2dpExist )
\r
795 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP ==> HID\n"));
\r
796 algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_HID;
\r
798 else if( pBtLinkInfo->bHidExist &&
\r
799 pBtLinkInfo->bPanExist )
\r
803 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(HS)\n"));
\r
804 algorithm = BT_8192E_2ANT_COEX_ALGO_SCO;
\r
808 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(EDR)\n"));
\r
809 algorithm = BT_8192E_2ANT_COEX_ALGO_SCO_PAN;
\r
812 else if( pBtLinkInfo->bPanExist &&
\r
813 pBtLinkInfo->bA2dpExist )
\r
817 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(HS)\n"));
\r
818 algorithm = BT_8192E_2ANT_COEX_ALGO_SCO;
\r
822 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(EDR) ==> HID\n"));
\r
823 algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_HID;
\r
829 if( pBtLinkInfo->bHidExist &&
\r
830 pBtLinkInfo->bPanExist &&
\r
831 pBtLinkInfo->bA2dpExist )
\r
835 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(HS)\n"));
\r
836 algorithm = BT_8192E_2ANT_COEX_ALGO_HID_A2DP;
\r
840 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(EDR)\n"));
\r
841 algorithm = BT_8192E_2ANT_COEX_ALGO_HID_A2DP_PANEDR;
\r
846 else if(numOfDiffProfile >= 3)
\r
848 if(pBtLinkInfo->bScoExist)
\r
850 if( pBtLinkInfo->bHidExist &&
\r
851 pBtLinkInfo->bPanExist &&
\r
852 pBtLinkInfo->bA2dpExist )
\r
856 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Error!!! SCO + HID + A2DP + PAN(HS)\n"));
\r
861 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP + PAN(EDR)==>PAN(EDR)+HID\n"));
\r
862 algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_HID;
\r
872 halbtc8192e2ant_SetFwDacSwingLevel(
\r
873 IN PBTC_COEXIST pBtCoexist,
\r
874 IN u1Byte dacSwingLvl
\r
877 u1Byte H2C_Parameter[1] ={0};
\r
879 // There are several type of dacswing
\r
880 // 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6
\r
881 H2C_Parameter[0] = dacSwingLvl;
\r
883 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Set Dac Swing Level=0x%x\n", dacSwingLvl));
\r
884 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x64=0x%x\n", H2C_Parameter[0]));
\r
886 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x64, 1, H2C_Parameter);
\r
890 halbtc8192e2ant_SetFwDecBtPwr(
\r
891 IN PBTC_COEXIST pBtCoexist,
\r
892 IN u1Byte decBtPwrLvl
\r
895 u1Byte H2C_Parameter[1] ={0};
\r
897 H2C_Parameter[0] = decBtPwrLvl;
\r
899 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], decrease Bt Power level = %d, FW write 0x62=0x%x\n",
\r
900 decBtPwrLvl, H2C_Parameter[0]));
\r
902 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x62, 1, H2C_Parameter);
\r
906 halbtc8192e2ant_DecBtPwr(
\r
907 IN PBTC_COEXIST pBtCoexist,
\r
908 IN BOOLEAN bForceExec,
\r
909 IN u1Byte decBtPwrLvl
\r
912 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s Dec BT power level = %d\n",
\r
913 (bForceExec? "force to":""), decBtPwrLvl));
\r
914 pCoexDm->curBtDecPwrLvl = decBtPwrLvl;
\r
918 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], preBtDecPwrLvl=%d, curBtDecPwrLvl=%d\n",
\r
919 pCoexDm->preBtDecPwrLvl, pCoexDm->curBtDecPwrLvl));
\r
920 #if 0 // work around, avoid h2c command fail.
\r
921 if(pCoexDm->preBtDecPwrLvl == pCoexDm->curBtDecPwrLvl)
\r
925 halbtc8192e2ant_SetFwDecBtPwr(pBtCoexist, pCoexDm->curBtDecPwrLvl);
\r
927 pCoexDm->preBtDecPwrLvl = pCoexDm->curBtDecPwrLvl;
\r
931 halbtc8192e2ant_SetBtAutoReport(
\r
932 IN PBTC_COEXIST pBtCoexist,
\r
933 IN BOOLEAN bEnableAutoReport
\r
936 u1Byte H2C_Parameter[1] ={0};
\r
938 H2C_Parameter[0] = 0;
\r
940 if(bEnableAutoReport)
\r
942 H2C_Parameter[0] |= BIT0;
\r
945 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], BT FW auto report : %s, FW write 0x68=0x%x\n",
\r
946 (bEnableAutoReport? "Enabled!!":"Disabled!!"), H2C_Parameter[0]));
\r
948 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x68, 1, H2C_Parameter);
\r
952 halbtc8192e2ant_BtAutoReport(
\r
953 IN PBTC_COEXIST pBtCoexist,
\r
954 IN BOOLEAN bForceExec,
\r
955 IN BOOLEAN bEnableAutoReport
\r
958 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s BT Auto report = %s\n",
\r
959 (bForceExec? "force to":""), ((bEnableAutoReport)? "Enabled":"Disabled")));
\r
960 pCoexDm->bCurBtAutoReport = bEnableAutoReport;
\r
964 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreBtAutoReport=%d, bCurBtAutoReport=%d\n",
\r
965 pCoexDm->bPreBtAutoReport, pCoexDm->bCurBtAutoReport));
\r
967 if(pCoexDm->bPreBtAutoReport == pCoexDm->bCurBtAutoReport)
\r
970 halbtc8192e2ant_SetBtAutoReport(pBtCoexist, pCoexDm->bCurBtAutoReport);
\r
972 pCoexDm->bPreBtAutoReport = pCoexDm->bCurBtAutoReport;
\r
976 halbtc8192e2ant_FwDacSwingLvl(
\r
977 IN PBTC_COEXIST pBtCoexist,
\r
978 IN BOOLEAN bForceExec,
\r
979 IN u1Byte fwDacSwingLvl
\r
982 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s set FW Dac Swing level = %d\n",
\r
983 (bForceExec? "force to":""), fwDacSwingLvl));
\r
984 pCoexDm->curFwDacSwingLvl = fwDacSwingLvl;
\r
988 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], preFwDacSwingLvl=%d, curFwDacSwingLvl=%d\n",
\r
989 pCoexDm->preFwDacSwingLvl, pCoexDm->curFwDacSwingLvl));
\r
991 if(pCoexDm->preFwDacSwingLvl == pCoexDm->curFwDacSwingLvl)
\r
995 halbtc8192e2ant_SetFwDacSwingLevel(pBtCoexist, pCoexDm->curFwDacSwingLvl);
\r
997 pCoexDm->preFwDacSwingLvl = pCoexDm->curFwDacSwingLvl;
\r
1001 halbtc8192e2ant_SetSwRfRxLpfCorner(
\r
1002 IN PBTC_COEXIST pBtCoexist,
\r
1003 IN BOOLEAN bRxRfShrinkOn
\r
1008 //Shrink RF Rx LPF corner
\r
1009 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Shrink RF Rx LPF corner!!\n"));
\r
1010 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, 0xffffc);
\r
1014 //Resume RF Rx LPF corner
\r
1015 // After initialized, we can use pCoexDm->btRf0x1eBackup
\r
1016 if(pBtCoexist->bInitilized)
\r
1018 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Resume RF Rx LPF corner!!\n"));
\r
1019 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, pCoexDm->btRf0x1eBackup);
\r
1025 halbtc8192e2ant_RfShrink(
\r
1026 IN PBTC_COEXIST pBtCoexist,
\r
1027 IN BOOLEAN bForceExec,
\r
1028 IN BOOLEAN bRxRfShrinkOn
\r
1031 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn Rx RF Shrink = %s\n",
\r
1032 (bForceExec? "force to":""), ((bRxRfShrinkOn)? "ON":"OFF")));
\r
1033 pCoexDm->bCurRfRxLpfShrink = bRxRfShrinkOn;
\r
1037 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreRfRxLpfShrink=%d, bCurRfRxLpfShrink=%d\n",
\r
1038 pCoexDm->bPreRfRxLpfShrink, pCoexDm->bCurRfRxLpfShrink));
\r
1040 if(pCoexDm->bPreRfRxLpfShrink == pCoexDm->bCurRfRxLpfShrink)
\r
1043 halbtc8192e2ant_SetSwRfRxLpfCorner(pBtCoexist, pCoexDm->bCurRfRxLpfShrink);
\r
1045 pCoexDm->bPreRfRxLpfShrink = pCoexDm->bCurRfRxLpfShrink;
\r
1049 halbtc8192e2ant_SetSwPenaltyTxRateAdaptive(
\r
1050 IN PBTC_COEXIST pBtCoexist,
\r
1051 IN BOOLEAN bLowPenaltyRa
\r
1054 u1Byte H2C_Parameter[6] ={0};
\r
1056 H2C_Parameter[0] = 0x6; // opCode, 0x6= Retry_Penalty
\r
1060 H2C_Parameter[1] |= BIT0;
\r
1061 H2C_Parameter[2] = 0x00; //normal rate except MCS7/6/5, OFDM54/48/36
\r
1062 H2C_Parameter[3] = 0xf7; //MCS7 or OFDM54
\r
1063 H2C_Parameter[4] = 0xf8; //MCS6 or OFDM48
\r
1064 H2C_Parameter[5] = 0xf9; //MCS5 or OFDM36
\r
1067 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set WiFi Low-Penalty Retry: %s",
\r
1068 (bLowPenaltyRa? "ON!!":"OFF!!")) );
\r
1070 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x69, 6, H2C_Parameter);
\r
1074 halbtc8192e2ant_LowPenaltyRa(
\r
1075 IN PBTC_COEXIST pBtCoexist,
\r
1076 IN BOOLEAN bForceExec,
\r
1077 IN BOOLEAN bLowPenaltyRa
\r
1081 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn LowPenaltyRA = %s\n",
\r
1082 (bForceExec? "force to":""), ((bLowPenaltyRa)? "ON":"OFF")));
\r
1083 pCoexDm->bCurLowPenaltyRa = bLowPenaltyRa;
\r
1087 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreLowPenaltyRa=%d, bCurLowPenaltyRa=%d\n",
\r
1088 pCoexDm->bPreLowPenaltyRa, pCoexDm->bCurLowPenaltyRa));
\r
1090 if(pCoexDm->bPreLowPenaltyRa == pCoexDm->bCurLowPenaltyRa)
\r
1093 halbtc8192e2ant_SetSwPenaltyTxRateAdaptive(pBtCoexist, pCoexDm->bCurLowPenaltyRa);
\r
1095 pCoexDm->bPreLowPenaltyRa = pCoexDm->bCurLowPenaltyRa;
\r
1099 halbtc8192e2ant_SetDacSwingReg(
\r
1100 IN PBTC_COEXIST pBtCoexist,
\r
1104 u1Byte val=(u1Byte)level;
\r
1106 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Write SwDacSwing = 0x%x\n", level));
\r
1107 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x883, 0x3e, val);
\r
1111 halbtc8192e2ant_SetSwFullTimeDacSwing(
\r
1112 IN PBTC_COEXIST pBtCoexist,
\r
1113 IN BOOLEAN bSwDacSwingOn,
\r
1114 IN u4Byte swDacSwingLvl
\r
1119 halbtc8192e2ant_SetDacSwingReg(pBtCoexist, swDacSwingLvl);
\r
1123 halbtc8192e2ant_SetDacSwingReg(pBtCoexist, 0x18);
\r
1129 halbtc8192e2ant_DacSwing(
\r
1130 IN PBTC_COEXIST pBtCoexist,
\r
1131 IN BOOLEAN bForceExec,
\r
1132 IN BOOLEAN bDacSwingOn,
\r
1133 IN u4Byte dacSwingLvl
\r
1136 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn DacSwing=%s, dacSwingLvl=0x%x\n",
\r
1137 (bForceExec? "force to":""), ((bDacSwingOn)? "ON":"OFF"), dacSwingLvl));
\r
1138 pCoexDm->bCurDacSwingOn = bDacSwingOn;
\r
1139 pCoexDm->curDacSwingLvl = dacSwingLvl;
\r
1143 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreDacSwingOn=%d, preDacSwingLvl=0x%x, bCurDacSwingOn=%d, curDacSwingLvl=0x%x\n",
\r
1144 pCoexDm->bPreDacSwingOn, pCoexDm->preDacSwingLvl,
\r
1145 pCoexDm->bCurDacSwingOn, pCoexDm->curDacSwingLvl));
\r
1147 if( (pCoexDm->bPreDacSwingOn == pCoexDm->bCurDacSwingOn) &&
\r
1148 (pCoexDm->preDacSwingLvl == pCoexDm->curDacSwingLvl) )
\r
1152 halbtc8192e2ant_SetSwFullTimeDacSwing(pBtCoexist, bDacSwingOn, dacSwingLvl);
\r
1154 pCoexDm->bPreDacSwingOn = pCoexDm->bCurDacSwingOn;
\r
1155 pCoexDm->preDacSwingLvl = pCoexDm->curDacSwingLvl;
\r
1159 halbtc8192e2ant_SetAdcBackOff(
\r
1160 IN PBTC_COEXIST pBtCoexist,
\r
1161 IN BOOLEAN bAdcBackOff
\r
1166 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level On!\n"));
\r
1167 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0xc05, 0x30, 0x3);
\r
1171 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level Off!\n"));
\r
1172 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0xc05, 0x30, 0x1);
\r
1177 halbtc8192e2ant_AdcBackOff(
\r
1178 IN PBTC_COEXIST pBtCoexist,
\r
1179 IN BOOLEAN bForceExec,
\r
1180 IN BOOLEAN bAdcBackOff
\r
1183 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn AdcBackOff = %s\n",
\r
1184 (bForceExec? "force to":""), ((bAdcBackOff)? "ON":"OFF")));
\r
1185 pCoexDm->bCurAdcBackOff = bAdcBackOff;
\r
1189 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreAdcBackOff=%d, bCurAdcBackOff=%d\n",
\r
1190 pCoexDm->bPreAdcBackOff, pCoexDm->bCurAdcBackOff));
\r
1192 if(pCoexDm->bPreAdcBackOff == pCoexDm->bCurAdcBackOff)
\r
1195 halbtc8192e2ant_SetAdcBackOff(pBtCoexist, pCoexDm->bCurAdcBackOff);
\r
1197 pCoexDm->bPreAdcBackOff = pCoexDm->bCurAdcBackOff;
\r
1201 halbtc8192e2ant_SetAgcTable(
\r
1202 IN PBTC_COEXIST pBtCoexist,
\r
1203 IN BOOLEAN bAgcTableEn
\r
1206 u1Byte rssiAdjustVal=0;
\r
1208 //=================BB AGC Gain Table
\r
1211 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB Agc Table On!\n"));
\r
1212 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x0a1A0001);
\r
1213 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x091B0001);
\r
1214 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x081C0001);
\r
1215 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x071D0001);
\r
1216 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x061E0001);
\r
1217 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x051F0001);
\r
1221 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB Agc Table Off!\n"));
\r
1222 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xaa1A0001);
\r
1223 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa91B0001);
\r
1224 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa81C0001);
\r
1225 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa71D0001);
\r
1226 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa61E0001);
\r
1227 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa51F0001);
\r
1231 //=================RF Gain
\r
1232 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x02000);
\r
1235 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table On!\n"));
\r
1236 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x38fff);
\r
1237 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x38ffe);
\r
1241 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table Off!\n"));
\r
1242 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x380c3);
\r
1243 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x28ce6);
\r
1245 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x0);
\r
1247 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xed, 0xfffff, 0x1);
\r
1250 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table On!\n"));
\r
1251 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x38fff);
\r
1252 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x38ffe);
\r
1256 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table Off!\n"));
\r
1257 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x380c3);
\r
1258 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x28ce6);
\r
1260 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xed, 0xfffff, 0x0);
\r
1262 // set rssiAdjustVal for wifi module.
\r
1265 rssiAdjustVal = 8;
\r
1267 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, &rssiAdjustVal);
\r
1273 halbtc8192e2ant_AgcTable(
\r
1274 IN PBTC_COEXIST pBtCoexist,
\r
1275 IN BOOLEAN bForceExec,
\r
1276 IN BOOLEAN bAgcTableEn
\r
1279 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s %s Agc Table\n",
\r
1280 (bForceExec? "force to":""), ((bAgcTableEn)? "Enable":"Disable")));
\r
1281 pCoexDm->bCurAgcTableEn = bAgcTableEn;
\r
1285 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreAgcTableEn=%d, bCurAgcTableEn=%d\n",
\r
1286 pCoexDm->bPreAgcTableEn, pCoexDm->bCurAgcTableEn));
\r
1288 if(pCoexDm->bPreAgcTableEn == pCoexDm->bCurAgcTableEn)
\r
1291 halbtc8192e2ant_SetAgcTable(pBtCoexist, bAgcTableEn);
\r
1293 pCoexDm->bPreAgcTableEn = pCoexDm->bCurAgcTableEn;
\r
1297 halbtc8192e2ant_SetCoexTable(
\r
1298 IN PBTC_COEXIST pBtCoexist,
\r
1299 IN u4Byte val0x6c0,
\r
1300 IN u4Byte val0x6c4,
\r
1301 IN u4Byte val0x6c8,
\r
1302 IN u1Byte val0x6cc
\r
1305 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0));
\r
1306 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c0, val0x6c0);
\r
1308 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c4=0x%x\n", val0x6c4));
\r
1309 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c4, val0x6c4);
\r
1311 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8));
\r
1312 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c8, val0x6c8);
\r
1314 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc));
\r
1315 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cc, val0x6cc);
\r
1319 halbtc8192e2ant_CoexTable(
\r
1320 IN PBTC_COEXIST pBtCoexist,
\r
1321 IN BOOLEAN bForceExec,
\r
1322 IN u4Byte val0x6c0,
\r
1323 IN u4Byte val0x6c4,
\r
1324 IN u4Byte val0x6c8,
\r
1325 IN u1Byte val0x6cc
\r
1328 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s write Coex Table 0x6c0=0x%x, 0x6c4=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n",
\r
1329 (bForceExec? "force to":""), val0x6c0, val0x6c4, val0x6c8, val0x6cc));
\r
1330 pCoexDm->curVal0x6c0 = val0x6c0;
\r
1331 pCoexDm->curVal0x6c4 = val0x6c4;
\r
1332 pCoexDm->curVal0x6c8 = val0x6c8;
\r
1333 pCoexDm->curVal0x6cc = val0x6cc;
\r
1337 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], preVal0x6c0=0x%x, preVal0x6c4=0x%x, preVal0x6c8=0x%x, preVal0x6cc=0x%x !!\n",
\r
1338 pCoexDm->preVal0x6c0, pCoexDm->preVal0x6c4, pCoexDm->preVal0x6c8, pCoexDm->preVal0x6cc));
\r
1339 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], curVal0x6c0=0x%x, curVal0x6c4=0x%x, curVal0x6c8=0x%x, curVal0x6cc=0x%x !!\n",
\r
1340 pCoexDm->curVal0x6c0, pCoexDm->curVal0x6c4, pCoexDm->curVal0x6c8, pCoexDm->curVal0x6cc));
\r
1342 if( (pCoexDm->preVal0x6c0 == pCoexDm->curVal0x6c0) &&
\r
1343 (pCoexDm->preVal0x6c4 == pCoexDm->curVal0x6c4) &&
\r
1344 (pCoexDm->preVal0x6c8 == pCoexDm->curVal0x6c8) &&
\r
1345 (pCoexDm->preVal0x6cc == pCoexDm->curVal0x6cc) )
\r
1348 halbtc8192e2ant_SetCoexTable(pBtCoexist, val0x6c0, val0x6c4, val0x6c8, val0x6cc);
\r
1350 pCoexDm->preVal0x6c0 = pCoexDm->curVal0x6c0;
\r
1351 pCoexDm->preVal0x6c4 = pCoexDm->curVal0x6c4;
\r
1352 pCoexDm->preVal0x6c8 = pCoexDm->curVal0x6c8;
\r
1353 pCoexDm->preVal0x6cc = pCoexDm->curVal0x6cc;
\r
1357 halbtc8192e2ant_CoexTableWithType(
\r
1358 IN PBTC_COEXIST pBtCoexist,
\r
1359 IN BOOLEAN bForceExec,
\r
1366 halbtc8192e2ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x5a5a5a5a, 0xffffff, 0x3);
\r
1369 halbtc8192e2ant_CoexTable(pBtCoexist, bForceExec, 0x5a5a5a5a, 0x5a5a5a5a, 0xffffff, 0x3);
\r
1372 halbtc8192e2ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x5ffb5ffb, 0xffffff, 0x3);
\r
1375 halbtc8192e2ant_CoexTable(pBtCoexist, bForceExec, 0x5fdf5fdf, 0x5fdb5fdb, 0xffffff, 0x3);
\r
1378 halbtc8192e2ant_CoexTable(pBtCoexist, bForceExec, 0xdfffdfff, 0x5ffb5ffb, 0xffffff, 0x3);
\r
1387 halbtc8192e2ant_SetFwIgnoreWlanAct(
\r
1388 IN PBTC_COEXIST pBtCoexist,
\r
1389 IN BOOLEAN bEnable
\r
1392 u1Byte H2C_Parameter[1] ={0};
\r
1396 H2C_Parameter[0] |= BIT0; // function enable
\r
1399 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set FW for BT Ignore Wlan_Act, FW write 0x63=0x%x\n",
\r
1400 H2C_Parameter[0]));
\r
1402 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x63, 1, H2C_Parameter);
\r
1406 halbtc8192e2ant_IgnoreWlanAct(
\r
1407 IN PBTC_COEXIST pBtCoexist,
\r
1408 IN BOOLEAN bForceExec,
\r
1409 IN BOOLEAN bEnable
\r
1412 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn Ignore WlanAct %s\n",
\r
1413 (bForceExec? "force to":""), (bEnable? "ON":"OFF")));
\r
1414 pCoexDm->bCurIgnoreWlanAct = bEnable;
\r
1418 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreIgnoreWlanAct = %d, bCurIgnoreWlanAct = %d!!\n",
\r
1419 pCoexDm->bPreIgnoreWlanAct, pCoexDm->bCurIgnoreWlanAct));
\r
1421 if(pCoexDm->bPreIgnoreWlanAct == pCoexDm->bCurIgnoreWlanAct)
\r
1424 halbtc8192e2ant_SetFwIgnoreWlanAct(pBtCoexist, bEnable);
\r
1426 pCoexDm->bPreIgnoreWlanAct = pCoexDm->bCurIgnoreWlanAct;
\r
1430 halbtc8192e2ant_SetFwPstdma(
\r
1431 IN PBTC_COEXIST pBtCoexist,
\r
1439 u1Byte H2C_Parameter[5] ={0};
\r
1441 H2C_Parameter[0] = byte1;
\r
1442 H2C_Parameter[1] = byte2;
\r
1443 H2C_Parameter[2] = byte3;
\r
1444 H2C_Parameter[3] = byte4;
\r
1445 H2C_Parameter[4] = byte5;
\r
1447 pCoexDm->psTdmaPara[0] = byte1;
\r
1448 pCoexDm->psTdmaPara[1] = byte2;
\r
1449 pCoexDm->psTdmaPara[2] = byte3;
\r
1450 pCoexDm->psTdmaPara[3] = byte4;
\r
1451 pCoexDm->psTdmaPara[4] = byte5;
\r
1453 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x60(5bytes)=0x%x%08x\n",
\r
1454 H2C_Parameter[0],
\r
1455 H2C_Parameter[1]<<24|H2C_Parameter[2]<<16|H2C_Parameter[3]<<8|H2C_Parameter[4]));
\r
1457 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x60, 5, H2C_Parameter);
\r
1461 halbtc8192e2ant_SwMechanism1(
\r
1462 IN PBTC_COEXIST pBtCoexist,
\r
1463 IN BOOLEAN bShrinkRxLPF,
\r
1464 IN BOOLEAN bLowPenaltyRA,
\r
1465 IN BOOLEAN bLimitedDIG,
\r
1466 IN BOOLEAN bBTLNAConstrain
\r
1472 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
1474 if(BTC_WIFI_BW_HT40 != wifiBw) //only shrink RF Rx LPF for HT40
\r
1477 bShrinkRxLPF = FALSE;
\r
1481 halbtc8192e2ant_RfShrink(pBtCoexist, NORMAL_EXEC, bShrinkRxLPF);
\r
1482 //halbtc8192e2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, bLowPenaltyRA);
\r
1486 halbtc8192e2ant_SwMechanism2(
\r
1487 IN PBTC_COEXIST pBtCoexist,
\r
1488 IN BOOLEAN bAGCTableShift,
\r
1489 IN BOOLEAN bADCBackOff,
\r
1490 IN BOOLEAN bSWDACSwing,
\r
1491 IN u4Byte dacSwingLvl
\r
1494 halbtc8192e2ant_AgcTable(pBtCoexist, NORMAL_EXEC, bAGCTableShift);
\r
1495 //halbtc8192e2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, bADCBackOff);
\r
1496 halbtc8192e2ant_DacSwing(pBtCoexist, NORMAL_EXEC, bSWDACSwing, dacSwingLvl);
\r
1500 halbtc8192e2ant_SetAntPath(
\r
1501 IN PBTC_COEXIST pBtCoexist,
\r
1502 IN u1Byte antPosType,
\r
1503 IN BOOLEAN bInitHwCfg,
\r
1504 IN BOOLEAN bWifiOff
\r
1511 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x944, 0x24);
\r
1512 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x930, 0x700700);
\r
1513 if(pBtCoexist->chipInterface == BTC_INTF_USB)
\r
1514 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x64, 0x30430004);
\r
1516 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x64, 0x30030004);
\r
1518 // 0x4c[27][24]='00', Set Antenna to BB
\r
1519 u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
\r
1522 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
\r
1526 if(pBtCoexist->chipInterface == BTC_INTF_USB)
\r
1527 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x64, 0x30430004);
\r
1529 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x64, 0x30030004);
\r
1531 // 0x4c[27][24]='11', Set Antenna to BT, 0x64[8:7]=0, 0x64[2]=1
\r
1532 u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
\r
1535 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
\r
1538 // ext switch setting
\r
1539 switch(antPosType)
\r
1541 case BTC_ANT_PATH_WIFI:
\r
1542 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x92c, 0x4);
\r
1544 case BTC_ANT_PATH_BT:
\r
1545 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x92c, 0x20);
\r
1548 case BTC_ANT_PATH_PTA:
\r
1549 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x92c, 0x4);
\r
1555 halbtc8192e2ant_PsTdma(
\r
1556 IN PBTC_COEXIST pBtCoexist,
\r
1557 IN BOOLEAN bForceExec,
\r
1558 IN BOOLEAN bTurnOn,
\r
1562 BOOLEAN bTurnOnByCnt=FALSE;
\r
1563 u1Byte psTdmaTypeByCnt=0;
\r
1565 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn %s PS TDMA, type=%d\n",
\r
1566 (bForceExec? "force to":""), (bTurnOn? "ON":"OFF"), type));
\r
1567 pCoexDm->bCurPsTdmaOn = bTurnOn;
\r
1568 pCoexDm->curPsTdma = type;
\r
1572 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPrePsTdmaOn = %d, bCurPsTdmaOn = %d!!\n",
\r
1573 pCoexDm->bPrePsTdmaOn, pCoexDm->bCurPsTdmaOn));
\r
1574 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], prePsTdma = %d, curPsTdma = %d!!\n",
\r
1575 pCoexDm->prePsTdma, pCoexDm->curPsTdma));
\r
1577 if( (pCoexDm->bPrePsTdmaOn == pCoexDm->bCurPsTdmaOn) &&
\r
1578 (pCoexDm->prePsTdma == pCoexDm->curPsTdma) )
\r
1587 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
\r
1590 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x90);
\r
1593 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0xf1, 0x90);
\r
1596 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x10, 0x3, 0xf1, 0x90);
\r
1599 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x60, 0x90);
\r
1602 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0x60, 0x90);
\r
1605 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0x70, 0x90);
\r
1608 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x10, 0x3, 0x70, 0x90);
\r
1611 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x10);
\r
1614 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x10);
\r
1617 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0xf1, 0x10);
\r
1620 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x10, 0x3, 0xf1, 0x10);
\r
1623 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe0, 0x10);
\r
1626 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe0, 0x10);
\r
1629 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0xf0, 0x10);
\r
1632 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x3, 0xf0, 0x10);
\r
1635 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0x61, 0x20, 0x03, 0x10, 0x10);
\r
1638 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0xe1, 0x90);
\r
1641 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0xe1, 0x90);
\r
1644 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0x60, 0x90);
\r
1647 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x15, 0x03, 0x70, 0x90);
\r
1650 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
\r
1656 // disable PS tdma
\r
1660 case 0: //ANT2PTA, 0x778=1
\r
1661 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0x8, 0x0, 0x0, 0x0, 0x0);
\r
1662 halbtc8192e2ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_PTA, FALSE, FALSE);
\r
1664 case 1: //ANT2BT, 0x778=3
\r
1665 halbtc8192e2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x8, 0x0);
\r
1667 halbtc8192e2ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, FALSE, FALSE);
\r
1673 // update pre state
\r
1674 pCoexDm->bPrePsTdmaOn = pCoexDm->bCurPsTdmaOn;
\r
1675 pCoexDm->prePsTdma = pCoexDm->curPsTdma;
\r
1679 halbtc8192e2ant_SetSwitchSsType(
\r
1680 IN PBTC_COEXIST pBtCoexist,
\r
1684 u1Byte mimoPs=BTC_MIMO_PS_DYNAMIC;
\r
1685 u4Byte disRaMask=0x0;
\r
1687 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], REAL set SS Type = %d\n", ssType));
\r
1689 disRaMask = halbtc8192e2ant_DecideRaMask(pBtCoexist, ssType, pCoexDm->curRaMaskType);
\r
1690 halbtc8192e2ant_UpdateRaMask(pBtCoexist, FORCE_EXEC, disRaMask);
\r
1694 halbtc8192e2ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 1);
\r
1695 // switch ofdm path
\r
1696 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0xc04, 0x11);
\r
1697 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0xd04, 0x1);
\r
1698 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x90c, 0x81111111);
\r
1699 // switch cck patch
\r
1700 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0xe77, 0x4, 0x1);
\r
1701 //pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0xa07, 0x81);
\r
1702 mimoPs=BTC_MIMO_PS_STATIC;
\r
1704 else if(ssType == 2)
\r
1706 halbtc8192e2ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 0);
\r
1707 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0xc04, 0x33);
\r
1708 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0xd04, 0x3);
\r
1709 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x90c, 0x81121313);
\r
1710 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0xe77, 0x4, 0x0);
\r
1711 //pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0xa07, 0x41);
\r
1712 mimoPs=BTC_MIMO_PS_DYNAMIC;
\r
1715 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_SEND_MIMO_PS, &mimoPs); // set rx 1ss or 2ss
\r
1719 halbtc8192e2ant_SwitchSsType(
\r
1720 IN PBTC_COEXIST pBtCoexist,
\r
1721 IN BOOLEAN bForceExec,
\r
1722 IN u1Byte newSsType
\r
1725 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], %s Switch SS Type = %d\n",
\r
1726 (bForceExec? "force to":""), newSsType));
\r
1727 pCoexDm->curSsType = newSsType;
\r
1731 if(pCoexDm->preSsType == pCoexDm->curSsType)
\r
1734 halbtc8192e2ant_SetSwitchSsType(pBtCoexist, pCoexDm->curSsType);
\r
1736 pCoexDm->preSsType = pCoexDm->curSsType;
\r
1740 halbtc8192e2ant_CoexAllOff(
\r
1741 IN PBTC_COEXIST pBtCoexist
\r
1745 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 1);
\r
1746 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
1747 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
1750 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
1751 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
1754 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
\r
1758 halbtc8192e2ant_InitCoexDm(
\r
1759 IN PBTC_COEXIST pBtCoexist
\r
1762 // force to reset coex mechanism
\r
1764 halbtc8192e2ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 1);
\r
1765 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, FORCE_EXEC, 6);
\r
1766 halbtc8192e2ant_DecBtPwr(pBtCoexist, FORCE_EXEC, 0);
\r
1768 halbtc8192e2ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0);
\r
1769 halbtc8192e2ant_SwitchSsType(pBtCoexist, FORCE_EXEC, 2);
\r
1771 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
1772 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
1776 halbtc8192e2ant_ActionBtInquiry(
\r
1777 IN PBTC_COEXIST pBtCoexist
\r
1780 BOOLEAN bLowPwrDisable=TRUE;
\r
1782 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
\r
1784 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
1786 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
\r
1787 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
1788 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
1789 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
1791 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
1792 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
1796 halbtc8192e2ant_IsCommonAction(
\r
1797 IN PBTC_COEXIST pBtCoexist
\r
1800 PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->btLinkInfo;
\r
1801 BOOLEAN bCommon=FALSE, bWifiConnected=FALSE, bWifiBusy=FALSE;
\r
1802 BOOLEAN bBtHsOn=FALSE, bLowPwrDisable=FALSE;
\r
1804 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
\r
1805 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
\r
1806 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
\r
1808 if(pBtLinkInfo->bScoExist || pBtLinkInfo->bHidExist)
\r
1810 halbtc8192e2ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 1, 0, 0, 0);
\r
1814 halbtc8192e2ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 0, 0, 0, 0);
\r
1817 if(!bWifiConnected)
\r
1819 bLowPwrDisable = FALSE;
\r
1820 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
\r
1822 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non-connected idle!!\n"));
\r
1824 if( (BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus) ||
\r
1825 (BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus) )
\r
1827 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 2);
\r
1828 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 1);
\r
1829 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0);
\r
1833 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
1834 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
\r
1835 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 1);
\r
1838 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
1839 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
1841 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
1842 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
1848 if(BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus)
\r
1850 bLowPwrDisable = FALSE;
\r
1851 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
\r
1853 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi connected + BT non connected-idle!!\n"));
\r
1855 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 2);
\r
1856 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 1);
\r
1857 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0);
\r
1858 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
1859 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
1861 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
1862 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
1866 else if(BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus)
\r
1868 bLowPwrDisable = TRUE;
\r
1869 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
\r
1873 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi connected + BT connected-idle!!\n"));
\r
1875 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 2);
\r
1876 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 1);
\r
1877 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0);
\r
1878 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
1879 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
1881 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
1882 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
1888 bLowPwrDisable = TRUE;
\r
1889 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
\r
1893 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi Connected-Busy + BT Busy!!\n"));
\r
1898 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi Connected-Idle + BT Busy!!\n"));
\r
1900 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
1901 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
\r
1902 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 21);
\r
1903 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
1904 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
1905 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
1906 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
1915 halbtc8192e2ant_TdmaDurationAdjust(
\r
1916 IN PBTC_COEXIST pBtCoexist,
\r
1917 IN BOOLEAN bScoHid,
\r
1918 IN BOOLEAN bTxPause,
\r
1919 IN u1Byte maxInterval
\r
1922 static s4Byte up,dn,m,n,WaitCount;
\r
1923 s4Byte result; //0: no change, +1: increase WiFi duration, -1: decrease WiFi duration
\r
1924 u1Byte retryCount=0;
\r
1926 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], TdmaDurationAdjust()\n"));
\r
1928 if(!pCoexDm->bAutoTdmaAdjust)
\r
1930 pCoexDm->bAutoTdmaAdjust = TRUE;
\r
1931 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], first run TdmaDurationAdjust()!!\n"));
\r
1937 if(maxInterval == 1)
\r
1939 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 13);
\r
1940 pCoexDm->psTdmaDuAdjType = 13;
\r
1942 else if(maxInterval == 2)
\r
1944 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
1945 pCoexDm->psTdmaDuAdjType = 14;
\r
1947 else if(maxInterval == 3)
\r
1949 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
1950 pCoexDm->psTdmaDuAdjType = 15;
\r
1954 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
1955 pCoexDm->psTdmaDuAdjType = 15;
\r
1960 if(maxInterval == 1)
\r
1962 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 9);
\r
1963 pCoexDm->psTdmaDuAdjType = 9;
\r
1965 else if(maxInterval == 2)
\r
1967 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
1968 pCoexDm->psTdmaDuAdjType = 10;
\r
1970 else if(maxInterval == 3)
\r
1972 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
1973 pCoexDm->psTdmaDuAdjType = 11;
\r
1977 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
1978 pCoexDm->psTdmaDuAdjType = 11;
\r
1986 if(maxInterval == 1)
\r
1988 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 5);
\r
1989 pCoexDm->psTdmaDuAdjType = 5;
\r
1991 else if(maxInterval == 2)
\r
1993 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
1994 pCoexDm->psTdmaDuAdjType = 6;
\r
1996 else if(maxInterval == 3)
\r
1998 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
1999 pCoexDm->psTdmaDuAdjType = 7;
\r
2003 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2004 pCoexDm->psTdmaDuAdjType = 7;
\r
2009 if(maxInterval == 1)
\r
2011 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 1);
\r
2012 pCoexDm->psTdmaDuAdjType = 1;
\r
2014 else if(maxInterval == 2)
\r
2016 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2017 pCoexDm->psTdmaDuAdjType = 2;
\r
2019 else if(maxInterval == 3)
\r
2021 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2022 pCoexDm->psTdmaDuAdjType = 3;
\r
2026 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2027 pCoexDm->psTdmaDuAdjType = 3;
\r
2042 //accquire the BT TRx retry count from BT_Info byte2
\r
2043 retryCount = pCoexSta->btRetryCnt;
\r
2044 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], retryCount = %d\n", retryCount));
\r
2045 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], up=%d, dn=%d, m=%d, n=%d, WaitCount=%d\n",
\r
2046 up, dn, m, n, WaitCount));
\r
2050 if(retryCount == 0) // no retry in the last 2-second duration
\r
2058 if(up >= n) // if ³sÄò n Ó2¬í retry count¬°0, «h½Õ¼eWiFi duration
\r
2065 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Increase wifi duration!!\n"));
\r
2068 else if (retryCount <= 3) // <=3 retry in the last 2-second duration
\r
2076 if (dn == 2) // if ³sÄò 2 Ó2¬í retry count< 3, «h½Õ¯¶WiFi duration
\r
2078 if (WaitCount <= 2)
\r
2079 m++; // ÁקK¤@ª½¦b¨âÓlevel¤¤¨Ó¦^
\r
2083 if ( m >= 20) //m ³Ì¤jÈ = 20 ' ³Ì¤j120¬í recheck¬O§_½Õ¾ã WiFi duration.
\r
2091 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter<3!!\n"));
\r
2094 else //retry count > 3, ¥un1¦¸ retry count > 3, «h½Õ¯¶WiFi duration
\r
2096 if (WaitCount == 1)
\r
2097 m++; // ÁקK¤@ª½¦b¨âÓlevel¤¤¨Ó¦^
\r
2101 if ( m >= 20) //m ³Ì¤jÈ = 20 ' ³Ì¤j120¬í recheck¬O§_½Õ¾ã WiFi duration.
\r
2109 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter>3!!\n"));
\r
2112 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], max Interval = %d\n", maxInterval));
\r
2113 if(maxInterval == 1)
\r
2117 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 1\n"));
\r
2119 if(pCoexDm->curPsTdma == 71)
\r
2121 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 5);
\r
2122 pCoexDm->psTdmaDuAdjType = 5;
\r
2124 else if(pCoexDm->curPsTdma == 1)
\r
2126 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 5);
\r
2127 pCoexDm->psTdmaDuAdjType = 5;
\r
2129 else if(pCoexDm->curPsTdma == 2)
\r
2131 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2132 pCoexDm->psTdmaDuAdjType = 6;
\r
2134 else if(pCoexDm->curPsTdma == 3)
\r
2136 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2137 pCoexDm->psTdmaDuAdjType = 7;
\r
2139 else if(pCoexDm->curPsTdma == 4)
\r
2141 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 8);
\r
2142 pCoexDm->psTdmaDuAdjType = 8;
\r
2144 if(pCoexDm->curPsTdma == 9)
\r
2146 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 13);
\r
2147 pCoexDm->psTdmaDuAdjType = 13;
\r
2149 else if(pCoexDm->curPsTdma == 10)
\r
2151 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2152 pCoexDm->psTdmaDuAdjType = 14;
\r
2154 else if(pCoexDm->curPsTdma == 11)
\r
2156 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2157 pCoexDm->psTdmaDuAdjType = 15;
\r
2159 else if(pCoexDm->curPsTdma == 12)
\r
2161 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 16);
\r
2162 pCoexDm->psTdmaDuAdjType = 16;
\r
2167 if(pCoexDm->curPsTdma == 5)
\r
2169 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2170 pCoexDm->psTdmaDuAdjType = 6;
\r
2172 else if(pCoexDm->curPsTdma == 6)
\r
2174 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2175 pCoexDm->psTdmaDuAdjType = 7;
\r
2177 else if(pCoexDm->curPsTdma == 7)
\r
2179 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 8);
\r
2180 pCoexDm->psTdmaDuAdjType = 8;
\r
2182 else if(pCoexDm->curPsTdma == 13)
\r
2184 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2185 pCoexDm->psTdmaDuAdjType = 14;
\r
2187 else if(pCoexDm->curPsTdma == 14)
\r
2189 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2190 pCoexDm->psTdmaDuAdjType = 15;
\r
2192 else if(pCoexDm->curPsTdma == 15)
\r
2194 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 16);
\r
2195 pCoexDm->psTdmaDuAdjType = 16;
\r
2198 else if (result == 1)
\r
2200 if(pCoexDm->curPsTdma == 8)
\r
2202 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2203 pCoexDm->psTdmaDuAdjType = 7;
\r
2205 else if(pCoexDm->curPsTdma == 7)
\r
2207 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2208 pCoexDm->psTdmaDuAdjType = 6;
\r
2210 else if(pCoexDm->curPsTdma == 6)
\r
2212 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 5);
\r
2213 pCoexDm->psTdmaDuAdjType = 5;
\r
2215 else if(pCoexDm->curPsTdma == 16)
\r
2217 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2218 pCoexDm->psTdmaDuAdjType = 15;
\r
2220 else if(pCoexDm->curPsTdma == 15)
\r
2222 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2223 pCoexDm->psTdmaDuAdjType = 14;
\r
2225 else if(pCoexDm->curPsTdma == 14)
\r
2227 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 13);
\r
2228 pCoexDm->psTdmaDuAdjType = 13;
\r
2234 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 0\n"));
\r
2235 if(pCoexDm->curPsTdma == 5)
\r
2237 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 71);
\r
2238 pCoexDm->psTdmaDuAdjType = 71;
\r
2240 else if(pCoexDm->curPsTdma == 6)
\r
2242 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2243 pCoexDm->psTdmaDuAdjType = 2;
\r
2245 else if(pCoexDm->curPsTdma == 7)
\r
2247 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2248 pCoexDm->psTdmaDuAdjType = 3;
\r
2250 else if(pCoexDm->curPsTdma == 8)
\r
2252 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 4);
\r
2253 pCoexDm->psTdmaDuAdjType = 4;
\r
2255 if(pCoexDm->curPsTdma == 13)
\r
2257 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 9);
\r
2258 pCoexDm->psTdmaDuAdjType = 9;
\r
2260 else if(pCoexDm->curPsTdma == 14)
\r
2262 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2263 pCoexDm->psTdmaDuAdjType = 10;
\r
2265 else if(pCoexDm->curPsTdma == 15)
\r
2267 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2268 pCoexDm->psTdmaDuAdjType = 11;
\r
2270 else if(pCoexDm->curPsTdma == 16)
\r
2272 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 12);
\r
2273 pCoexDm->psTdmaDuAdjType = 12;
\r
2278 if(pCoexDm->curPsTdma == 71)
\r
2280 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 1);
\r
2281 pCoexDm->psTdmaDuAdjType = 1;
\r
2283 else if(pCoexDm->curPsTdma == 1)
\r
2285 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2286 pCoexDm->psTdmaDuAdjType = 2;
\r
2288 else if(pCoexDm->curPsTdma == 2)
\r
2290 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2291 pCoexDm->psTdmaDuAdjType = 3;
\r
2293 else if(pCoexDm->curPsTdma == 3)
\r
2295 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 4);
\r
2296 pCoexDm->psTdmaDuAdjType = 4;
\r
2298 else if(pCoexDm->curPsTdma == 9)
\r
2300 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2301 pCoexDm->psTdmaDuAdjType = 10;
\r
2303 else if(pCoexDm->curPsTdma == 10)
\r
2305 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2306 pCoexDm->psTdmaDuAdjType = 11;
\r
2308 else if(pCoexDm->curPsTdma == 11)
\r
2310 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 12);
\r
2311 pCoexDm->psTdmaDuAdjType = 12;
\r
2314 else if (result == 1)
\r
2316 if(pCoexDm->curPsTdma == 4)
\r
2318 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2319 pCoexDm->psTdmaDuAdjType = 3;
\r
2321 else if(pCoexDm->curPsTdma == 3)
\r
2323 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2324 pCoexDm->psTdmaDuAdjType = 2;
\r
2326 else if(pCoexDm->curPsTdma == 2)
\r
2328 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 1);
\r
2329 pCoexDm->psTdmaDuAdjType = 1;
\r
2331 else if(pCoexDm->curPsTdma == 1)
\r
2333 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 71);
\r
2334 pCoexDm->psTdmaDuAdjType = 71;
\r
2336 else if(pCoexDm->curPsTdma == 12)
\r
2338 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2339 pCoexDm->psTdmaDuAdjType = 11;
\r
2341 else if(pCoexDm->curPsTdma == 11)
\r
2343 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2344 pCoexDm->psTdmaDuAdjType = 10;
\r
2346 else if(pCoexDm->curPsTdma == 10)
\r
2348 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 9);
\r
2349 pCoexDm->psTdmaDuAdjType = 9;
\r
2354 else if(maxInterval == 2)
\r
2358 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 1\n"));
\r
2359 if(pCoexDm->curPsTdma == 1)
\r
2361 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2362 pCoexDm->psTdmaDuAdjType = 6;
\r
2364 else if(pCoexDm->curPsTdma == 2)
\r
2366 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2367 pCoexDm->psTdmaDuAdjType = 6;
\r
2369 else if(pCoexDm->curPsTdma == 3)
\r
2371 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2372 pCoexDm->psTdmaDuAdjType = 7;
\r
2374 else if(pCoexDm->curPsTdma == 4)
\r
2376 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 8);
\r
2377 pCoexDm->psTdmaDuAdjType = 8;
\r
2379 if(pCoexDm->curPsTdma == 9)
\r
2381 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2382 pCoexDm->psTdmaDuAdjType = 14;
\r
2384 else if(pCoexDm->curPsTdma == 10)
\r
2386 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2387 pCoexDm->psTdmaDuAdjType = 14;
\r
2389 else if(pCoexDm->curPsTdma == 11)
\r
2391 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2392 pCoexDm->psTdmaDuAdjType = 15;
\r
2394 else if(pCoexDm->curPsTdma == 12)
\r
2396 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 16);
\r
2397 pCoexDm->psTdmaDuAdjType = 16;
\r
2401 if(pCoexDm->curPsTdma == 5)
\r
2403 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2404 pCoexDm->psTdmaDuAdjType = 6;
\r
2406 else if(pCoexDm->curPsTdma == 6)
\r
2408 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2409 pCoexDm->psTdmaDuAdjType = 7;
\r
2411 else if(pCoexDm->curPsTdma == 7)
\r
2413 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 8);
\r
2414 pCoexDm->psTdmaDuAdjType = 8;
\r
2416 else if(pCoexDm->curPsTdma == 13)
\r
2418 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2419 pCoexDm->psTdmaDuAdjType = 14;
\r
2421 else if(pCoexDm->curPsTdma == 14)
\r
2423 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2424 pCoexDm->psTdmaDuAdjType = 15;
\r
2426 else if(pCoexDm->curPsTdma == 15)
\r
2428 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 16);
\r
2429 pCoexDm->psTdmaDuAdjType = 16;
\r
2432 else if (result == 1)
\r
2434 if(pCoexDm->curPsTdma == 8)
\r
2436 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2437 pCoexDm->psTdmaDuAdjType = 7;
\r
2439 else if(pCoexDm->curPsTdma == 7)
\r
2441 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2442 pCoexDm->psTdmaDuAdjType = 6;
\r
2444 else if(pCoexDm->curPsTdma == 6)
\r
2446 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 6);
\r
2447 pCoexDm->psTdmaDuAdjType = 6;
\r
2449 else if(pCoexDm->curPsTdma == 16)
\r
2451 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2452 pCoexDm->psTdmaDuAdjType = 15;
\r
2454 else if(pCoexDm->curPsTdma == 15)
\r
2456 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2457 pCoexDm->psTdmaDuAdjType = 14;
\r
2459 else if(pCoexDm->curPsTdma == 14)
\r
2461 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2462 pCoexDm->psTdmaDuAdjType = 14;
\r
2468 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 0\n"));
\r
2469 if(pCoexDm->curPsTdma == 5)
\r
2471 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2472 pCoexDm->psTdmaDuAdjType = 2;
\r
2474 else if(pCoexDm->curPsTdma == 6)
\r
2476 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2477 pCoexDm->psTdmaDuAdjType = 2;
\r
2479 else if(pCoexDm->curPsTdma == 7)
\r
2481 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2482 pCoexDm->psTdmaDuAdjType = 3;
\r
2484 else if(pCoexDm->curPsTdma == 8)
\r
2486 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 4);
\r
2487 pCoexDm->psTdmaDuAdjType = 4;
\r
2489 if(pCoexDm->curPsTdma == 13)
\r
2491 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2492 pCoexDm->psTdmaDuAdjType = 10;
\r
2494 else if(pCoexDm->curPsTdma == 14)
\r
2496 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2497 pCoexDm->psTdmaDuAdjType = 10;
\r
2499 else if(pCoexDm->curPsTdma == 15)
\r
2501 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2502 pCoexDm->psTdmaDuAdjType = 11;
\r
2504 else if(pCoexDm->curPsTdma == 16)
\r
2506 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 12);
\r
2507 pCoexDm->psTdmaDuAdjType = 12;
\r
2511 if(pCoexDm->curPsTdma == 1)
\r
2513 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2514 pCoexDm->psTdmaDuAdjType = 2;
\r
2516 else if(pCoexDm->curPsTdma == 2)
\r
2518 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2519 pCoexDm->psTdmaDuAdjType = 3;
\r
2521 else if(pCoexDm->curPsTdma == 3)
\r
2523 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 4);
\r
2524 pCoexDm->psTdmaDuAdjType = 4;
\r
2526 else if(pCoexDm->curPsTdma == 9)
\r
2528 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2529 pCoexDm->psTdmaDuAdjType = 10;
\r
2531 else if(pCoexDm->curPsTdma == 10)
\r
2533 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2534 pCoexDm->psTdmaDuAdjType = 11;
\r
2536 else if(pCoexDm->curPsTdma == 11)
\r
2538 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 12);
\r
2539 pCoexDm->psTdmaDuAdjType = 12;
\r
2542 else if (result == 1)
\r
2544 if(pCoexDm->curPsTdma == 4)
\r
2546 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2547 pCoexDm->psTdmaDuAdjType = 3;
\r
2549 else if(pCoexDm->curPsTdma == 3)
\r
2551 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2552 pCoexDm->psTdmaDuAdjType = 2;
\r
2554 else if(pCoexDm->curPsTdma == 2)
\r
2556 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 2);
\r
2557 pCoexDm->psTdmaDuAdjType = 2;
\r
2559 else if(pCoexDm->curPsTdma == 12)
\r
2561 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2562 pCoexDm->psTdmaDuAdjType = 11;
\r
2564 else if(pCoexDm->curPsTdma == 11)
\r
2566 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2567 pCoexDm->psTdmaDuAdjType = 10;
\r
2569 else if(pCoexDm->curPsTdma == 10)
\r
2571 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2572 pCoexDm->psTdmaDuAdjType = 10;
\r
2577 else if(maxInterval == 3)
\r
2581 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 1\n"));
\r
2582 if(pCoexDm->curPsTdma == 1)
\r
2584 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2585 pCoexDm->psTdmaDuAdjType = 7;
\r
2587 else if(pCoexDm->curPsTdma == 2)
\r
2589 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2590 pCoexDm->psTdmaDuAdjType = 7;
\r
2592 else if(pCoexDm->curPsTdma == 3)
\r
2594 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2595 pCoexDm->psTdmaDuAdjType = 7;
\r
2597 else if(pCoexDm->curPsTdma == 4)
\r
2599 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 8);
\r
2600 pCoexDm->psTdmaDuAdjType = 8;
\r
2602 if(pCoexDm->curPsTdma == 9)
\r
2604 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2605 pCoexDm->psTdmaDuAdjType = 15;
\r
2607 else if(pCoexDm->curPsTdma == 10)
\r
2609 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2610 pCoexDm->psTdmaDuAdjType = 15;
\r
2612 else if(pCoexDm->curPsTdma == 11)
\r
2614 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2615 pCoexDm->psTdmaDuAdjType = 15;
\r
2617 else if(pCoexDm->curPsTdma == 12)
\r
2619 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 16);
\r
2620 pCoexDm->psTdmaDuAdjType = 16;
\r
2624 if(pCoexDm->curPsTdma == 5)
\r
2626 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2627 pCoexDm->psTdmaDuAdjType = 7;
\r
2629 else if(pCoexDm->curPsTdma == 6)
\r
2631 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2632 pCoexDm->psTdmaDuAdjType = 7;
\r
2634 else if(pCoexDm->curPsTdma == 7)
\r
2636 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 8);
\r
2637 pCoexDm->psTdmaDuAdjType = 8;
\r
2639 else if(pCoexDm->curPsTdma == 13)
\r
2641 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2642 pCoexDm->psTdmaDuAdjType = 15;
\r
2644 else if(pCoexDm->curPsTdma == 14)
\r
2646 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2647 pCoexDm->psTdmaDuAdjType = 15;
\r
2649 else if(pCoexDm->curPsTdma == 15)
\r
2651 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 16);
\r
2652 pCoexDm->psTdmaDuAdjType = 16;
\r
2655 else if (result == 1)
\r
2657 if(pCoexDm->curPsTdma == 8)
\r
2659 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2660 pCoexDm->psTdmaDuAdjType = 7;
\r
2662 else if(pCoexDm->curPsTdma == 7)
\r
2664 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2665 pCoexDm->psTdmaDuAdjType = 7;
\r
2667 else if(pCoexDm->curPsTdma == 6)
\r
2669 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 7);
\r
2670 pCoexDm->psTdmaDuAdjType = 7;
\r
2672 else if(pCoexDm->curPsTdma == 16)
\r
2674 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2675 pCoexDm->psTdmaDuAdjType = 15;
\r
2677 else if(pCoexDm->curPsTdma == 15)
\r
2679 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2680 pCoexDm->psTdmaDuAdjType = 15;
\r
2682 else if(pCoexDm->curPsTdma == 14)
\r
2684 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 15);
\r
2685 pCoexDm->psTdmaDuAdjType = 15;
\r
2691 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 0\n"));
\r
2692 if(pCoexDm->curPsTdma == 5)
\r
2694 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2695 pCoexDm->psTdmaDuAdjType = 3;
\r
2697 else if(pCoexDm->curPsTdma == 6)
\r
2699 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2700 pCoexDm->psTdmaDuAdjType = 3;
\r
2702 else if(pCoexDm->curPsTdma == 7)
\r
2704 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2705 pCoexDm->psTdmaDuAdjType = 3;
\r
2707 else if(pCoexDm->curPsTdma == 8)
\r
2709 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 4);
\r
2710 pCoexDm->psTdmaDuAdjType = 4;
\r
2712 if(pCoexDm->curPsTdma == 13)
\r
2714 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2715 pCoexDm->psTdmaDuAdjType = 11;
\r
2717 else if(pCoexDm->curPsTdma == 14)
\r
2719 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2720 pCoexDm->psTdmaDuAdjType = 11;
\r
2722 else if(pCoexDm->curPsTdma == 15)
\r
2724 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2725 pCoexDm->psTdmaDuAdjType = 11;
\r
2727 else if(pCoexDm->curPsTdma == 16)
\r
2729 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 12);
\r
2730 pCoexDm->psTdmaDuAdjType = 12;
\r
2734 if(pCoexDm->curPsTdma == 1)
\r
2736 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2737 pCoexDm->psTdmaDuAdjType = 3;
\r
2739 else if(pCoexDm->curPsTdma == 2)
\r
2741 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2742 pCoexDm->psTdmaDuAdjType = 3;
\r
2744 else if(pCoexDm->curPsTdma == 3)
\r
2746 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 4);
\r
2747 pCoexDm->psTdmaDuAdjType = 4;
\r
2749 else if(pCoexDm->curPsTdma == 9)
\r
2751 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2752 pCoexDm->psTdmaDuAdjType = 11;
\r
2754 else if(pCoexDm->curPsTdma == 10)
\r
2756 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2757 pCoexDm->psTdmaDuAdjType = 11;
\r
2759 else if(pCoexDm->curPsTdma == 11)
\r
2761 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 12);
\r
2762 pCoexDm->psTdmaDuAdjType = 12;
\r
2765 else if (result == 1)
\r
2767 if(pCoexDm->curPsTdma == 4)
\r
2769 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2770 pCoexDm->psTdmaDuAdjType = 3;
\r
2772 else if(pCoexDm->curPsTdma == 3)
\r
2774 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2775 pCoexDm->psTdmaDuAdjType = 3;
\r
2777 else if(pCoexDm->curPsTdma == 2)
\r
2779 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 3);
\r
2780 pCoexDm->psTdmaDuAdjType = 3;
\r
2782 else if(pCoexDm->curPsTdma == 12)
\r
2784 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2785 pCoexDm->psTdmaDuAdjType = 11;
\r
2787 else if(pCoexDm->curPsTdma == 11)
\r
2789 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2790 pCoexDm->psTdmaDuAdjType = 11;
\r
2792 else if(pCoexDm->curPsTdma == 10)
\r
2794 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 11);
\r
2795 pCoexDm->psTdmaDuAdjType = 11;
\r
2802 // if current PsTdma not match with the recorded one (when scan, dhcp...),
\r
2803 // then we have to adjust it back to the previous record one.
\r
2804 if(pCoexDm->curPsTdma != pCoexDm->psTdmaDuAdjType)
\r
2806 BOOLEAN bScan=FALSE, bLink=FALSE, bRoam=FALSE;
\r
2807 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], PsTdma type dismatch!!!, curPsTdma=%d, recordPsTdma=%d\n",
\r
2808 pCoexDm->curPsTdma, pCoexDm->psTdmaDuAdjType));
\r
2810 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan);
\r
2811 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink);
\r
2812 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam);
\r
2814 if( !bScan && !bLink && !bRoam)
\r
2816 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, pCoexDm->psTdmaDuAdjType);
\r
2820 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], roaming/link/scan is under progress, will adjust next time!!!\n"));
\r
2825 // SCO only or SCO+PAN(HS)
\r
2827 halbtc8192e2ant_ActionSco(
\r
2828 IN PBTC_COEXIST pBtCoexist
\r
2831 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_STAY_LOW;
\r
2834 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
2836 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
2837 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
2839 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
2841 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
\r
2843 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
2845 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
2846 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
2848 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
2849 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 13);
\r
2851 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
2852 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
2854 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
2855 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 9);
\r
2857 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
2858 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
2860 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
2861 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 9);
\r
2864 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
2867 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
2869 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
2870 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
2872 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
2873 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x6);
\r
2877 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
2878 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x6);
\r
2883 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
2884 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
2886 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
2887 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x6);
\r
2891 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
2892 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x6);
\r
2898 halbtc8192e2ant_ActionScoPan(
\r
2899 IN PBTC_COEXIST pBtCoexist
\r
2902 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_STAY_LOW;
\r
2905 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
2907 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
2908 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
2910 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
2912 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
\r
2914 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
2916 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
2917 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
2919 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
2920 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
2922 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
2923 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
2925 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
2926 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2928 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
2929 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
2931 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
2932 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
2935 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
2938 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
2940 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
2941 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
2943 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
2944 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x6);
\r
2948 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
2949 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x6);
\r
2954 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
2955 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
2957 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
2958 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x6);
\r
2962 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
2963 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x6);
\r
2969 halbtc8192e2ant_ActionHid(
\r
2970 IN PBTC_COEXIST pBtCoexist
\r
2973 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
2976 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
2977 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
2979 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
2980 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
2982 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
2984 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
2986 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 3);
\r
2988 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
2989 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
2991 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
2992 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 13);
\r
2994 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
2995 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
2997 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
2998 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 9);
\r
3000 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3001 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3003 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3004 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 9);
\r
3008 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3010 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3011 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3013 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3014 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3018 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3019 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3024 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3025 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3027 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3028 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3032 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3033 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3038 //A2DP only / PAN(EDR) only/ A2DP+PAN(HS)
\r
3040 halbtc8192e2ant_ActionA2dp(
\r
3041 IN PBTC_COEXIST pBtCoexist
\r
3044 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3046 BOOLEAN bLongDist=FALSE;
\r
3048 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3049 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3051 if( (btRssiState == BTC_RSSI_STATE_LOW||btRssiState == BTC_RSSI_STATE_STAY_LOW) &&
\r
3052 (wifiRssiState == BTC_RSSI_STATE_LOW||wifiRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3054 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2dp, wifi/bt rssi both LOW!!\n"));
\r
3059 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 2);
\r
3060 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, TRUE, 0x4);
\r
3064 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3065 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3068 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
3071 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
\r
3073 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
\r
3078 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 17);
\r
3079 pCoexDm->bAutoTdmaAdjust = FALSE;
\r
3080 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3084 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3085 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3087 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, TRUE, 1);
\r
3088 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3090 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3091 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3093 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 1);
\r
3094 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3096 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3097 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3099 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 1);
\r
3100 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3105 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3106 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3108 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3109 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3111 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3112 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3116 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3117 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3122 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3123 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3125 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3126 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3130 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3131 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3137 halbtc8192e2ant_ActionA2dpPanHs(
\r
3138 IN PBTC_COEXIST pBtCoexist
\r
3141 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3144 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3145 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3147 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3148 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3150 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
3151 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
\r
3153 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3154 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3156 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, TRUE, 2);
\r
3157 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3159 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3160 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3162 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 2);
\r
3163 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3165 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3166 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3168 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 2);
\r
3169 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3173 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3174 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3176 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3177 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3179 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3180 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,TRUE,0x6);
\r
3184 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3185 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,TRUE,0x6);
\r
3190 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3191 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3193 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3194 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,TRUE,0x6);
\r
3198 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3199 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,TRUE,0x6);
\r
3205 halbtc8192e2ant_ActionPanEdr(
\r
3206 IN PBTC_COEXIST pBtCoexist
\r
3209 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3212 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3213 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3215 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3216 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3218 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
3220 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
\r
3222 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3223 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3225 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3226 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 5);
\r
3228 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3229 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3231 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3232 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 1);
\r
3234 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3235 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3237 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3238 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 1);
\r
3242 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3243 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3245 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3246 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3248 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3249 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3253 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3254 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3259 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3260 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3262 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3263 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3267 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3268 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3275 halbtc8192e2ant_ActionPanHs(
\r
3276 IN PBTC_COEXIST pBtCoexist
\r
3279 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3282 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3283 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3285 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3286 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3288 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
3290 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
\r
3292 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3293 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3295 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3297 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3298 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3300 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3302 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3303 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3305 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3307 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 1);
\r
3309 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3310 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3312 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3313 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3315 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3316 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3320 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3321 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3326 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3327 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3329 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3330 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3334 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3335 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3342 halbtc8192e2ant_ActionPanEdrA2dp(
\r
3343 IN PBTC_COEXIST pBtCoexist
\r
3346 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3349 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3350 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3352 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3353 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3355 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
3357 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
\r
3359 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3361 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3362 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3364 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3365 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, TRUE, 3);
\r
3367 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3368 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3370 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3371 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 3);
\r
3373 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3374 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3376 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3377 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 3);
\r
3381 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3383 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3384 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3386 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3387 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3391 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,FALSE,FALSE,FALSE);
\r
3392 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3397 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3398 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3400 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3401 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3405 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE);
\r
3406 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3412 halbtc8192e2ant_ActionPanEdrHid(
\r
3413 IN PBTC_COEXIST pBtCoexist
\r
3416 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3419 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3420 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3422 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3424 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3425 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3427 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
3429 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 3);
\r
3431 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3432 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3434 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3435 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 14);
\r
3437 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3438 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3440 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3441 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
3443 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3444 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3446 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3447 halbtc8192e2ant_PsTdma(pBtCoexist, NORMAL_EXEC, TRUE, 10);
\r
3451 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3453 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3454 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3456 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3457 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3461 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3462 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3467 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3468 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3470 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3471 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3475 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3476 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3481 // HID+A2DP+PAN(EDR)
\r
3483 halbtc8192e2ant_ActionHidA2dpPanEdr(
\r
3484 IN PBTC_COEXIST pBtCoexist
\r
3487 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3490 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3491 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3493 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3494 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3496 halbtc8192e2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
\r
3498 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3500 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 3);
\r
3502 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3503 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3505 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3506 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, TRUE, TRUE, 3);
\r
3508 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3509 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3511 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3512 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, TRUE, FALSE, 3);
\r
3514 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3515 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3517 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3518 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, TRUE, FALSE, 3);
\r
3522 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3524 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3525 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3527 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3528 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3532 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3533 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3538 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3539 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3541 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3542 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3546 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3547 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3553 halbtc8192e2ant_ActionHidA2dp(
\r
3554 IN PBTC_COEXIST pBtCoexist
\r
3557 u1Byte wifiRssiState, btRssiState=BTC_RSSI_STATE_HIGH;
\r
3560 wifiRssiState = halbtc8192e2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
\r
3561 btRssiState = halbtc8192e2ant_BtRssiState(3, 34, 42);
\r
3563 halbtc8192e2ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1);
\r
3564 halbtc8192e2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, FALSE, FALSE, 0x8);
\r
3566 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3568 halbtc8192e2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 3);
\r
3570 if( (btRssiState == BTC_RSSI_STATE_LOW) ||
\r
3571 (btRssiState == BTC_RSSI_STATE_STAY_LOW) )
\r
3573 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
\r
3574 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, TRUE, TRUE, 2);
\r
3576 else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) ||
\r
3577 (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) )
\r
3579 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
\r
3580 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, TRUE, FALSE, 2);
\r
3582 else if( (btRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3583 (btRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3585 halbtc8192e2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
\r
3586 halbtc8192e2ant_TdmaDurationAdjust(pBtCoexist, TRUE, FALSE, 2);
\r
3590 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
3592 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3593 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3595 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3596 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3600 halbtc8192e2ant_SwMechanism1(pBtCoexist,TRUE,TRUE,FALSE,FALSE);
\r
3601 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3606 if( (wifiRssiState == BTC_RSSI_STATE_HIGH) ||
\r
3607 (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) )
\r
3609 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3610 halbtc8192e2ant_SwMechanism2(pBtCoexist,TRUE,FALSE,FALSE,0x18);
\r
3614 halbtc8192e2ant_SwMechanism1(pBtCoexist,FALSE,TRUE,FALSE,FALSE);
\r
3615 halbtc8192e2ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18);
\r
3621 halbtc8192e2ant_RunCoexistMechanism(
\r
3622 IN PBTC_COEXIST pBtCoexist
\r
3625 BOOLEAN bWifiUnder5G=FALSE;
\r
3626 u1Byte btInfoOriginal=0, btRetryCnt=0;
\r
3627 u1Byte algorithm=0;
\r
3629 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism()===>\n"));
\r
3631 if(pBtCoexist->bManualControl)
\r
3633 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism(), return for Manual CTRL <===\n"));
\r
3637 if(pCoexSta->bUnderIps)
\r
3639 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi is under IPS !!!\n"));
\r
3643 algorithm = halbtc8192e2ant_ActionAlgorithm(pBtCoexist);
\r
3644 if(pCoexSta->bC2hBtInquiryPage && (BT_8192E_2ANT_COEX_ALGO_PANHS!=algorithm))
\r
3646 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BT is under inquiry/page scan !!\n"));
\r
3647 halbtc8192e2ant_ActionBtInquiry(pBtCoexist);
\r
3651 pCoexDm->curAlgorithm = algorithm;
\r
3652 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Algorithm = %d \n", pCoexDm->curAlgorithm));
\r
3654 if(halbtc8192e2ant_IsCommonAction(pBtCoexist))
\r
3656 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant common.\n"));
\r
3657 pCoexDm->bAutoTdmaAdjust = FALSE;
\r
3661 if(pCoexDm->curAlgorithm != pCoexDm->preAlgorithm)
\r
3663 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], preAlgorithm=%d, curAlgorithm=%d\n",
\r
3664 pCoexDm->preAlgorithm, pCoexDm->curAlgorithm));
\r
3665 pCoexDm->bAutoTdmaAdjust = FALSE;
\r
3667 switch(pCoexDm->curAlgorithm)
\r
3669 case BT_8192E_2ANT_COEX_ALGO_SCO:
\r
3670 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = SCO.\n"));
\r
3671 halbtc8192e2ant_ActionSco(pBtCoexist);
\r
3673 case BT_8192E_2ANT_COEX_ALGO_SCO_PAN:
\r
3674 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = SCO+PAN(EDR).\n"));
\r
3675 halbtc8192e2ant_ActionScoPan(pBtCoexist);
\r
3677 case BT_8192E_2ANT_COEX_ALGO_HID:
\r
3678 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HID.\n"));
\r
3679 halbtc8192e2ant_ActionHid(pBtCoexist);
\r
3681 case BT_8192E_2ANT_COEX_ALGO_A2DP:
\r
3682 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = A2DP.\n"));
\r
3683 halbtc8192e2ant_ActionA2dp(pBtCoexist);
\r
3685 case BT_8192E_2ANT_COEX_ALGO_A2DP_PANHS:
\r
3686 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = A2DP+PAN(HS).\n"));
\r
3687 halbtc8192e2ant_ActionA2dpPanHs(pBtCoexist);
\r
3689 case BT_8192E_2ANT_COEX_ALGO_PANEDR:
\r
3690 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = PAN(EDR).\n"));
\r
3691 halbtc8192e2ant_ActionPanEdr(pBtCoexist);
\r
3693 case BT_8192E_2ANT_COEX_ALGO_PANHS:
\r
3694 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HS mode.\n"));
\r
3695 halbtc8192e2ant_ActionPanHs(pBtCoexist);
\r
3697 case BT_8192E_2ANT_COEX_ALGO_PANEDR_A2DP:
\r
3698 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = PAN+A2DP.\n"));
\r
3699 halbtc8192e2ant_ActionPanEdrA2dp(pBtCoexist);
\r
3701 case BT_8192E_2ANT_COEX_ALGO_PANEDR_HID:
\r
3702 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = PAN(EDR)+HID.\n"));
\r
3703 halbtc8192e2ant_ActionPanEdrHid(pBtCoexist);
\r
3705 case BT_8192E_2ANT_COEX_ALGO_HID_A2DP_PANEDR:
\r
3706 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HID+A2DP+PAN.\n"));
\r
3707 halbtc8192e2ant_ActionHidA2dpPanEdr(pBtCoexist);
\r
3709 case BT_8192E_2ANT_COEX_ALGO_HID_A2DP:
\r
3710 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HID+A2DP.\n"));
\r
3711 halbtc8192e2ant_ActionHidA2dp(pBtCoexist);
\r
3714 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = unknown!!\n"));
\r
3715 //halbtc8192e2ant_CoexAllOff(pBtCoexist);
\r
3718 pCoexDm->preAlgorithm = pCoexDm->curAlgorithm;
\r
3723 halbtc8192e2ant_InitHwConfig(
\r
3724 IN PBTC_COEXIST pBtCoexist,
\r
3725 IN BOOLEAN bBackUp
\r
3732 BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], 2Ant Init HW Config!!\n"));
\r
3736 // backup rf 0x1e value
\r
3737 pCoexDm->btRf0x1eBackup =
\r
3738 pBtCoexist->fBtcGetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff);
\r
3740 pCoexDm->backupArfrCnt1 = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x430);
\r
3741 pCoexDm->backupArfrCnt2 = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x434);
\r
3742 pCoexDm->backupRetryLimit = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0x42a);
\r
3743 pCoexDm->backupAmpduMaxTime = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x456);
\r
3746 // antenna sw ctrl to bt
\r
3747 halbtc8192e2ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, TRUE, FALSE);
\r
3749 halbtc8192e2ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0);
\r
3751 // antenna switch control parameter
\r
3752 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x858, 0x55555555);
\r
3754 // coex parameters
\r
3755 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x778, 0x3);
\r
3757 u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x790);
\r
3760 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x790, u1Tmp);
\r
3762 // enable counter statistics
\r
3763 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
\r
3766 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x40, 0x20);
\r
3767 // enable mailbox interface
\r
3768 u2Tmp = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0x40);
\r
3770 pBtCoexist->fBtcWrite2Byte(pBtCoexist, 0x40, u2Tmp);
\r
3772 // enable PTA I2C mailbox
\r
3773 u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x101);
\r
3775 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x101, u1Tmp);
\r
3777 // enable bt clock when wifi is disabled.
\r
3778 u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x93);
\r
3780 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x93, u1Tmp);
\r
3781 // enable bt clock when suspend.
\r
3782 u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x7);
\r
3784 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x7, u1Tmp);
\r
3787 //============================================================
\r
3788 // work around function start with wa_halbtc8192e2ant_
\r
3789 //============================================================
\r
3790 //============================================================
\r
3791 // extern function start with EXhalbtc8192e2ant_
\r
3792 //============================================================
\r
3794 EXhalbtc8192e2ant_InitHwConfig(
\r
3795 IN PBTC_COEXIST pBtCoexist
\r
3798 halbtc8192e2ant_InitHwConfig(pBtCoexist, TRUE);
\r
3802 EXhalbtc8192e2ant_InitCoexDm(
\r
3803 IN PBTC_COEXIST pBtCoexist
\r
3806 BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], Coex Mechanism Init!!\n"));
\r
3808 halbtc8192e2ant_InitCoexDm(pBtCoexist);
\r
3812 EXhalbtc8192e2ant_DisplayCoexInfo(
\r
3813 IN PBTC_COEXIST pBtCoexist
\r
3816 PBTC_BOARD_INFO pBoardInfo=&pBtCoexist->boardInfo;
\r
3817 PBTC_STACK_INFO pStackInfo=&pBtCoexist->stackInfo;
\r
3818 pu1Byte cliBuf=pBtCoexist->cliBuf;
\r
3819 u1Byte u1Tmp[4], i, btInfoExt, psTdmaCase=0;
\r
3822 BOOLEAN bRoam=FALSE, bScan=FALSE, bLink=FALSE, bWifiUnder5G=FALSE;
\r
3823 BOOLEAN bBtHsOn=FALSE, bWifiBusy=FALSE;
\r
3824 s4Byte wifiRssi=0, btHsRssi=0;
\r
3825 u4Byte wifiBw, wifiTrafficDir, faOfdm, faCck;
\r
3826 u1Byte wifiDot11Chnl, wifiHsChnl;
\r
3827 u4Byte fwVer=0, btPatchVer=0;
\r
3829 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ============[BT Coexist info]============");
\r
3830 CL_PRINTF(cliBuf);
\r
3832 if(pBtCoexist->bManualControl)
\r
3834 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ============[Under Manual Control]============");
\r
3835 CL_PRINTF(cliBuf);
\r
3836 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ==========================================");
\r
3837 CL_PRINTF(cliBuf);
\r
3840 if(!pBoardInfo->bBtExist)
\r
3842 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!");
\r
3843 CL_PRINTF(cliBuf);
\r
3847 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "Ant PG number/ Ant mechanism:", \
\r
3848 pBoardInfo->pgAntNum, pBoardInfo->btdmAntNum);
\r
3849 CL_PRINTF(cliBuf);
\r
3851 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", "BT stack/ hci ext ver", \
\r
3852 ((pStackInfo->bProfileNotified)? "Yes":"No"), pStackInfo->hciVersion);
\r
3853 CL_PRINTF(cliBuf);
\r
3855 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_BT_PATCH_VER, &btPatchVer);
\r
3856 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
\r
3857 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d_%d/ 0x%x/ 0x%x(%d)", "CoexVer/ FwVer/ PatchVer", \
\r
3858 GLCoexVerDate8192e2Ant, GLCoexVer8192e2Ant, fwVer, btPatchVer, btPatchVer);
\r
3859 CL_PRINTF(cliBuf);
\r
3861 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
\r
3862 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_WIFI_DOT11_CHNL, &wifiDot11Chnl);
\r
3863 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifiHsChnl);
\r
3864 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", "Dot11 channel / HsMode(HsChnl)", \
\r
3865 wifiDot11Chnl, bBtHsOn, wifiHsChnl);
\r
3866 CL_PRINTF(cliBuf);
\r
3868 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", "H2C Wifi inform bt chnl Info", \
\r
3869 pCoexDm->wifiChnlInfo[0], pCoexDm->wifiChnlInfo[1],
\r
3870 pCoexDm->wifiChnlInfo[2]);
\r
3871 CL_PRINTF(cliBuf);
\r
3873 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi);
\r
3874 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_S4_HS_RSSI, &btHsRssi);
\r
3875 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "Wifi rssi/ HS rssi", \
\r
3876 wifiRssi, btHsRssi);
\r
3877 CL_PRINTF(cliBuf);
\r
3879 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan);
\r
3880 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink);
\r
3881 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam);
\r
3882 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", "Wifi bLink/ bRoam/ bScan", \
\r
3883 bLink, bRoam, bScan);
\r
3884 CL_PRINTF(cliBuf);
\r
3886 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_UNDER_5G, &bWifiUnder5G);
\r
3887 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
3888 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
\r
3889 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, &wifiTrafficDir);
\r
3890 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", "Wifi status", \
\r
3891 (bWifiUnder5G? "5G":"2.4G"),
\r
3892 ((BTC_WIFI_BW_LEGACY==wifiBw)? "Legacy": (((BTC_WIFI_BW_HT40==wifiBw)? "HT40":"HT20"))),
\r
3893 ((!bWifiBusy)? "idle": ((BTC_WIFI_TRAFFIC_TX==wifiTrafficDir)? "uplink":"downlink")));
\r
3894 CL_PRINTF(cliBuf);
\r
3896 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = [%s/ %d/ %d] ", "BT [status/ rssi/ retryCnt]", \
\r
3897 ((pBtCoexist->btInfo.bBtDisabled)? ("disabled"): ((pCoexSta->bC2hBtInquiryPage)?("inquiry/page scan"):((BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus)? "non-connected idle":
\r
3898 ( (BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus)? "connected-idle":"busy")))),
\r
3899 pCoexSta->btRssi, pCoexSta->btRetryCnt);
\r
3900 CL_PRINTF(cliBuf);
\r
3902 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", "SCO/HID/PAN/A2DP", \
\r
3903 pStackInfo->bScoExist, pStackInfo->bHidExist, pStackInfo->bPanExist, pStackInfo->bA2dpExist);
\r
3904 CL_PRINTF(cliBuf);
\r
3905 pBtCoexist->fBtcDispDbgMsg(pBtCoexist, BTC_DBG_DISP_BT_LINK_INFO);
\r
3907 btInfoExt = pCoexSta->btInfoExt;
\r
3908 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", "BT Info A2DP rate", \
\r
3909 (btInfoExt&BIT0)? "Basic rate":"EDR rate");
\r
3910 CL_PRINTF(cliBuf);
\r
3912 for(i=0; i<BT_INFO_SRC_8192E_2ANT_MAX; i++)
\r
3914 if(pCoexSta->btInfoC2hCnt[i])
\r
3916 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x %02x %02x(%d)", GLBtInfoSrc8192e2Ant[i], \
\r
3917 pCoexSta->btInfoC2h[i][0], pCoexSta->btInfoC2h[i][1],
\r
3918 pCoexSta->btInfoC2h[i][2], pCoexSta->btInfoC2h[i][3],
\r
3919 pCoexSta->btInfoC2h[i][4], pCoexSta->btInfoC2h[i][5],
\r
3920 pCoexSta->btInfoC2h[i][6], pCoexSta->btInfoC2hCnt[i]);
\r
3921 CL_PRINTF(cliBuf);
\r
3925 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/%s", "PS state, IPS/LPS", \
\r
3926 ((pCoexSta->bUnderIps? "IPS ON":"IPS OFF")),
\r
3927 ((pCoexSta->bUnderLps? "LPS ON":"LPS OFF")));
\r
3928 CL_PRINTF(cliBuf);
\r
3929 pBtCoexist->fBtcDispDbgMsg(pBtCoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD);
\r
3931 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "SS Type", \
\r
3932 pCoexDm->curSsType);
\r
3933 CL_PRINTF(cliBuf);
\r
3936 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Sw mechanism]============");
\r
3937 CL_PRINTF(cliBuf);
\r
3938 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", "SM1[ShRf/ LpRA/ LimDig]", \
\r
3939 pCoexDm->bCurRfRxLpfShrink, pCoexDm->bCurLowPenaltyRa, pCoexDm->bLimitedDig);
\r
3940 CL_PRINTF(cliBuf);
\r
3941 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d(0x%x) ", "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", \
\r
3942 pCoexDm->bCurAgcTableEn, pCoexDm->bCurAdcBackOff, pCoexDm->bCurDacSwingOn, pCoexDm->curDacSwingLvl);
\r
3943 CL_PRINTF(cliBuf);
\r
3945 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "Rate Mask", \
\r
3946 pBtCoexist->btInfo.raMask);
\r
3947 CL_PRINTF(cliBuf);
\r
3950 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Fw mechanism]============");
\r
3951 CL_PRINTF(cliBuf);
\r
3953 psTdmaCase = pCoexDm->curPsTdma;
\r
3954 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x case-%d (auto:%d)", "PS TDMA", \
\r
3955 pCoexDm->psTdmaPara[0], pCoexDm->psTdmaPara[1],
\r
3956 pCoexDm->psTdmaPara[2], pCoexDm->psTdmaPara[3],
\r
3957 pCoexDm->psTdmaPara[4], psTdmaCase, pCoexDm->bAutoTdmaAdjust);
\r
3958 CL_PRINTF(cliBuf);
\r
3960 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "DecBtPwr/ IgnWlanAct", \
\r
3961 pCoexDm->curBtDecPwrLvl, pCoexDm->bCurIgnoreWlanAct);
\r
3962 CL_PRINTF(cliBuf);
\r
3965 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Hw setting]============");
\r
3966 CL_PRINTF(cliBuf);
\r
3968 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "RF-A, 0x1e initVal", \
\r
3969 pCoexDm->btRf0x1eBackup);
\r
3970 CL_PRINTF(cliBuf);
\r
3972 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/0x%x/0x%x/0x%x", "backup ARFR1/ARFR2/RL/AMaxTime", \
\r
3973 pCoexDm->backupArfrCnt1, pCoexDm->backupArfrCnt2, pCoexDm->backupRetryLimit, pCoexDm->backupAmpduMaxTime);
\r
3974 CL_PRINTF(cliBuf);
\r
3976 u4Tmp[0] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x430);
\r
3977 u4Tmp[1] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x434);
\r
3978 u2Tmp[0] = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0x42a);
\r
3979 u1Tmp[0] = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x456);
\r
3980 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/0x%x/0x%x/0x%x", "0x430/0x434/0x42a/0x456", \
\r
3981 u4Tmp[0], u4Tmp[1], u2Tmp[0], u1Tmp[0]);
\r
3982 CL_PRINTF(cliBuf);
\r
3984 u4Tmp[0] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0xc04);
\r
3985 u4Tmp[1] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0xd04);
\r
3986 u4Tmp[2] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x90c);
\r
3987 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", "0xc04/ 0xd04/ 0x90c", \
\r
3988 u4Tmp[0], u4Tmp[1], u4Tmp[2]);
\r
3989 CL_PRINTF(cliBuf);
\r
3991 u1Tmp[0] = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x778);
\r
3992 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x778", \
\r
3994 CL_PRINTF(cliBuf);
\r
3996 u1Tmp[0] = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x92c);
\r
3997 u4Tmp[0] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x930);
\r
3998 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x92c/ 0x930", \
\r
3999 (u1Tmp[0]), u4Tmp[0]);
\r
4000 CL_PRINTF(cliBuf);
\r
4002 u1Tmp[0] = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x40);
\r
4003 u1Tmp[1] = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x4f);
\r
4004 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x40/ 0x4f", \
\r
4005 u1Tmp[0], u1Tmp[1]);
\r
4006 CL_PRINTF(cliBuf);
\r
4008 u4Tmp[0] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x550);
\r
4009 u1Tmp[0] = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x522);
\r
4010 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x550(bcn ctrl)/0x522", \
\r
4011 u4Tmp[0], u1Tmp[0]);
\r
4012 CL_PRINTF(cliBuf);
\r
4014 u4Tmp[0] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0xc50);
\r
4015 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0xc50(dig)", \
\r
4017 CL_PRINTF(cliBuf);
\r
4019 u4Tmp[0] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x6c0);
\r
4020 u4Tmp[1] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x6c4);
\r
4021 u4Tmp[2] = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x6c8);
\r
4022 u1Tmp[0] = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x6cc);
\r
4023 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", \
\r
4024 u4Tmp[0], u4Tmp[1], u4Tmp[2], u1Tmp[0]);
\r
4025 CL_PRINTF(cliBuf);
\r
4027 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x770(hp rx[31:16]/tx[15:0])", \
\r
4028 pCoexSta->highPriorityRx, pCoexSta->highPriorityTx);
\r
4029 CL_PRINTF(cliBuf);
\r
4030 CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x774(lp rx[31:16]/tx[15:0])", \
\r
4031 pCoexSta->lowPriorityRx, pCoexSta->lowPriorityTx);
\r
4032 CL_PRINTF(cliBuf);
\r
4033 #if(BT_AUTO_REPORT_ONLY_8192E_2ANT == 1)
\r
4034 halbtc8192e2ant_MonitorBtCtr(pBtCoexist);
\r
4036 pBtCoexist->fBtcDispDbgMsg(pBtCoexist, BTC_DBG_DISP_COEX_STATISTICS);
\r
4041 EXhalbtc8192e2ant_IpsNotify(
\r
4042 IN PBTC_COEXIST pBtCoexist,
\r
4046 if(BTC_IPS_ENTER == type)
\r
4048 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS ENTER notify\n"));
\r
4049 pCoexSta->bUnderIps = TRUE;
\r
4050 halbtc8192e2ant_CoexAllOff(pBtCoexist);
\r
4051 halbtc8192e2ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, FALSE, TRUE);
\r
4053 else if(BTC_IPS_LEAVE == type)
\r
4055 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS LEAVE notify\n"));
\r
4056 pCoexSta->bUnderIps = FALSE;
\r
4061 EXhalbtc8192e2ant_LpsNotify(
\r
4062 IN PBTC_COEXIST pBtCoexist,
\r
4066 if(BTC_LPS_ENABLE == type)
\r
4068 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS ENABLE notify\n"));
\r
4069 pCoexSta->bUnderLps = TRUE;
\r
4071 else if(BTC_LPS_DISABLE == type)
\r
4073 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS DISABLE notify\n"));
\r
4074 pCoexSta->bUnderLps = FALSE;
\r
4079 EXhalbtc8192e2ant_ScanNotify(
\r
4080 IN PBTC_COEXIST pBtCoexist,
\r
4084 if(BTC_SCAN_START == type)
\r
4086 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN START notify\n"));
\r
4088 else if(BTC_SCAN_FINISH == type)
\r
4090 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN FINISH notify\n"));
\r
4095 EXhalbtc8192e2ant_ConnectNotify(
\r
4096 IN PBTC_COEXIST pBtCoexist,
\r
4100 if(BTC_ASSOCIATE_START == type)
\r
4102 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT START notify\n"));
\r
4104 else if(BTC_ASSOCIATE_FINISH == type)
\r
4106 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT FINISH notify\n"));
\r
4111 EXhalbtc8192e2ant_MediaStatusNotify(
\r
4112 IN PBTC_COEXIST pBtCoexist,
\r
4116 u1Byte H2C_Parameter[3] ={0};
\r
4118 u1Byte wifiCentralChnl;
\r
4120 if(pBtCoexist->bManualControl ||
\r
4121 pBtCoexist->bStopCoexDm ||
\r
4122 pBtCoexist->btInfo.bBtDisabled )
\r
4125 if(BTC_MEDIA_CONNECT == type)
\r
4127 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA connect notify\n"));
\r
4131 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA disconnect notify\n"));
\r
4134 // only 2.4G we need to inform bt the chnl mask
\r
4135 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifiCentralChnl);
\r
4136 if( (BTC_MEDIA_CONNECT == type) &&
\r
4137 (wifiCentralChnl <= 14) )
\r
4139 H2C_Parameter[0] = 0x1;
\r
4140 H2C_Parameter[1] = wifiCentralChnl;
\r
4141 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
\r
4142 if(BTC_WIFI_BW_HT40 == wifiBw)
\r
4143 H2C_Parameter[2] = 0x30;
\r
4145 H2C_Parameter[2] = 0x20;
\r
4148 pCoexDm->wifiChnlInfo[0] = H2C_Parameter[0];
\r
4149 pCoexDm->wifiChnlInfo[1] = H2C_Parameter[1];
\r
4150 pCoexDm->wifiChnlInfo[2] = H2C_Parameter[2];
\r
4152 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x66=0x%x\n",
\r
4153 H2C_Parameter[0]<<16|H2C_Parameter[1]<<8|H2C_Parameter[2]));
\r
4155 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x66, 3, H2C_Parameter);
\r
4159 EXhalbtc8192e2ant_SpecialPacketNotify(
\r
4160 IN PBTC_COEXIST pBtCoexist,
\r
4164 if(type == BTC_PACKET_DHCP)
\r
4166 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], DHCP Packet notify\n"));
\r
4171 EXhalbtc8192e2ant_BtInfoNotify(
\r
4172 IN PBTC_COEXIST pBtCoexist,
\r
4173 IN pu1Byte tmpBuf,
\r
4177 PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->btLinkInfo;
\r
4179 u1Byte i, rspSource=0;
\r
4180 BOOLEAN bBtBusy=FALSE, bLimitedDig=FALSE;
\r
4181 BOOLEAN bWifiConnected=FALSE;
\r
4183 pCoexSta->bC2hBtInfoReqSent = FALSE;
\r
4185 rspSource = tmpBuf[0]&0xf;
\r
4186 if(rspSource >= BT_INFO_SRC_8192E_2ANT_MAX)
\r
4187 rspSource = BT_INFO_SRC_8192E_2ANT_WIFI_FW;
\r
4188 pCoexSta->btInfoC2hCnt[rspSource]++;
\r
4190 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Bt info[%d], length=%d, hex data=[", rspSource, length));
\r
4191 for(i=0; i<length; i++)
\r
4193 pCoexSta->btInfoC2h[rspSource][i] = tmpBuf[i];
\r
4195 btInfo = tmpBuf[i];
\r
4198 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x]\n", tmpBuf[i]));
\r
4202 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x, ", tmpBuf[i]));
\r
4206 if(BT_INFO_SRC_8192E_2ANT_WIFI_FW != rspSource)
\r
4208 pCoexSta->btRetryCnt = // [3:0]
\r
4209 pCoexSta->btInfoC2h[rspSource][2]&0xf;
\r
4211 pCoexSta->btRssi =
\r
4212 pCoexSta->btInfoC2h[rspSource][3]*2+10;
\r
4214 pCoexSta->btInfoExt =
\r
4215 pCoexSta->btInfoC2h[rspSource][4];
\r
4217 // Here we need to resend some wifi info to BT
\r
4218 // because bt is reset and loss of the info.
\r
4219 if( (pCoexSta->btInfoExt & BIT1) )
\r
4221 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BT ext info bit1 check, send wifi BW&Chnl to BT!!\n"));
\r
4222 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
\r
4223 if(bWifiConnected)
\r
4225 EXhalbtc8192e2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_CONNECT);
\r
4229 EXhalbtc8192e2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
\r
4233 if( (pCoexSta->btInfoExt & BIT3) )
\r
4235 if(!pBtCoexist->bManualControl && !pBtCoexist->bStopCoexDm)
\r
4237 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BT ext info bit3 check, set BT NOT to ignore Wlan active!!\n"));
\r
4238 halbtc8192e2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, FALSE);
\r
4243 // BT already NOT ignore Wlan active, do nothing here.
\r
4246 #if(BT_AUTO_REPORT_ONLY_8192E_2ANT == 0)
\r
4247 if( (pCoexSta->btInfoExt & BIT4) )
\r
4249 // BT auto report already enabled, do nothing
\r
4253 halbtc8192e2ant_BtAutoReport(pBtCoexist, FORCE_EXEC, TRUE);
\r
4258 // check BIT2 first ==> check if bt is under inquiry or page scan
\r
4259 if(btInfo & BT_INFO_8192E_2ANT_B_INQ_PAGE)
\r
4260 pCoexSta->bC2hBtInquiryPage = TRUE;
\r
4262 pCoexSta->bC2hBtInquiryPage = FALSE;
\r
4264 // set link exist status
\r
4265 if(!(btInfo&BT_INFO_8192E_2ANT_B_CONNECTION))
\r
4267 pCoexSta->bBtLinkExist = FALSE;
\r
4268 pCoexSta->bPanExist = FALSE;
\r
4269 pCoexSta->bA2dpExist = FALSE;
\r
4270 pCoexSta->bHidExist = FALSE;
\r
4271 pCoexSta->bScoExist = FALSE;
\r
4273 else // connection exists
\r
4275 pCoexSta->bBtLinkExist = TRUE;
\r
4276 if(btInfo & BT_INFO_8192E_2ANT_B_FTP)
\r
4277 pCoexSta->bPanExist = TRUE;
\r
4279 pCoexSta->bPanExist = FALSE;
\r
4280 if(btInfo & BT_INFO_8192E_2ANT_B_A2DP)
\r
4281 pCoexSta->bA2dpExist = TRUE;
\r
4283 pCoexSta->bA2dpExist = FALSE;
\r
4284 if(btInfo & BT_INFO_8192E_2ANT_B_HID)
\r
4285 pCoexSta->bHidExist = TRUE;
\r
4287 pCoexSta->bHidExist = FALSE;
\r
4288 if(btInfo & BT_INFO_8192E_2ANT_B_SCO_ESCO)
\r
4289 pCoexSta->bScoExist = TRUE;
\r
4291 pCoexSta->bScoExist = FALSE;
\r
4294 halbtc8192e2ant_UpdateBtLinkInfo(pBtCoexist);
\r
4296 if(!(btInfo&BT_INFO_8192E_2ANT_B_CONNECTION))
\r
4298 pCoexDm->btStatus = BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE;
\r
4299 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), BT Non-Connected idle!!!\n"));
\r
4301 else if(btInfo == BT_INFO_8192E_2ANT_B_CONNECTION) // connection exists but no busy
\r
4303 pCoexDm->btStatus = BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE;
\r
4304 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), BT Connected-idle!!!\n"));
\r
4306 else if((btInfo&BT_INFO_8192E_2ANT_B_SCO_ESCO) ||
\r
4307 (btInfo&BT_INFO_8192E_2ANT_B_SCO_BUSY))
\r
4309 pCoexDm->btStatus = BT_8192E_2ANT_BT_STATUS_SCO_BUSY;
\r
4310 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), BT SCO busy!!!\n"));
\r
4312 else if(btInfo&BT_INFO_8192E_2ANT_B_ACL_BUSY)
\r
4314 pCoexDm->btStatus = BT_8192E_2ANT_BT_STATUS_ACL_BUSY;
\r
4315 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), BT ACL busy!!!\n"));
\r
4319 pCoexDm->btStatus = BT_8192E_2ANT_BT_STATUS_MAX;
\r
4320 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), BT Non-Defined state!!!\n"));
\r
4323 if( (BT_8192E_2ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus) ||
\r
4324 (BT_8192E_2ANT_BT_STATUS_SCO_BUSY == pCoexDm->btStatus) ||
\r
4325 (BT_8192E_2ANT_BT_STATUS_ACL_SCO_BUSY == pCoexDm->btStatus) )
\r
4328 bLimitedDig = TRUE;
\r
4333 bLimitedDig = FALSE;
\r
4336 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy);
\r
4338 pCoexDm->bLimitedDig = bLimitedDig;
\r
4339 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_LIMITED_DIG, &bLimitedDig);
\r
4341 halbtc8192e2ant_RunCoexistMechanism(pBtCoexist);
\r
4345 EXhalbtc8192e2ant_HaltNotify(
\r
4346 IN PBTC_COEXIST pBtCoexist
\r
4349 BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Halt notify\n"));
\r
4351 halbtc8192e2ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, FALSE, TRUE);
\r
4352 halbtc8192e2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, TRUE);
\r
4353 EXhalbtc8192e2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
\r
4357 EXhalbtc8192e2ant_Periodical(
\r
4358 IN PBTC_COEXIST pBtCoexist
\r
4361 static u1Byte disVerInfoCnt=0;
\r
4362 u4Byte fwVer=0, btPatchVer=0;
\r
4363 PBTC_BOARD_INFO pBoardInfo=&pBtCoexist->boardInfo;
\r
4364 PBTC_STACK_INFO pStackInfo=&pBtCoexist->stackInfo;
\r
4366 BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], ==========================Periodical===========================\n"));
\r
4368 if(disVerInfoCnt <= 5)
\r
4370 disVerInfoCnt += 1;
\r
4371 BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], ****************************************************************\n"));
\r
4372 BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], Ant PG Num/ Ant Mech/ Ant Pos = %d/ %d/ %d\n", \
\r
4373 pBoardInfo->pgAntNum, pBoardInfo->btdmAntNum, pBoardInfo->btdmAntPos));
\r
4374 BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], BT stack/ hci ext ver = %s / %d\n", \
\r
4375 ((pStackInfo->bProfileNotified)? "Yes":"No"), pStackInfo->hciVersion));
\r
4376 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_BT_PATCH_VER, &btPatchVer);
\r
4377 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
\r
4378 BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], CoexVer/ FwVer/ PatchVer = %d_%x/ 0x%x/ 0x%x(%d)\n", \
\r
4379 GLCoexVerDate8192e2Ant, GLCoexVer8192e2Ant, fwVer, btPatchVer, btPatchVer));
\r
4380 BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], ****************************************************************\n"));
\r
4383 #if(BT_AUTO_REPORT_ONLY_8192E_2ANT == 0)
\r
4384 halbtc8192e2ant_QueryBtInfo(pBtCoexist);
\r
4385 halbtc8192e2ant_MonitorBtCtr(pBtCoexist);
\r
4386 halbtc8192e2ant_MonitorBtEnableDisable(pBtCoexist);
\r
4388 if( halbtc8192e2ant_IsWifiStatusChanged(pBtCoexist) ||
\r
4389 pCoexDm->bAutoTdmaAdjust)
\r
4391 halbtc8192e2ant_RunCoexistMechanism(pBtCoexist);
\r