1 //===========================================
2 // The following is for 8723B 1ANT BT Co-exist definition
3 //===========================================
4 #define BT_AUTO_REPORT_ONLY_8723B_1ANT 1
6 #define BT_INFO_8723B_1ANT_B_FTP BIT7
7 #define BT_INFO_8723B_1ANT_B_A2DP BIT6
8 #define BT_INFO_8723B_1ANT_B_HID BIT5
9 #define BT_INFO_8723B_1ANT_B_SCO_BUSY BIT4
10 #define BT_INFO_8723B_1ANT_B_ACL_BUSY BIT3
11 #define BT_INFO_8723B_1ANT_B_INQ_PAGE BIT2
12 #define BT_INFO_8723B_1ANT_B_SCO_ESCO BIT1
13 #define BT_INFO_8723B_1ANT_B_CONNECTION BIT0
15 #define BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \
16 (((_BT_INFO_EXT_&BIT0))? TRUE:FALSE)
18 #define BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT 2
20 #define BT_8723B_1ANT_WIFI_NOISY_THRESH 50 //30 //max: 255
22 //for Antenna detection
23 #define BT_8723B_1ANT_ANTDET_PSDTHRES_BACKGROUND 50
24 #define BT_8723B_1ANT_ANTDET_PSDTHRES_2ANT_BADISOLATION 70
25 #define BT_8723B_1ANT_ANTDET_PSDTHRES_2ANT_GOODISOLATION 55
26 #define BT_8723B_1ANT_ANTDET_PSDTHRES_1ANT 35
27 #define BT_8723B_1ANT_ANTDET_RETRY_INTERVAL 10 //retry timer if ant det is fail, unit: second
28 #define BT_8723B_1ANT_ANTDET_ENABLE 0
29 #define BT_8723B_1ANT_ANTDET_COEXMECHANISMSWITCH_ENABLE 0
31 typedef enum _BT_INFO_SRC_8723B_1ANT{
32 BT_INFO_SRC_8723B_1ANT_WIFI_FW = 0x0,
33 BT_INFO_SRC_8723B_1ANT_BT_RSP = 0x1,
34 BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND = 0x2,
35 BT_INFO_SRC_8723B_1ANT_MAX
36 }BT_INFO_SRC_8723B_1ANT,*PBT_INFO_SRC_8723B_1ANT;
38 typedef enum _BT_8723B_1ANT_BT_STATUS{
39 BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0,
40 BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1,
41 BT_8723B_1ANT_BT_STATUS_INQ_PAGE = 0x2,
42 BT_8723B_1ANT_BT_STATUS_ACL_BUSY = 0x3,
43 BT_8723B_1ANT_BT_STATUS_SCO_BUSY = 0x4,
44 BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY = 0x5,
45 BT_8723B_1ANT_BT_STATUS_MAX
46 }BT_8723B_1ANT_BT_STATUS,*PBT_8723B_1ANT_BT_STATUS;
48 typedef enum _BT_8723B_1ANT_WIFI_STATUS{
49 BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE = 0x0,
50 BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN = 0x1,
51 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN = 0x2,
52 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT = 0x3,
53 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE = 0x4,
54 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY = 0x5,
55 BT_8723B_1ANT_WIFI_STATUS_MAX
56 }BT_8723B_1ANT_WIFI_STATUS,*PBT_8723B_1ANT_WIFI_STATUS;
58 typedef enum _BT_8723B_1ANT_COEX_ALGO{
59 BT_8723B_1ANT_COEX_ALGO_UNDEFINED = 0x0,
60 BT_8723B_1ANT_COEX_ALGO_SCO = 0x1,
61 BT_8723B_1ANT_COEX_ALGO_HID = 0x2,
62 BT_8723B_1ANT_COEX_ALGO_A2DP = 0x3,
63 BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS = 0x4,
64 BT_8723B_1ANT_COEX_ALGO_PANEDR = 0x5,
65 BT_8723B_1ANT_COEX_ALGO_PANHS = 0x6,
66 BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP = 0x7,
67 BT_8723B_1ANT_COEX_ALGO_PANEDR_HID = 0x8,
68 BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9,
69 BT_8723B_1ANT_COEX_ALGO_HID_A2DP = 0xa,
70 BT_8723B_1ANT_COEX_ALGO_MAX = 0xb,
71 }BT_8723B_1ANT_COEX_ALGO,*PBT_8723B_1ANT_COEX_ALGO;
73 typedef struct _COEX_DM_8723B_1ANT{
78 BOOLEAN bCurIgnoreWlanAct;
79 BOOLEAN bPreIgnoreWlanAct;
83 u1Byte psTdmaDuAdjType;
84 BOOLEAN bAutoTdmaAdjust;
87 BOOLEAN bPreBtAutoReport;
88 BOOLEAN bCurBtAutoReport;
95 BOOLEAN bPreLowPenaltyRa;
96 BOOLEAN bCurLowPenaltyRa;
107 u4Byte backupArfrCnt1; // Auto Rate Fallback Retry cnt
108 u4Byte backupArfrCnt2; // Auto Rate Fallback Retry cnt
109 u2Byte backupRetryLimit;
110 u1Byte backupAmpduMaxTime;
116 u1Byte wifiChnlInfo[3];
122 u1Byte preRetryLimitType;
123 u1Byte curRetryLimitType;
124 u1Byte preAmpduTimeType;
125 u1Byte curAmpduTimeType;
128 u1Byte errorCondition;
129 } COEX_DM_8723B_1ANT, *PCOEX_DM_8723B_1ANT;
131 typedef struct _COEX_STA_8723B_1ANT{
132 BOOLEAN bBtLinkExist;
137 BOOLEAN bBtHiPriLinkExist;
138 u1Byte nNumOfProfile;
142 u4Byte specialPktPeriodCnt;
143 u4Byte highPriorityTx;
144 u4Byte highPriorityRx;
145 u4Byte lowPriorityTx;
146 u4Byte lowPriorityRx;
149 u1Byte preBtRssiState;
150 u1Byte preWifiRssiState[4];
151 BOOLEAN bC2hBtInfoReqSent;
152 u1Byte btInfoC2h[BT_INFO_SRC_8723B_1ANT_MAX][10];
153 u4Byte btInfoC2hCnt[BT_INFO_SRC_8723B_1ANT_MAX];
155 BOOLEAN bC2hBtInquiryPage;
156 BOOLEAN bC2hBtRemoteNameReq;
157 BOOLEAN bWiFiIsHighPriTask; //Add for win8.1 page out issue
166 u4Byte nCRCOK_11nAgg;
171 u4Byte nCRCErr_11nAgg;
175 BOOLEAN bCCKEverLock;
176 u1Byte nCoexTableType;
179 u4Byte wrongProfileNotification;
183 }COEX_STA_8723B_1ANT, *PCOEX_STA_8723B_1ANT;
185 #define BT_8723B_1ANT_ANTDET_PSD_POINTS 256 //MAX:1024
186 #define BT_8723B_1ANT_ANTDET_PSD_AVGNUM 1 //MAX:3
187 #define BT_8723B_1ANT_ANTDET_BUF_LEN 16
189 typedef struct _PSDSCAN_STA_8723B_1ANT{
191 u4Byte nAntDet_BTLEChannel; //BT LE Channel ex:2412
192 u4Byte nAntDet_BTTxTime;
193 u4Byte nAntDet_PrePSDScanPeakVal;
194 BOOLEAN nAntDet_IsAntDetAvailable;
195 u4Byte nAntDet_PSDScanPeakVal;
196 BOOLEAN nAntDet_IsBTReplyAvailable;
197 u4Byte nAntDet_PSDScanPeakFreq;
199 u1Byte nAntDet_Result;
200 u1Byte nAntDet_PeakVal[BT_8723B_1ANT_ANTDET_BUF_LEN];
201 u1Byte nAntDet_PeakFreq[BT_8723B_1ANT_ANTDET_BUF_LEN];
202 u4Byte bAntDet_TryCount;
203 u4Byte bAntDet_FailCount;
204 u4Byte nAntDet_IntevalCount;
205 u4Byte nAntDet_ThresOffset;
207 u4Byte nRealCentFreq;
211 u4Byte nPSDBandWidth; //unit: Hz
212 u4Byte nPSDPoint; //128/256/512/1024
213 u4Byte nPSDReport[1024]; //unit:dB (20logx), 0~255
214 u4Byte nPSDReport_MaxHold[1024]; //unit:dB (20logx), 0~255
215 u4Byte nPSDStartPoint;
216 u4Byte nPSDStopPoint;
217 u4Byte nPSDMaxValuePoint;
219 u4Byte nPSDStartBase;
220 u4Byte nPSDAvgNum; // 1/8/16/32
222 BOOLEAN bIsPSDRunning;
223 BOOLEAN bIsPSDShowMaxOnly;
224 } PSDSCAN_STA_8723B_1ANT, *PPSDSCAN_STA_8723B_1ANT;
226 //===========================================
227 // The following is interface which will notify coex module.
228 //===========================================
230 EXhalbtc8723b1ant_PowerOnSetting(
231 IN PBTC_COEXIST pBtCoexist
234 EXhalbtc8723b1ant_PreLoadFirmware(
235 IN PBTC_COEXIST pBtCoexist
238 EXhalbtc8723b1ant_InitHwConfig(
239 IN PBTC_COEXIST pBtCoexist,
243 EXhalbtc8723b1ant_InitCoexDm(
244 IN PBTC_COEXIST pBtCoexist
247 EXhalbtc8723b1ant_IpsNotify(
248 IN PBTC_COEXIST pBtCoexist,
252 EXhalbtc8723b1ant_LpsNotify(
253 IN PBTC_COEXIST pBtCoexist,
257 EXhalbtc8723b1ant_ScanNotify(
258 IN PBTC_COEXIST pBtCoexist,
262 EXhalbtc8723b1ant_ConnectNotify(
263 IN PBTC_COEXIST pBtCoexist,
267 EXhalbtc8723b1ant_MediaStatusNotify(
268 IN PBTC_COEXIST pBtCoexist,
272 EXhalbtc8723b1ant_SpecialPacketNotify(
273 IN PBTC_COEXIST pBtCoexist,
277 EXhalbtc8723b1ant_BtInfoNotify(
278 IN PBTC_COEXIST pBtCoexist,
283 EXhalbtc8723b1ant_RfStatusNotify(
284 IN PBTC_COEXIST pBtCoexist,
288 EXhalbtc8723b1ant_HaltNotify(
289 IN PBTC_COEXIST pBtCoexist
292 EXhalbtc8723b1ant_PnpNotify(
293 IN PBTC_COEXIST pBtCoexist,
297 EXhalbtc8723b1ant_CoexDmReset(
298 IN PBTC_COEXIST pBtCoexist
301 EXhalbtc8723b1ant_Periodical(
302 IN PBTC_COEXIST pBtCoexist
305 EXhalbtc8723b1ant_DisplayCoexInfo(
306 IN PBTC_COEXIST pBtCoexist
309 EXhalbtc8723b1ant_AntennaDetection(
310 IN PBTC_COEXIST pBtCoexist,
317 EXhalbtc8723b1ant_AntennaIsolation(
318 IN PBTC_COEXIST pBtCoexist,
326 EXhalbtc8723b1ant_PSDScan(
327 IN PBTC_COEXIST pBtCoexist,
334 EXhalbtc8723b1ant_DisplayAntDetection(
335 IN PBTC_COEXIST pBtCoexist