Lines Matching refs:pBtCoexist

13 	halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, val);           \
90 struct btc_coexist *pBtCoexist,
100 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi);
159 struct btc_coexist *pBtCoexist,
173 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, &bRejectRxAgg);
175 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE, &bBtCtrlRxAggSize);
177 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_AGG_BUF_SIZE, &rxAggSize);
179 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL);
182 static void halbtc8723b2ant_QueryBtInfo(struct btc_coexist *pBtCoexist)
190 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x61, 1, H2C_Parameter);
193 static bool halbtc8723b2ant_IsWifiStatusChanged(struct btc_coexist *pBtCoexist)
199 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
200 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
201 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
202 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &bUnder4way);
224 static void halbtc8723b2ant_UpdateBtLinkInfo(struct btc_coexist *pBtCoexist)
226 struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
229 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
288 static u8 halbtc8723b2ant_ActionAlgorithm(struct btc_coexist *pBtCoexist)
290 struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
295 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
418 struct btc_coexist *pBtCoexist, u8 dacSwingLvl
427 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x64, 1, H2C_Parameter);
431 struct btc_coexist *pBtCoexist, u8 decBtPwrLvl
438 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x62, 1, H2C_Parameter);
442 struct btc_coexist *pBtCoexist, bool bForceExec, u8 decBtPwrLvl
451 halbtc8723b2ant_SetFwDecBtPwr(pBtCoexist, pCoexDm->curBtDecPwrLvl);
457 struct btc_coexist *pBtCoexist, bool bForceExec, u8 fwDacSwingLvl
467 halbtc8723b2ant_SetFwDacSwingLevel(pBtCoexist, pCoexDm->curFwDacSwingLvl);
473 struct btc_coexist *pBtCoexist,
479 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, 0xffffc);
483 if (pBtCoexist->bInitilized) {
484 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, pCoexDm->btRf0x1eBackup);
490 struct btc_coexist *pBtCoexist, bool bForceExec, bool bRxRfShrinkOn
499 halbtc8723b2ant_SetSwRfRxLpfCorner(pBtCoexist, pCoexDm->bCurRfRxLpfShrink);
505 struct btc_coexist *pBtCoexist, bool bLowPenaltyRa
520 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x69, 6, H2C_Parameter);
524 struct btc_coexist *pBtCoexist, bool bForceExec, bool bLowPenaltyRa
534 halbtc8723b2ant_SetSwPenaltyTxRateAdaptive(pBtCoexist, pCoexDm->bCurLowPenaltyRa);
539 static void halbtc8723b2ant_SetDacSwingReg(struct btc_coexist *pBtCoexist, u32 level)
543 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x883, 0x3e, val);
547 struct btc_coexist *pBtCoexist, bool bSwDacSwingOn, u32 swDacSwingLvl
551 halbtc8723b2ant_SetDacSwingReg(pBtCoexist, swDacSwingLvl);
553 halbtc8723b2ant_SetDacSwingReg(pBtCoexist, 0x18);
558 struct btc_coexist *pBtCoexist,
573 halbtc8723b2ant_SetSwFullTimeDacSwing(pBtCoexist, bDacSwingOn, dacSwingLvl);
580 struct btc_coexist *pBtCoexist, bool bAgcTableEn
587 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6e1A0001);
588 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6d1B0001);
589 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6c1C0001);
590 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6b1D0001);
591 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6a1E0001);
592 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x691F0001);
593 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x68200001);
595 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xaa1A0001);
596 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa91B0001);
597 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa81C0001);
598 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa71D0001);
599 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa61E0001);
600 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa51F0001);
601 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa4200001);
606 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x02000);
608 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x38fff);
609 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x38ffe);
611 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x380c3);
612 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x28ce6);
614 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x0);
616 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xed, 0xfffff, 0x1);
618 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x38fff);
619 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x38ffe);
621 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x380c3);
622 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x28ce6);
624 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xed, 0xfffff, 0x0);
630 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, &rssiAdjustVal);
634 struct btc_coexist *pBtCoexist, bool bForceExec, bool bAgcTableEn
643 halbtc8723b2ant_SetAgcTable(pBtCoexist, bAgcTableEn);
649 struct btc_coexist *pBtCoexist,
656 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c0, val0x6c0);
658 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c4, val0x6c4);
660 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c8, val0x6c8);
662 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cc, val0x6cc);
666 struct btc_coexist *pBtCoexist,
688 halbtc8723b2ant_SetCoexTable(pBtCoexist, val0x6c0, val0x6c4, val0x6c8, val0x6cc);
697 struct btc_coexist *pBtCoexist, bool bForceExec, u8 type
702 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x55555555, 0xffff, 0x3);
705 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x5afa5afa, 0xffff, 0x3);
708 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x5a5a5a5a, 0x5a5a5a5a, 0xffff, 0x3);
711 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0xaaaaaaaa, 0xaaaaaaaa, 0xffff, 0x3);
714 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0xffffffff, 0xffffffff, 0xffff, 0x3);
717 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x5fff5fff, 0x5fff5fff, 0xffff, 0x3);
720 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5a5a5a5a, 0xffff, 0x3);
723 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0xfafafafa, 0xffff, 0x3);
726 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x5aea5aea, 0x5aea5aea, 0xffff, 0x3);
729 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5aea5aea, 0xffff, 0x3);
732 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5aff5aff, 0xffff, 0x3);
735 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5a5f5a5f, 0xffff, 0x3);
738 halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5f5f5f5f, 0xffff, 0x3);
746 struct btc_coexist *pBtCoexist, bool bEnable
754 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x63, 1, H2C_Parameter);
758 struct btc_coexist *pBtCoexist, bool bForceExec, bool bEnable
767 halbtc8723b2ant_SetFwIgnoreWlanAct(pBtCoexist, bEnable);
773 struct btc_coexist *pBtCoexist,
795 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x60, 5, H2C_Parameter);
799 struct btc_coexist *pBtCoexist,
806 halbtc8723b2ant_RfShrink(pBtCoexist, NORMAL_EXEC, bShrinkRxLPF);
807 halbtc8723b2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, bLowPenaltyRA);
811 struct btc_coexist *pBtCoexist,
818 halbtc8723b2ant_AgcTable(pBtCoexist, NORMAL_EXEC, bAGCTableShift);
819 halbtc8723b2ant_DacSwing(pBtCoexist, NORMAL_EXEC, bSWDACSwing, dacSwingLvl);
823 struct btc_coexist *pBtCoexist, u8 antPosType, bool bInitHwCfg, bool bWifiOff
826 struct btc_board_info *pBoardInfo = &pBtCoexist->boardInfo;
832 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_EXT_SWITCH, &bPgExtSwitch);
833 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); /* [31:16]=fw ver, [15:0]=fw sub ver */
839 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x39, 0x8, 0x1);
840 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x974, 0xff);
841 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x944, 0x3, 0x3);
842 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x930, 0x77);
843 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1);
848 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x6E, 1, H2C_Parameter);
850 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x0);
853 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
855 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); /* WiFi TRx Mask off */
856 pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x01); /* BT TRx Mask off */
873 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x65, 2, H2C_Parameter);
880 u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
883 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
886 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); /* fixed internal switch S1->WiFi, S0->BT */
889 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x1); /* ext switch main at wifi */
892 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x2); /* ext switch aux at wifi */
898 u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
901 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
904 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x64, 0x1, 0x0); /* fixed external switch S1->Main, S0->Aux */
907 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); /* fixed internal switch S1->WiFi, S0->BT */
910 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280); /* fixed internal switch S0->WiFi, S1->BT */
917 struct btc_coexist *pBtCoexist, bool bForceExec, bool bTurnOn, u8 type
935 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
938 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x90);
941 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0xf1, 0x90);
944 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x10, 0x03, 0xf1, 0x90);
947 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x60, 0x90);
950 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0x60, 0x90);
953 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0x70, 0x90);
956 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x10, 0x3, 0x70, 0x90);
959 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
962 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x90);
965 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0xe1, 0x90);
968 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0xe1, 0x90);
971 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x60, 0x90);
974 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0x60, 0x90);
977 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0x60, 0x90);
980 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0x60, 0x90);
983 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x2f, 0x2f, 0x60, 0x90);
986 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0xe1, 0x90);
989 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0xe1, 0x90);
992 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0x60, 0x90);
995 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x15, 0x03, 0x70, 0x90);
998 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
1005 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x40, 0x0);
1008 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x48, 0x0);
1011 halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x40, 0x0);
1021 static void halbtc8723b2ant_CoexAllOff(struct btc_coexist *pBtCoexist)
1024 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
1025 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1026 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1029 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1030 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1033 /* pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); */
1034 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
1037 static void halbtc8723b2ant_InitCoexDm(struct btc_coexist *pBtCoexist)
1041 halbtc8723b2ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 1);
1042 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, FORCE_EXEC, 6);
1043 halbtc8723b2ant_DecBtPwr(pBtCoexist, FORCE_EXEC, 0);
1045 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1046 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1049 static void halbtc8723b2ant_ActionBtInquiry(struct btc_coexist *pBtCoexist)
1054 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
1055 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
1058 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
1059 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3);
1061 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
1062 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
1065 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, FORCE_EXEC, 6);
1066 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1068 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1069 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1072 pCoexDm->backup0x948 = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x948);
1074 halbtc8723b2ant_SetAntPath(pBtCoexist, BTC_ANT_WIFI_AT_AUX, false, false);
1077 static bool halbtc8723b2ant_IsCommonAction(struct btc_coexist *pBtCoexist)
1083 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
1084 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
1085 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
1089 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
1090 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1092 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1093 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
1094 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
1095 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1096 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1098 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1099 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1105 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
1106 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1108 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1109 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
1110 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
1111 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0xb);
1112 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1114 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1115 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1120 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
1125 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1127 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1128 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
1129 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
1130 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0xb);
1131 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1133 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1134 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1139 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
1148 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1150 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1151 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
1152 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 21);
1153 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0xb);
1156 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1158 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1160 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1161 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1171 struct btc_coexist *pBtCoexist, bool bScoHid, bool bTxPause, u8 maxInterval
1576 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan);
1577 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink);
1578 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam);
1581 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, pCoexDm->psTdmaDuAdjType);
1587 static void halbtc8723b2ant_ActionSco(struct btc_coexist *pBtCoexist)
1592 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
1595 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1597 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1599 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 4);
1602 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1604 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1606 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1609 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
1611 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 8);
1613 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 0); /* for voice quality */
1621 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
1622 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x4);
1624 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
1625 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, true, 0x4);
1632 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
1633 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x4);
1635 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
1636 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, true, 0x4);
1642 static void halbtc8723b2ant_ActionHid(struct btc_coexist *pBtCoexist)
1647 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
1650 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1652 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1654 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1657 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1659 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1661 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1664 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
1666 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 9);
1672 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9);
1674 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13);
1682 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
1683 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1685 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
1686 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1693 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
1694 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1696 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
1697 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1703 static void halbtc8723b2ant_ActionA2dp(struct btc_coexist *pBtCoexist)
1709 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
1710 wifiRssiState1 = halbtc8723b2ant_WifiRssiState(pBtCoexist, 1, 2, 40, 0);
1713 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_AP_NUM, &apNum);
1717 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1718 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1719 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1720 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1721 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
1722 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
1725 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1727 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1728 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x18);
1730 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1731 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x18);
1736 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1737 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1739 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1742 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1744 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1746 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
1752 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, false, 1);
1754 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 1);
1757 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1763 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1764 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1766 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1767 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1774 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1775 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1777 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1778 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1783 static void halbtc8723b2ant_ActionA2dpPanHs(struct btc_coexist *pBtCoexist)
1788 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
1791 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1793 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1795 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1798 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1800 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1802 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
1804 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 2);
1807 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1813 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1814 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1816 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1817 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1824 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1825 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1827 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1828 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1833 static void halbtc8723b2ant_ActionPanEdr(struct btc_coexist *pBtCoexist)
1838 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
1841 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1843 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1845 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1848 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1850 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1852 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 10);
1858 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1);
1860 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5);
1863 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1869 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1870 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1872 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1873 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1880 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1881 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1883 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1884 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1891 static void halbtc8723b2ant_ActionPanHs(struct btc_coexist *pBtCoexist)
1896 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
1899 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1901 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1903 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1906 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1908 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1910 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
1912 halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
1914 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1920 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1921 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1923 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1924 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1931 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1932 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1934 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1935 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1941 static void halbtc8723b2ant_ActionPanEdrA2dp(struct btc_coexist *pBtCoexist)
1946 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
1949 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
1951 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
1953 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
1956 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
1958 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
1960 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
1966 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 12);
1968 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 3);
1970 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, false, 3);
1972 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
1973 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 3);
1982 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1983 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1985 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
1986 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
1993 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1994 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
1996 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
1997 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
2002 static void halbtc8723b2ant_ActionPanEdrHid(struct btc_coexist *pBtCoexist)
2007 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
2009 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
2011 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
2014 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
2016 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
2023 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 3);
2024 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 11);
2025 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780);
2027 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
2028 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
2029 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2031 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, false, 2);
2033 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
2034 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 11);
2035 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2036 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 2);
2045 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
2046 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
2048 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
2049 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
2056 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
2057 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
2059 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
2060 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
2066 static void halbtc8723b2ant_ActionHidA2dpPanEdr(struct btc_coexist *pBtCoexist)
2071 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
2074 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2076 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
2078 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
2081 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
2083 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
2085 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
2087 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
2094 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 2);
2096 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, false, 3);
2098 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 3);
2106 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
2107 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
2109 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
2110 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
2117 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
2118 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
2120 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
2121 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
2126 static void halbtc8723b2ant_ActionHidA2dp(struct btc_coexist *pBtCoexist)
2132 wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
2136 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2138 halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, true, 0x5);
2140 halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
2142 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
2145 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
2147 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
2149 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
2153 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_AP_NUM, &apNum);
2156 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
2158 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
2160 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
2162 halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
2165 halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
2171 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, false, 2);
2173 halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 2);
2181 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
2182 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
2184 halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
2185 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
2192 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
2193 halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
2195 halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
2196 halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
2201 static void halbtc8723b2ant_RunCoexistMechanism(struct btc_coexist *pBtCoexist)
2205 if (pBtCoexist->bManualControl) {
2213 algorithm = halbtc8723b2ant_ActionAlgorithm(pBtCoexist);
2215 halbtc8723b2ant_ActionBtInquiry(pBtCoexist);
2220 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, pCoexDm->backup0x948);
2226 if (halbtc8723b2ant_IsCommonAction(pBtCoexist)) {
2236 halbtc8723b2ant_ActionSco(pBtCoexist);
2239 halbtc8723b2ant_ActionHid(pBtCoexist);
2242 halbtc8723b2ant_ActionA2dp(pBtCoexist);
2245 halbtc8723b2ant_ActionA2dpPanHs(pBtCoexist);
2248 halbtc8723b2ant_ActionPanEdr(pBtCoexist);
2251 halbtc8723b2ant_ActionPanHs(pBtCoexist);
2254 halbtc8723b2ant_ActionPanEdrA2dp(pBtCoexist);
2257 halbtc8723b2ant_ActionPanEdrHid(pBtCoexist);
2260 halbtc8723b2ant_ActionHidA2dpPanEdr(pBtCoexist);
2263 halbtc8723b2ant_ActionHidA2dp(pBtCoexist);
2266 halbtc8723b2ant_CoexAllOff(pBtCoexist);
2273 static void halbtc8723b2ant_WifiOffHwCfg(struct btc_coexist *pBtCoexist)
2280 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
2282 pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780); /* WiFi goto standby while GNT_BT 0-->1 */
2283 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
2287 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x6E, 1, H2C_Parameter);
2289 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
2291 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_IS_IN_MP_MODE, &bIsInMpMode);
2293 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); /* BT select s0/s1 is controlled by BT */
2295 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT select s0/s1 is controlled by WiFi */
2298 static void halbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bBackUp)
2304 pBtCoexist->fBtcGetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff);
2307 u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x790);
2310 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x790, u1Tmp);
2313 halbtc8723b2ant_SetAntPath(pBtCoexist, BTC_ANT_WIFI_AT_MAIN, true, false);
2316 halbtc8723b2ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0);
2319 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc); /* 0x76e[3] = 1, WLAN_Act control by PTA */
2320 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x778, 0x3);
2321 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x40, 0x20, 0x1);
2330 void EXhalbtc8723b2ant_PowerOnSetting(struct btc_coexist *pBtCoexist)
2332 struct btc_board_info *pBoardInfo = &pBtCoexist->boardInfo;
2336 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x67, 0x20);
2339 u2Tmp = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0x2);
2340 pBtCoexist->fBtcWrite2Byte(pBtCoexist, 0x2, u2Tmp | BIT0 | BIT1);
2343 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
2345 pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
2354 if (pBtCoexist->chipInterface == BTC_INTF_USB) {
2356 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
2359 pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0xfe08, u1Tmp);
2366 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280);
2370 pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
2375 if (pBtCoexist->chipInterface == BTC_INTF_PCI)
2376 pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0x384, u1Tmp);
2377 else if (pBtCoexist->chipInterface == BTC_INTF_SDIO)
2378 pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0x60, u1Tmp);
2382 void EXhalbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bWifiOnly)
2384 halbtc8723b2ant_InitHwConfig(pBtCoexist, true);
2387 void EXhalbtc8723b2ant_InitCoexDm(struct btc_coexist *pBtCoexist)
2389 halbtc8723b2ant_InitCoexDm(pBtCoexist);
2392 void EXhalbtc8723b2ant_IpsNotify(struct btc_coexist *pBtCoexist, u8 type)
2396 halbtc8723b2ant_WifiOffHwCfg(pBtCoexist);
2397 halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true);
2398 halbtc8723b2ant_CoexAllOff(pBtCoexist);
2401 halbtc8723b2ant_InitHwConfig(pBtCoexist, false);
2402 halbtc8723b2ant_InitCoexDm(pBtCoexist);
2403 halbtc8723b2ant_QueryBtInfo(pBtCoexist);
2407 void EXhalbtc8723b2ant_LpsNotify(struct btc_coexist *pBtCoexist, u8 type)
2416 void EXhalbtc8723b2ant_ScanNotify(struct btc_coexist *pBtCoexist, u8 type)
2423 void EXhalbtc8723b2ant_ConnectNotify(struct btc_coexist *pBtCoexist, u8 type)
2430 void EXhalbtc8723b2ant_MediaStatusNotify(struct btc_coexist *pBtCoexist, u8 type)
2438 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifiCentralChnl);
2442 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
2446 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_AP_NUM, &apNum);
2458 pBtCoexist->fBtcFillH2c(pBtCoexist, 0x66, 3, H2C_Parameter);
2461 void EXhalbtc8723b2ant_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 type)
2466 struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length
2489 if (pBtCoexist->bManualControl) {
2501 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TX_RX_MASK, &pCoexSta->bBtTxRxMask);
2504 pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x01);
2510 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
2513 EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_CONNECT);
2515 EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
2519 halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, false);
2558 halbtc8723b2ant_UpdateBtLinkInfo(pBtCoexist);
2587 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy);
2590 pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_LIMITED_DIG, &bLimitedDig);
2592 halbtc8723b2ant_RunCoexistMechanism(pBtCoexist);
2595 void EXhalbtc8723b2ant_HaltNotify(struct btc_coexist *pBtCoexist)
2597 halbtc8723b2ant_WifiOffHwCfg(pBtCoexist);
2598 pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15); /* BT goto standby while GNT_BT 1-->0 */
2599 halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true);
2601 EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
2604 void EXhalbtc8723b2ant_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState)
2608 halbtc8723b2ant_InitHwConfig(pBtCoexist, false);
2609 halbtc8723b2ant_InitCoexDm(pBtCoexist);
2610 halbtc8723b2ant_QueryBtInfo(pBtCoexist);
2614 void EXhalbtc8723b2ant_Periodical(struct btc_coexist *pBtCoexist)
2621 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_BT_PATCH_VER, &btPatchVer);
2622 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
2626 halbtc8723b2ant_IsWifiStatusChanged(pBtCoexist) ||
2629 halbtc8723b2ant_RunCoexistMechanism(pBtCoexist);