--- /dev/null
+//===========================================\r
+// The following is for 8723B 1ANT BT Co-exist definition\r
+//===========================================\r
+#define BT_AUTO_REPORT_ONLY_8723B_1ANT 1\r
+\r
+#define BT_INFO_8723B_1ANT_B_FTP BIT7\r
+#define BT_INFO_8723B_1ANT_B_A2DP BIT6\r
+#define BT_INFO_8723B_1ANT_B_HID BIT5\r
+#define BT_INFO_8723B_1ANT_B_SCO_BUSY BIT4\r
+#define BT_INFO_8723B_1ANT_B_ACL_BUSY BIT3\r
+#define BT_INFO_8723B_1ANT_B_INQ_PAGE BIT2\r
+#define BT_INFO_8723B_1ANT_B_SCO_ESCO BIT1\r
+#define BT_INFO_8723B_1ANT_B_CONNECTION BIT0\r
+\r
+#define BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \\r
+ (((_BT_INFO_EXT_&BIT0))? TRUE:FALSE)\r
+\r
+#define BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT 2\r
+\r
+#define BT_8723B_1ANT_WIFI_NOISY_THRESH 50 //30 //max: 255 \r
+\r
+//for Antenna detection\r
+#define BT_8723B_1ANT_ANTDET_PSDTHRES_BACKGROUND 50\r
+#define BT_8723B_1ANT_ANTDET_PSDTHRES_2ANT_BADISOLATION 70\r
+#define BT_8723B_1ANT_ANTDET_PSDTHRES_2ANT_GOODISOLATION 55\r
+#define BT_8723B_1ANT_ANTDET_PSDTHRES_1ANT 35\r
+#define BT_8723B_1ANT_ANTDET_RETRY_INTERVAL 10 //retry timer if ant det is fail, unit: second\r
+#define BT_8723B_1ANT_ANTDET_ENABLE 0\r
+#define BT_8723B_1ANT_ANTDET_COEXMECHANISMSWITCH_ENABLE 0\r
+\r
+typedef enum _BT_INFO_SRC_8723B_1ANT{\r
+ BT_INFO_SRC_8723B_1ANT_WIFI_FW = 0x0,\r
+ BT_INFO_SRC_8723B_1ANT_BT_RSP = 0x1,\r
+ BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND = 0x2,\r
+ BT_INFO_SRC_8723B_1ANT_MAX\r
+}BT_INFO_SRC_8723B_1ANT,*PBT_INFO_SRC_8723B_1ANT;\r
+\r
+typedef enum _BT_8723B_1ANT_BT_STATUS{\r
+ BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0,\r
+ BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1,\r
+ BT_8723B_1ANT_BT_STATUS_INQ_PAGE = 0x2,\r
+ BT_8723B_1ANT_BT_STATUS_ACL_BUSY = 0x3,\r
+ BT_8723B_1ANT_BT_STATUS_SCO_BUSY = 0x4,\r
+ BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY = 0x5,\r
+ BT_8723B_1ANT_BT_STATUS_MAX\r
+}BT_8723B_1ANT_BT_STATUS,*PBT_8723B_1ANT_BT_STATUS;\r
+\r
+typedef enum _BT_8723B_1ANT_WIFI_STATUS{\r
+ BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE = 0x0,\r
+ BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN = 0x1,\r
+ BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN = 0x2,\r
+ BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT = 0x3,\r
+ BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE = 0x4,\r
+ BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY = 0x5,\r
+ BT_8723B_1ANT_WIFI_STATUS_MAX\r
+}BT_8723B_1ANT_WIFI_STATUS,*PBT_8723B_1ANT_WIFI_STATUS;\r
+\r
+typedef enum _BT_8723B_1ANT_COEX_ALGO{\r
+ BT_8723B_1ANT_COEX_ALGO_UNDEFINED = 0x0,\r
+ BT_8723B_1ANT_COEX_ALGO_SCO = 0x1,\r
+ BT_8723B_1ANT_COEX_ALGO_HID = 0x2,\r
+ BT_8723B_1ANT_COEX_ALGO_A2DP = 0x3,\r
+ BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS = 0x4,\r
+ BT_8723B_1ANT_COEX_ALGO_PANEDR = 0x5,\r
+ BT_8723B_1ANT_COEX_ALGO_PANHS = 0x6,\r
+ BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP = 0x7,\r
+ BT_8723B_1ANT_COEX_ALGO_PANEDR_HID = 0x8,\r
+ BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9,\r
+ BT_8723B_1ANT_COEX_ALGO_HID_A2DP = 0xa,\r
+ BT_8723B_1ANT_COEX_ALGO_MAX = 0xb,\r
+}BT_8723B_1ANT_COEX_ALGO,*PBT_8723B_1ANT_COEX_ALGO;\r
+\r
+typedef struct _COEX_DM_8723B_1ANT{\r
+ // hw setting\r
+ u1Byte preAntPosType;\r
+ u1Byte curAntPosType;\r
+ // fw mechanism\r
+ BOOLEAN bCurIgnoreWlanAct;\r
+ BOOLEAN bPreIgnoreWlanAct;\r
+ u1Byte prePsTdma;\r
+ u1Byte curPsTdma;\r
+ u1Byte psTdmaPara[5];\r
+ u1Byte psTdmaDuAdjType;\r
+ BOOLEAN bAutoTdmaAdjust;\r
+ BOOLEAN bPrePsTdmaOn;\r
+ BOOLEAN bCurPsTdmaOn;\r
+ BOOLEAN bPreBtAutoReport;\r
+ BOOLEAN bCurBtAutoReport;\r
+ u1Byte preLps;\r
+ u1Byte curLps;\r
+ u1Byte preRpwm;\r
+ u1Byte curRpwm;\r
+\r
+ // sw mechanism\r
+ BOOLEAN bPreLowPenaltyRa;\r
+ BOOLEAN bCurLowPenaltyRa;\r
+ u4Byte preVal0x6c0;\r
+ u4Byte curVal0x6c0;\r
+ u4Byte preVal0x6c4;\r
+ u4Byte curVal0x6c4;\r
+ u4Byte preVal0x6c8;\r
+ u4Byte curVal0x6c8;\r
+ u1Byte preVal0x6cc;\r
+ u1Byte curVal0x6cc;\r
+ BOOLEAN bLimitedDig;\r
+\r
+ u4Byte backupArfrCnt1; // Auto Rate Fallback Retry cnt\r
+ u4Byte backupArfrCnt2; // Auto Rate Fallback Retry cnt\r
+ u2Byte backupRetryLimit;\r
+ u1Byte backupAmpduMaxTime;\r
+\r
+ // algorithm related\r
+ u1Byte preAlgorithm;\r
+ u1Byte curAlgorithm;\r
+ u1Byte btStatus;\r
+ u1Byte wifiChnlInfo[3];\r
+\r
+ u4Byte preRaMask;\r
+ u4Byte curRaMask;\r
+ u1Byte preArfrType;\r
+ u1Byte curArfrType;\r
+ u1Byte preRetryLimitType;\r
+ u1Byte curRetryLimitType;\r
+ u1Byte preAmpduTimeType;\r
+ u1Byte curAmpduTimeType;\r
+ u4Byte nArpCnt;\r
+\r
+ u1Byte errorCondition;\r
+} COEX_DM_8723B_1ANT, *PCOEX_DM_8723B_1ANT;\r
+\r
+typedef struct _COEX_STA_8723B_1ANT{\r
+ BOOLEAN bBtLinkExist;\r
+ BOOLEAN bScoExist;\r
+ BOOLEAN bA2dpExist;\r
+ BOOLEAN bHidExist;\r
+ BOOLEAN bPanExist;\r
+ BOOLEAN bBtHiPriLinkExist;\r
+ u1Byte nNumOfProfile;\r
+\r
+ BOOLEAN bUnderLps;\r
+ BOOLEAN bUnderIps;\r
+ u4Byte specialPktPeriodCnt;\r
+ u4Byte highPriorityTx;\r
+ u4Byte highPriorityRx;\r
+ u4Byte lowPriorityTx;\r
+ u4Byte lowPriorityRx;\r
+ s1Byte btRssi;\r
+ BOOLEAN bBtTxRxMask;\r
+ u1Byte preBtRssiState;\r
+ u1Byte preWifiRssiState[4];\r
+ BOOLEAN bC2hBtInfoReqSent;\r
+ u1Byte btInfoC2h[BT_INFO_SRC_8723B_1ANT_MAX][10];\r
+ u4Byte btInfoC2hCnt[BT_INFO_SRC_8723B_1ANT_MAX];\r
+ BOOLEAN bBtWhckTest;\r
+ BOOLEAN bC2hBtInquiryPage;\r
+ BOOLEAN bC2hBtRemoteNameReq; \r
+ BOOLEAN bWiFiIsHighPriTask; //Add for win8.1 page out issue\r
+ u1Byte btRetryCnt;\r
+ u1Byte btInfoExt;\r
+ u4Byte popEventCnt;\r
+ u1Byte nScanAPNum;\r
+\r
+ u4Byte nCRCOK_CCK;\r
+ u4Byte nCRCOK_11g;\r
+ u4Byte nCRCOK_11n;\r
+ u4Byte nCRCOK_11nAgg;\r
+ \r
+ u4Byte nCRCErr_CCK;\r
+ u4Byte nCRCErr_11g;\r
+ u4Byte nCRCErr_11n;\r
+ u4Byte nCRCErr_11nAgg; \r
+\r
+ BOOLEAN bCCKLock;\r
+ BOOLEAN bPreCCKLock;\r
+ BOOLEAN bCCKEverLock;\r
+ u1Byte nCoexTableType;\r
+\r
+ BOOLEAN bForceLpsOn;\r
+ u4Byte wrongProfileNotification;\r
+\r
+ u1Byte nA2DPBitPool;\r
+ u1Byte nCutVersion;\r
+}COEX_STA_8723B_1ANT, *PCOEX_STA_8723B_1ANT;\r
+\r
+#define BT_8723B_1ANT_ANTDET_PSD_POINTS 256 //MAX:1024\r
+#define BT_8723B_1ANT_ANTDET_PSD_AVGNUM 1 //MAX:3\r
+#define BT_8723B_1ANT_ANTDET_BUF_LEN 16\r
+\r
+typedef struct _PSDSCAN_STA_8723B_1ANT{\r
+\r
+u4Byte nAntDet_BTLEChannel; //BT LE Channel ex:2412\r
+u4Byte nAntDet_BTTxTime;\r
+u4Byte nAntDet_PrePSDScanPeakVal;\r
+BOOLEAN nAntDet_IsAntDetAvailable;\r
+u4Byte nAntDet_PSDScanPeakVal;\r
+BOOLEAN nAntDet_IsBTReplyAvailable;\r
+u4Byte nAntDet_PSDScanPeakFreq;\r
+\r
+u1Byte nAntDet_Result;\r
+u1Byte nAntDet_PeakVal[BT_8723B_1ANT_ANTDET_BUF_LEN];\r
+u1Byte nAntDet_PeakFreq[BT_8723B_1ANT_ANTDET_BUF_LEN];\r
+u4Byte bAntDet_TryCount;\r
+u4Byte bAntDet_FailCount;\r
+u4Byte nAntDet_IntevalCount;\r
+u4Byte nAntDet_ThresOffset;\r
+\r
+u4Byte nRealCentFreq;\r
+s4Byte nRealOffset;\r
+u4Byte nRealSpan;\r
+ \r
+u4Byte nPSDBandWidth; //unit: Hz\r
+u4Byte nPSDPoint; //128/256/512/1024\r
+u4Byte nPSDReport[1024]; //unit:dB (20logx), 0~255\r
+u4Byte nPSDReport_MaxHold[1024]; //unit:dB (20logx), 0~255\r
+u4Byte nPSDStartPoint;\r
+u4Byte nPSDStopPoint;\r
+u4Byte nPSDMaxValuePoint;\r
+u4Byte nPSDMaxValue;\r
+u4Byte nPSDStartBase;\r
+u4Byte nPSDAvgNum; // 1/8/16/32\r
+u4Byte nPSDGenCount;\r
+BOOLEAN bIsPSDRunning;\r
+BOOLEAN bIsPSDShowMaxOnly;\r
+} PSDSCAN_STA_8723B_1ANT, *PPSDSCAN_STA_8723B_1ANT;\r
+\r
+//===========================================\r
+// The following is interface which will notify coex module.\r
+//===========================================\r
+VOID\r
+EXhalbtc8723b1ant_PowerOnSetting(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_PreLoadFirmware(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_InitHwConfig(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN BOOLEAN bWifiOnly\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_InitCoexDm(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_IpsNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte type\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_LpsNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte type\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_ScanNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte type\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_ConnectNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte type\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_MediaStatusNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte type\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_SpecialPacketNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte type\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_BtInfoNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN pu1Byte tmpBuf,\r
+ IN u1Byte length\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_RfStatusNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte type\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_HaltNotify(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_PnpNotify(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u1Byte pnpState\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_CoexDmReset(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_Periodical(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_DisplayCoexInfo(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_AntennaDetection(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u4Byte centFreq,\r
+ IN u4Byte offset,\r
+ IN u4Byte span,\r
+ IN u4Byte seconds\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_AntennaIsolation(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u4Byte centFreq,\r
+ IN u4Byte offset,\r
+ IN u4Byte span,\r
+ IN u4Byte seconds\r
+ );\r
+\r
+VOID\r
+EXhalbtc8723b1ant_PSDScan(\r
+ IN PBTC_COEXIST pBtCoexist,\r
+ IN u4Byte centFreq,\r
+ IN u4Byte offset,\r
+ IN u4Byte span,\r
+ IN u4Byte seconds\r
+ );\r
+VOID\r
+EXhalbtc8723b1ant_DisplayAntDetection(\r
+ IN PBTC_COEXIST pBtCoexist\r
+ );\r
+\r