1
2
3
4
5
6
7
8 #define BT_INFO_8723B_1ANT_B_FTP BIT7
9 #define BT_INFO_8723B_1ANT_B_A2DP BIT6
10 #define BT_INFO_8723B_1ANT_B_HID BIT5
11 #define BT_INFO_8723B_1ANT_B_SCO_BUSY BIT4
12 #define BT_INFO_8723B_1ANT_B_ACL_BUSY BIT3
13 #define BT_INFO_8723B_1ANT_B_INQ_PAGE BIT2
14 #define BT_INFO_8723B_1ANT_B_SCO_ESCO BIT1
15 #define BT_INFO_8723B_1ANT_B_CONNECTION BIT0
16
17 #define BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \
18 (((_BT_INFO_EXT_&BIT0)) ? true : false)
19
20 #define BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT 2
21
22 #define BT_8723B_1ANT_WIFI_NOISY_THRESH 30
23
24 typedef enum _BT_INFO_SRC_8723B_1ANT {
25 BT_INFO_SRC_8723B_1ANT_WIFI_FW = 0x0,
26 BT_INFO_SRC_8723B_1ANT_BT_RSP = 0x1,
27 BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND = 0x2,
28 BT_INFO_SRC_8723B_1ANT_MAX
29 } BT_INFO_SRC_8723B_1ANT, *PBT_INFO_SRC_8723B_1ANT;
30
31 typedef enum _BT_8723B_1ANT_BT_STATUS {
32 BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0,
33 BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1,
34 BT_8723B_1ANT_BT_STATUS_INQ_PAGE = 0x2,
35 BT_8723B_1ANT_BT_STATUS_ACL_BUSY = 0x3,
36 BT_8723B_1ANT_BT_STATUS_SCO_BUSY = 0x4,
37 BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY = 0x5,
38 BT_8723B_1ANT_BT_STATUS_MAX
39 } BT_8723B_1ANT_BT_STATUS, *PBT_8723B_1ANT_BT_STATUS;
40
41 typedef enum _BT_8723B_1ANT_WIFI_STATUS {
42 BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE = 0x0,
43 BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN = 0x1,
44 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN = 0x2,
45 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT = 0x3,
46 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE = 0x4,
47 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY = 0x5,
48 BT_8723B_1ANT_WIFI_STATUS_MAX
49 } BT_8723B_1ANT_WIFI_STATUS, *PBT_8723B_1ANT_WIFI_STATUS;
50
51 typedef enum _BT_8723B_1ANT_COEX_ALGO {
52 BT_8723B_1ANT_COEX_ALGO_UNDEFINED = 0x0,
53 BT_8723B_1ANT_COEX_ALGO_SCO = 0x1,
54 BT_8723B_1ANT_COEX_ALGO_HID = 0x2,
55 BT_8723B_1ANT_COEX_ALGO_A2DP = 0x3,
56 BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS = 0x4,
57 BT_8723B_1ANT_COEX_ALGO_PANEDR = 0x5,
58 BT_8723B_1ANT_COEX_ALGO_PANHS = 0x6,
59 BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP = 0x7,
60 BT_8723B_1ANT_COEX_ALGO_PANEDR_HID = 0x8,
61 BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9,
62 BT_8723B_1ANT_COEX_ALGO_HID_A2DP = 0xa,
63 BT_8723B_1ANT_COEX_ALGO_MAX = 0xb,
64 } BT_8723B_1ANT_COEX_ALGO, *PBT_8723B_1ANT_COEX_ALGO;
65
66 typedef struct _COEX_DM_8723B_1ANT {
67
68 bool bCurIgnoreWlanAct;
69 bool bPreIgnoreWlanAct;
70 u8 prePsTdma;
71 u8 curPsTdma;
72 u8 psTdmaPara[5];
73 u8 psTdmaDuAdjType;
74 bool bAutoTdmaAdjust;
75 bool bPrePsTdmaOn;
76 bool bCurPsTdmaOn;
77 bool bPreBtAutoReport;
78 bool bCurBtAutoReport;
79 u8 preLps;
80 u8 curLps;
81 u8 preRpwm;
82 u8 curRpwm;
83
84
85 bool bPreLowPenaltyRa;
86 bool bCurLowPenaltyRa;
87 u32 preVal0x6c0;
88 u32 curVal0x6c0;
89 u32 preVal0x6c4;
90 u32 curVal0x6c4;
91 u32 preVal0x6c8;
92 u32 curVal0x6c8;
93 u8 preVal0x6cc;
94 u8 curVal0x6cc;
95 bool bLimitedDig;
96
97 u32 backupArfrCnt1;
98 u32 backupArfrCnt2;
99 u16 backupRetryLimit;
100 u8 backupAmpduMaxTime;
101
102
103 u8 preAlgorithm;
104 u8 curAlgorithm;
105 u8 btStatus;
106 u8 wifiChnlInfo[3];
107
108 u32 preRaMask;
109 u32 curRaMask;
110 u8 preArfrType;
111 u8 curArfrType;
112 u8 preRetryLimitType;
113 u8 curRetryLimitType;
114 u8 preAmpduTimeType;
115 u8 curAmpduTimeType;
116 u32 nArpCnt;
117
118 u8 errorCondition;
119 } COEX_DM_8723B_1ANT, *PCOEX_DM_8723B_1ANT;
120
121 typedef struct _COEX_STA_8723B_1ANT {
122 bool bBtLinkExist;
123 bool bScoExist;
124 bool bA2dpExist;
125 bool bHidExist;
126 bool bPanExist;
127
128 bool bUnderLps;
129 bool bUnderIps;
130 u32 specialPktPeriodCnt;
131 u32 highPriorityTx;
132 u32 highPriorityRx;
133 u32 lowPriorityTx;
134 u32 lowPriorityRx;
135 s8 btRssi;
136 bool bBtTxRxMask;
137 u8 preBtRssiState;
138 u8 preWifiRssiState[4];
139 bool bC2hBtInfoReqSent;
140 u8 btInfoC2h[BT_INFO_SRC_8723B_1ANT_MAX][10];
141 u32 btInfoC2hCnt[BT_INFO_SRC_8723B_1ANT_MAX];
142 bool bC2hBtInquiryPage;
143 bool bC2hBtPage;
144 bool bWiFiIsHighPriTask;
145 u8 btRetryCnt;
146 u8 btInfoExt;
147 u32 popEventCnt;
148 u8 nScanAPNum;
149
150 u32 nCRCOK_CCK;
151 u32 nCRCOK_11g;
152 u32 nCRCOK_11n;
153 u32 nCRCOK_11nAgg;
154
155 u32 nCRCErr_CCK;
156 u32 nCRCErr_11g;
157 u32 nCRCErr_11n;
158 u32 nCRCErr_11nAgg;
159
160 bool bCCKLock;
161 bool bPreCCKLock;
162 u8 nCoexTableType;
163
164 bool bForceLpsOn;
165 } COEX_STA_8723B_1ANT, *PCOEX_STA_8723B_1ANT;
166
167
168
169
170 void EXhalbtc8723b1ant_PowerOnSetting(PBTC_COEXIST pBtCoexist);
171 void EXhalbtc8723b1ant_InitHwConfig(PBTC_COEXIST pBtCoexist, bool bWifiOnly);
172 void EXhalbtc8723b1ant_InitCoexDm(PBTC_COEXIST pBtCoexist);
173 void EXhalbtc8723b1ant_IpsNotify(PBTC_COEXIST pBtCoexist, u8 type);
174 void EXhalbtc8723b1ant_LpsNotify(PBTC_COEXIST pBtCoexist, u8 type);
175 void EXhalbtc8723b1ant_ScanNotify(PBTC_COEXIST pBtCoexist, u8 type);
176 void EXhalbtc8723b1ant_ConnectNotify(PBTC_COEXIST pBtCoexist, u8 type);
177 void EXhalbtc8723b1ant_MediaStatusNotify(PBTC_COEXIST pBtCoexist, u8 type);
178 void EXhalbtc8723b1ant_SpecialPacketNotify(PBTC_COEXIST pBtCoexist, u8 type);
179 void EXhalbtc8723b1ant_BtInfoNotify(
180 PBTC_COEXIST pBtCoexist, u8 *tmpBuf, u8 length
181 );
182 void EXhalbtc8723b1ant_HaltNotify(PBTC_COEXIST pBtCoexist);
183 void EXhalbtc8723b1ant_PnpNotify(PBTC_COEXIST pBtCoexist, u8 pnpState);
184 void EXhalbtc8723b1ant_Periodical(PBTC_COEXIST pBtCoexist);
185 void EXhalbtc8723b1ant_DisplayCoexInfo(PBTC_COEXIST pBtCoexist);