1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /****************************************************************************** 3 * 4 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. 5 * 6 ******************************************************************************/ 7 /* The following is for 8723B 2Ant BT Co-exist definition */ 8 #define BT_INFO_8723B_2ANT_B_FTP BIT7 9 #define BT_INFO_8723B_2ANT_B_A2DP BIT6 10 #define BT_INFO_8723B_2ANT_B_HID BIT5 11 #define BT_INFO_8723B_2ANT_B_SCO_BUSY BIT4 12 #define BT_INFO_8723B_2ANT_B_ACL_BUSY BIT3 13 #define BT_INFO_8723B_2ANT_B_INQ_PAGE BIT2 14 #define BT_INFO_8723B_2ANT_B_SCO_ESCO BIT1 15 #define BT_INFO_8723B_2ANT_B_CONNECTION BIT0 16 17 #define BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT 2 18 19 typedef enum _BT_INFO_SRC_8723B_2ANT { 20 BT_INFO_SRC_8723B_2ANT_WIFI_FW = 0x0, 21 BT_INFO_SRC_8723B_2ANT_BT_RSP = 0x1, 22 BT_INFO_SRC_8723B_2ANT_BT_ACTIVE_SEND = 0x2, 23 BT_INFO_SRC_8723B_2ANT_MAX 24 } BT_INFO_SRC_8723B_2ANT, *PBT_INFO_SRC_8723B_2ANT; 25 26 typedef enum _BT_8723B_2ANT_BT_STATUS { 27 BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0, 28 BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1, 29 BT_8723B_2ANT_BT_STATUS_INQ_PAGE = 0x2, 30 BT_8723B_2ANT_BT_STATUS_ACL_BUSY = 0x3, 31 BT_8723B_2ANT_BT_STATUS_SCO_BUSY = 0x4, 32 BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY = 0x5, 33 BT_8723B_2ANT_BT_STATUS_MAX 34 } BT_8723B_2ANT_BT_STATUS, *PBT_8723B_2ANT_BT_STATUS; 35 36 typedef enum _BT_8723B_2ANT_COEX_ALGO { 37 BT_8723B_2ANT_COEX_ALGO_UNDEFINED = 0x0, 38 BT_8723B_2ANT_COEX_ALGO_SCO = 0x1, 39 BT_8723B_2ANT_COEX_ALGO_HID = 0x2, 40 BT_8723B_2ANT_COEX_ALGO_A2DP = 0x3, 41 BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS = 0x4, 42 BT_8723B_2ANT_COEX_ALGO_PANEDR = 0x5, 43 BT_8723B_2ANT_COEX_ALGO_PANHS = 0x6, 44 BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP = 0x7, 45 BT_8723B_2ANT_COEX_ALGO_PANEDR_HID = 0x8, 46 BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9, 47 BT_8723B_2ANT_COEX_ALGO_HID_A2DP = 0xa, 48 BT_8723B_2ANT_COEX_ALGO_MAX = 0xb, 49 } BT_8723B_2ANT_COEX_ALGO, *PBT_8723B_2ANT_COEX_ALGO; 50 51 typedef struct _COEX_DM_8723B_2ANT { 52 /* fw mechanism */ 53 u8 preBtDecPwrLvl; 54 u8 curBtDecPwrLvl; 55 u8 preFwDacSwingLvl; 56 u8 curFwDacSwingLvl; 57 bool bCurIgnoreWlanAct; 58 bool bPreIgnoreWlanAct; 59 u8 prePsTdma; 60 u8 curPsTdma; 61 u8 psTdmaPara[5]; 62 u8 psTdmaDuAdjType; 63 bool bResetTdmaAdjust; 64 bool bAutoTdmaAdjust; 65 bool bPrePsTdmaOn; 66 bool bCurPsTdmaOn; 67 bool bPreBtAutoReport; 68 bool bCurBtAutoReport; 69 70 /* sw mechanism */ 71 bool bPreRfRxLpfShrink; 72 bool bCurRfRxLpfShrink; 73 u32 btRf0x1eBackup; 74 bool bPreLowPenaltyRa; 75 bool bCurLowPenaltyRa; 76 bool bPreDacSwingOn; 77 u32 preDacSwingLvl; 78 bool bCurDacSwingOn; 79 u32 curDacSwingLvl; 80 bool bPreAdcBackOff; 81 bool bCurAdcBackOff; 82 bool bPreAgcTableEn; 83 bool bCurAgcTableEn; 84 u32 preVal0x6c0; 85 u32 curVal0x6c0; 86 u32 preVal0x6c4; 87 u32 curVal0x6c4; 88 u32 preVal0x6c8; 89 u32 curVal0x6c8; 90 u8 preVal0x6cc; 91 u8 curVal0x6cc; 92 bool bLimitedDig; 93 94 /* algorithm related */ 95 u8 preAlgorithm; 96 u8 curAlgorithm; 97 u8 btStatus; 98 u8 wifiChnlInfo[3]; 99 100 bool bNeedRecover0x948; 101 u32 backup0x948; 102 } COEX_DM_8723B_2ANT, *PCOEX_DM_8723B_2ANT; 103 104 typedef struct _COEX_STA_8723B_2ANT { 105 bool bBtLinkExist; 106 bool bScoExist; 107 bool bA2dpExist; 108 bool bHidExist; 109 bool bPanExist; 110 111 bool bUnderLps; 112 bool bUnderIps; 113 u32 highPriorityTx; 114 u32 highPriorityRx; 115 u32 lowPriorityTx; 116 u32 lowPriorityRx; 117 u8 btRssi; 118 bool bBtTxRxMask; 119 u8 preBtRssiState; 120 u8 preWifiRssiState[4]; 121 bool bC2hBtInfoReqSent; 122 u8 btInfoC2h[BT_INFO_SRC_8723B_2ANT_MAX][10]; 123 u32 btInfoC2hCnt[BT_INFO_SRC_8723B_2ANT_MAX]; 124 bool bC2hBtInquiryPage; 125 u8 btRetryCnt; 126 u8 btInfoExt; 127 } COEX_STA_8723B_2ANT, *PCOEX_STA_8723B_2ANT; 128 129 /* */ 130 /* The following is interface which will notify coex module. */ 131 /* */ 132 void EXhalbtc8723b2ant_PowerOnSetting(PBTC_COEXIST pBtCoexist); 133 void EXhalbtc8723b2ant_InitHwConfig(PBTC_COEXIST pBtCoexist, bool bWifiOnly); 134 void EXhalbtc8723b2ant_InitCoexDm(PBTC_COEXIST pBtCoexist); 135 void EXhalbtc8723b2ant_IpsNotify(PBTC_COEXIST pBtCoexist, u8 type); 136 void EXhalbtc8723b2ant_LpsNotify(PBTC_COEXIST pBtCoexist, u8 type); 137 void EXhalbtc8723b2ant_ScanNotify(PBTC_COEXIST pBtCoexist, u8 type); 138 void EXhalbtc8723b2ant_ConnectNotify(PBTC_COEXIST pBtCoexist, u8 type); 139 void EXhalbtc8723b2ant_MediaStatusNotify(PBTC_COEXIST pBtCoexist, u8 type); 140 void EXhalbtc8723b2ant_SpecialPacketNotify(PBTC_COEXIST pBtCoexist, u8 type); 141 void EXhalbtc8723b2ant_BtInfoNotify( 142 PBTC_COEXIST pBtCoexist, u8 *tmpBuf, u8 length 143 ); 144 void EXhalbtc8723b2ant_HaltNotify(PBTC_COEXIST pBtCoexist); 145 void EXhalbtc8723b2ant_PnpNotify(PBTC_COEXIST pBtCoexist, u8 pnpState); 146 void EXhalbtc8723b2ant_Periodical(PBTC_COEXIST pBtCoexist); 147 void EXhalbtc8723b2ant_DisplayCoexInfo(PBTC_COEXIST pBtCoexist); 148