aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8821ae/btcoexist/halbtc8192e1ant.h
blob: a759b758faef2117ce0fc8e8e8caf714ce48526e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
//===========================================
// The following is for 8192E_1ANT BT Co-exist definition
//===========================================
#define	BT_AUTO_REPORT_ONLY_8192E_1ANT				0

#define	BT_INFO_8192E_1ANT_B_FTP						BIT7
#define	BT_INFO_8192E_1ANT_B_A2DP					BIT6
#define	BT_INFO_8192E_1ANT_B_HID						BIT5
#define	BT_INFO_8192E_1ANT_B_SCO_BUSY				BIT4
#define	BT_INFO_8192E_1ANT_B_ACL_BUSY				BIT3
#define	BT_INFO_8192E_1ANT_B_INQ_PAGE				BIT2
#define	BT_INFO_8192E_1ANT_B_SCO_ESCO				BIT1
#define	BT_INFO_8192E_1ANT_B_CONNECTION				BIT0

#define	BT_INFO_8192E_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_)	\
		(((_BT_INFO_EXT_&BIT0))? true:FALSE)

#define	BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT		2

typedef enum _BT_INFO_SRC_8192E_1ANT{
	BT_INFO_SRC_8192E_1ANT_WIFI_FW			= 0x0,
	BT_INFO_SRC_8192E_1ANT_BT_RSP				= 0x1,
	BT_INFO_SRC_8192E_1ANT_BT_ACTIVE_SEND		= 0x2,
	BT_INFO_SRC_8192E_1ANT_MAX
}BT_INFO_SRC_8192E_1ANT,*PBT_INFO_SRC_8192E_1ANT;

typedef enum _BT_8192E_1ANT_BT_STATUS{
	BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE	= 0x0,
	BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE		= 0x1,
	BT_8192E_1ANT_BT_STATUS_INQ_PAGE				= 0x2,
	BT_8192E_1ANT_BT_STATUS_ACL_BUSY				= 0x3,
	BT_8192E_1ANT_BT_STATUS_SCO_BUSY				= 0x4,
	BT_8192E_1ANT_BT_STATUS_ACL_SCO_BUSY			= 0x5,
	BT_8192E_1ANT_BT_STATUS_MAX
}BT_8192E_1ANT_BT_STATUS,*PBT_8192E_1ANT_BT_STATUS;

typedef enum _BT_8192E_1ANT_WIFI_STATUS{
	BT_8192E_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE				= 0x0,
	BT_8192E_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN		= 0x1,
	BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SCAN					= 0x2,
	BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT				= 0x3,
	BT_8192E_1ANT_WIFI_STATUS_CONNECTED_IDLE					= 0x4,
	BT_8192E_1ANT_WIFI_STATUS_CONNECTED_BUSY					= 0x5,
	BT_8192E_1ANT_WIFI_STATUS_MAX
}BT_8192E_1ANT_WIFI_STATUS,*PBT_8192E_1ANT_WIFI_STATUS;

typedef enum _BT_8192E_1ANT_COEX_ALGO{
	BT_8192E_1ANT_COEX_ALGO_UNDEFINED			= 0x0,
	BT_8192E_1ANT_COEX_ALGO_SCO				= 0x1,
	BT_8192E_1ANT_COEX_ALGO_HID				= 0x2,
	BT_8192E_1ANT_COEX_ALGO_A2DP				= 0x3,
	BT_8192E_1ANT_COEX_ALGO_A2DP_PANHS		= 0x4,
	BT_8192E_1ANT_COEX_ALGO_PANEDR			= 0x5,
	BT_8192E_1ANT_COEX_ALGO_PANHS			= 0x6,
	BT_8192E_1ANT_COEX_ALGO_PANEDR_A2DP		= 0x7,
	BT_8192E_1ANT_COEX_ALGO_PANEDR_HID		= 0x8,
	BT_8192E_1ANT_COEX_ALGO_HID_A2DP_PANEDR	= 0x9,
	BT_8192E_1ANT_COEX_ALGO_HID_A2DP			= 0xa,
	BT_8192E_1ANT_COEX_ALGO_MAX				= 0xb,
}BT_8192E_1ANT_COEX_ALGO,*PBT_8192E_1ANT_COEX_ALGO;

typedef struct _COEX_DM_8192E_1ANT{
	// fw mechanism
	u1Byte		preBtDecPwrLvl;
	u1Byte		curBtDecPwrLvl;
	BOOLEAN		bPreBtLnaConstrain;
	BOOLEAN		bCurBtLnaConstrain;
	u1Byte		bPreBtPsdMode;
	u1Byte		bCurBtPsdMode;
	u1Byte		preFwDacSwingLvl;
	u1Byte		curFwDacSwingLvl;
	BOOLEAN		bCurIgnoreWlanAct;
	BOOLEAN		bPreIgnoreWlanAct;
	u1Byte		prePsTdma;
	u1Byte		curPsTdma;
	u1Byte		psTdmaPara[5];
	u1Byte		psTdmaDuAdjType;
	BOOLEAN		bAutoTdmaAdjust;
	BOOLEAN		bPrePsTdmaOn;
	BOOLEAN		bCurPsTdmaOn;
	BOOLEAN		bPreBtAutoReport;
	BOOLEAN		bCurBtAutoReport;
	u1Byte		preLps;
	u1Byte		curLps;
	u1Byte		preRpwm;
	u1Byte		curRpwm;

	// sw mechanism
	BOOLEAN		bPreRfRxLpfShrink;
	BOOLEAN		bCurRfRxLpfShrink;
	u4Byte		btRf0x1eBackup;
	BOOLEAN 	bPreLowPenaltyRa;
	BOOLEAN		bCurLowPenaltyRa;
	BOOLEAN		bPreDacSwingOn;
	u4Byte		preDacSwingLvl;
	BOOLEAN		bCurDacSwingOn;
	u4Byte		curDacSwingLvl;
	BOOLEAN		bPreAdcBackOff;
	BOOLEAN		bCurAdcBackOff;
	BOOLEAN 	bPreAgcTableEn;
	BOOLEAN		bCurAgcTableEn;
	u4Byte		preVal0x6c0;
	u4Byte		curVal0x6c0;
	u4Byte		preVal0x6c4;
	u4Byte		curVal0x6c4;
	u4Byte		preVal0x6c8;
	u4Byte		curVal0x6c8;
	u1Byte		preVal0x6cc;
	u1Byte		curVal0x6cc;
	BOOLEAN		limited_dig;

	// algorithm related
	u1Byte		preAlgorithm;
	u1Byte		curAlgorithm;
	u1Byte		btStatus;
	u1Byte		wifiChnlInfo[3];

	u1Byte		preSsType;
	u1Byte		curSsType;

	u4Byte		prera_mask;
	u4Byte		curra_mask;

	u1Byte		errorCondition;
} COEX_DM_8192E_1ANT, *PCOEX_DM_8192E_1ANT;

typedef struct _COEX_STA_8192E_1ANT{
	BOOLEAN					bBtLinkExist;
	BOOLEAN					bScoExist;
	BOOLEAN					bA2dpExist;
	BOOLEAN					bHidExist;
	BOOLEAN					bPanExist;

	BOOLEAN					bUnderLps;
	BOOLEAN					bUnderIps;
	u4Byte					highPriorityTx;
	u4Byte					highPriorityRx;
	u4Byte					lowPriorityTx;
	u4Byte					lowPriorityRx;
	u1Byte					btRssi;
	u1Byte					preBtRssiState;
	u1Byte					preWifiRssiState[4];
	BOOLEAN					bC2hBtInfoReqSent;
	u1Byte					btInfoC2h[BT_INFO_SRC_8192E_1ANT_MAX][10];
	u4Byte					btInfoC2hCnt[BT_INFO_SRC_8192E_1ANT_MAX];
	BOOLEAN					bC2hBtInquiryPage;
	u1Byte					btRetryCnt;
	u1Byte					btInfoExt;
}COEX_STA_8192E_1ANT, *PCOEX_STA_8192E_1ANT;

//===========================================
// The following is interface which will notify coex module.
//===========================================
VOID
EXhalbtc8192e1ant_InitHwConfig(
	IN	PBTC_COEXIST		pBtCoexist
	);
VOID
EXhalbtc8192e1ant_InitCoexDm(
	IN	PBTC_COEXIST		pBtCoexist
	);
VOID
EXhalbtc8192e1ant_IpsNotify(
	IN	PBTC_COEXIST		pBtCoexist,
	IN	u1Byte			type
	);
VOID
EXhalbtc8192e1ant_LpsNotify(
	IN	PBTC_COEXIST		pBtCoexist,
	IN	u1Byte			type
	);
VOID
EXhalbtc8192e1ant_ScanNotify(
	IN	PBTC_COEXIST		pBtCoexist,
	IN	u1Byte			type
	);
VOID
EXhalbtc8192e1ant_ConnectNotify(
	IN	PBTC_COEXIST		pBtCoexist,
	IN	u1Byte			type
	);
VOID
EXhalbtc8192e1ant_MediaStatusNotify(
	IN	PBTC_COEXIST			pBtCoexist,
	IN	u1Byte				type
	);
VOID
EXhalbtc8192e1ant_SpecialPacketNotify(
	IN	PBTC_COEXIST			pBtCoexist,
	IN	u1Byte				type
	);
VOID
EXhalbtc8192e1ant_BtInfoNotify(
	IN	PBTC_COEXIST		pBtCoexist,
	IN	pu1Byte			tmpBuf,
	IN	u1Byte			length
	);
VOID
EXhalbtc8192e1ant_StackOperationNotify(
	IN	PBTC_COEXIST			pBtCoexist,
	IN	u1Byte				type
	);
VOID
EXhalbtc8192e1ant_HaltNotify(
	IN	PBTC_COEXIST			pBtCoexist
	);
VOID
EXhalbtc8192e1ant_PnpNotify(
	IN	PBTC_COEXIST			pBtCoexist,
	IN	u1Byte				pnpState
	);
VOID
EXhalbtc8192e1ant_Periodical(
	IN	PBTC_COEXIST			pBtCoexist
	);
VOID
EXhalbtc8192e1ant_DisplayCoexInfo(
	IN	PBTC_COEXIST		pBtCoexist
	);
VOID
EXhalbtc8192e1ant_DbgControl(
	IN	PBTC_COEXIST			pBtCoexist,
	IN	u1Byte				opCode,
	IN	u1Byte				opLen,
	IN	pu1Byte 			pData
	);