1 /* SPDX-License-Identifier: GPL-2.0 */
2 /******************************************************************************
4 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
6 ******************************************************************************/
7 /* The following is for 8723B 1ANT BT Co-exist definition */
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
17 #define BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \
18 (((_BT_INFO_EXT_&BIT0)) ? true : false)
20 #define BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT 2
22 #define BT_8723B_1ANT_WIFI_NOISY_THRESH 30 /* max: 255 */
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;
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;
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;
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;
66 typedef struct _COEX_DM_8723B_1ANT {
68 bool bCurIgnoreWlanAct;
69 bool bPreIgnoreWlanAct;
77 bool bPreBtAutoReport;
78 bool bCurBtAutoReport;
85 bool bPreLowPenaltyRa;
86 bool bCurLowPenaltyRa;
97 u32 backupArfrCnt1; /* Auto Rate Fallback Retry cnt */
98 u32 backupArfrCnt2; /* Auto Rate Fallback Retry cnt */
100 u8 backupAmpduMaxTime;
102 /* algorithm related */
112 u8 preRetryLimitType;
113 u8 curRetryLimitType;
119 } COEX_DM_8723B_1ANT, *PCOEX_DM_8723B_1ANT;
121 typedef struct _COEX_STA_8723B_1ANT {
130 u32 specialPktPeriodCnt;
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; /* Add for win8.1 page out issue */
144 bool bWiFiIsHighPriTask; /* Add for win8.1 page out issue */
165 } COEX_STA_8723B_1ANT, *PCOEX_STA_8723B_1ANT;
168 /* The following is interface which will notify coex module. */
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
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);