Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nu11secur1ty
GitHub Repository: nu11secur1ty/Kali-Linux
Path: blob/master/ALFA-W1F1/RTL8814AU/hal/hal_btcoex_wifionly.c
1307 views
1
/******************************************************************************
2
*
3
* Copyright(c) 2016 - 2017 Realtek Corporation.
4
*
5
* This program is free software; you can redistribute it and/or modify it
6
* under the terms of version 2 of the GNU General Public License as
7
* published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
*****************************************************************************/
15
#include <hal_btcoex_wifionly.h>
16
17
#if (CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG == 1)
18
19
#include "btc/mp_precomp.h"
20
21
struct wifi_only_cfg GLBtCoexistWifiOnly;
22
23
void halwifionly_write1byte(void *pwifionlyContext, u32 RegAddr, u8 Data)
24
{
25
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
26
PADAPTER Adapter = pwifionlycfg->Adapter;
27
28
rtw_write8(Adapter, RegAddr, Data);
29
}
30
31
void halwifionly_write2byte(void *pwifionlyContext, u32 RegAddr, u16 Data)
32
{
33
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
34
PADAPTER Adapter = pwifionlycfg->Adapter;
35
36
rtw_write16(Adapter, RegAddr, Data);
37
}
38
39
void halwifionly_write4byte(void *pwifionlyContext, u32 RegAddr, u32 Data)
40
{
41
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
42
PADAPTER Adapter = pwifionlycfg->Adapter;
43
44
rtw_write32(Adapter, RegAddr, Data);
45
}
46
47
u8 halwifionly_read1byte(void *pwifionlyContext, u32 RegAddr)
48
{
49
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
50
PADAPTER Adapter = pwifionlycfg->Adapter;
51
52
return rtw_read8(Adapter, RegAddr);
53
}
54
55
u16 halwifionly_read2byte(void * pwifionlyContext, u32 RegAddr)
56
{
57
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
58
PADAPTER Adapter = pwifionlycfg->Adapter;
59
60
return rtw_read16(Adapter, RegAddr);
61
}
62
63
u32 halwifionly_read4byte(void *pwifionlyContext, u32 RegAddr)
64
{
65
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
66
PADAPTER Adapter = pwifionlycfg->Adapter;
67
68
return rtw_read32(Adapter, RegAddr);
69
}
70
71
void halwifionly_bitmaskwrite1byte(void *pwifionlyContext, u32 regAddr, u8 bitMask, u8 data)
72
{
73
u8 originalValue, bitShift = 0;
74
u8 i;
75
76
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
77
PADAPTER Adapter = pwifionlycfg->Adapter;
78
79
if (bitMask != 0xff) {
80
originalValue = rtw_read8(Adapter, regAddr);
81
for (i = 0; i <= 7; i++) {
82
if ((bitMask >> i) & 0x1)
83
break;
84
}
85
bitShift = i;
86
data = ((originalValue) & (~bitMask)) | (((data << bitShift)) & bitMask);
87
}
88
rtw_write8(Adapter, regAddr, data);
89
}
90
91
void halwifionly_phy_set_rf_reg(void *pwifionlyContext, enum rf_path eRFPath, u32 RegAddr, u32 BitMask, u32 Data)
92
{
93
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
94
PADAPTER Adapter = pwifionlycfg->Adapter;
95
96
phy_set_rf_reg(Adapter, eRFPath, RegAddr, BitMask, Data);
97
}
98
99
void halwifionly_phy_set_bb_reg(void *pwifionlyContext, u32 RegAddr, u32 BitMask, u32 Data)
100
{
101
struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
102
PADAPTER Adapter = pwifionlycfg->Adapter;
103
104
phy_set_bb_reg(Adapter, RegAddr, BitMask, Data);
105
}
106
107
void hal_btcoex_wifionly_switchband_notify(PADAPTER padapter)
108
{
109
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
110
u8 is_5g = _FALSE;
111
112
if (pHalData->current_band_type == BAND_ON_5G)
113
is_5g = _TRUE;
114
115
if (IS_HARDWARE_TYPE_8822B(padapter)) {
116
#ifdef CONFIG_RTL8822B
117
ex_hal8822b_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
118
#endif
119
}
120
121
#ifdef CONFIG_RTL8821C
122
else if (IS_HARDWARE_TYPE_8821C(padapter))
123
ex_hal8821c_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
124
#endif
125
126
#ifdef CONFIG_RTL8822C
127
else if (IS_HARDWARE_TYPE_8822C(padapter))
128
ex_hal8822c_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
129
#endif
130
131
#ifdef CONFIG_RTL8814B
132
else if (IS_HARDWARE_TYPE_8814B(padapter))
133
ex_hal8814b_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
134
#endif
135
}
136
137
void hal_btcoex_wifionly_scan_notify(PADAPTER padapter)
138
{
139
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
140
u8 is_5g = _FALSE;
141
142
if (pHalData->current_band_type == BAND_ON_5G)
143
is_5g = _TRUE;
144
145
if (IS_HARDWARE_TYPE_8822B(padapter)) {
146
#ifdef CONFIG_RTL8822B
147
ex_hal8822b_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
148
#endif
149
}
150
151
#ifdef CONFIG_RTL8821C
152
else if (IS_HARDWARE_TYPE_8821C(padapter))
153
ex_hal8821c_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
154
#endif
155
156
#ifdef CONFIG_RTL8822C
157
else if (IS_HARDWARE_TYPE_8822C(padapter))
158
ex_hal8822c_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
159
#endif
160
161
#ifdef CONFIG_RTL8814B
162
else if (IS_HARDWARE_TYPE_8814B(padapter))
163
ex_hal8814b_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
164
#endif
165
}
166
167
void hal_btcoex_wifionly_connect_notify(PADAPTER padapter)
168
{
169
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
170
u8 is_5g = _FALSE;
171
172
if (pHalData->current_band_type == BAND_ON_5G)
173
is_5g = _TRUE;
174
175
if (IS_HARDWARE_TYPE_8822B(padapter)) {
176
#ifdef CONFIG_RTL8822B
177
ex_hal8822b_wifi_only_connectnotify(&GLBtCoexistWifiOnly, is_5g);
178
#endif
179
}
180
181
#ifdef CONFIG_RTL8821C
182
else if (IS_HARDWARE_TYPE_8821C(padapter))
183
ex_hal8821c_wifi_only_connectnotify(&GLBtCoexistWifiOnly, is_5g);
184
#endif
185
186
#ifdef CONFIG_RTL8822C
187
else if (IS_HARDWARE_TYPE_8822C(padapter))
188
ex_hal8822c_wifi_only_connectnotify(&GLBtCoexistWifiOnly, is_5g);
189
#endif
190
191
#ifdef CONFIG_RTL8814B
192
else if (IS_HARDWARE_TYPE_8814B(padapter))
193
ex_hal8814b_wifi_only_connectnotify(&GLBtCoexistWifiOnly, is_5g);
194
#endif
195
}
196
197
void hal_btcoex_wifionly_hw_config(PADAPTER padapter)
198
{
199
struct wifi_only_cfg *pwifionlycfg = &GLBtCoexistWifiOnly;
200
201
if (IS_HARDWARE_TYPE_8723B(padapter)) {
202
#ifdef CONFIG_RTL8723B
203
ex_hal8723b_wifi_only_hw_config(pwifionlycfg);
204
#endif
205
}
206
207
#ifdef CONFIG_RTL8822B
208
else if (IS_HARDWARE_TYPE_8822B(padapter))
209
ex_hal8822b_wifi_only_hw_config(pwifionlycfg);
210
#endif
211
212
#ifdef CONFIG_RTL8821C
213
else if (IS_HARDWARE_TYPE_8821C(padapter))
214
ex_hal8821c_wifi_only_hw_config(pwifionlycfg);
215
#endif
216
217
#ifdef CONFIG_RTL8822C
218
else if (IS_HARDWARE_TYPE_8822C(padapter))
219
ex_hal8822c_wifi_only_hw_config(pwifionlycfg);
220
#endif
221
222
#ifdef CONFIG_RTL8814B
223
else if (IS_HARDWARE_TYPE_8814B(padapter))
224
ex_hal8814b_wifi_only_hw_config(pwifionlycfg);
225
#endif
226
}
227
228
void hal_btcoex_wifionly_initlizevariables(PADAPTER padapter)
229
{
230
struct wifi_only_cfg *pwifionlycfg = &GLBtCoexistWifiOnly;
231
struct wifi_only_haldata *pwifionly_haldata = &pwifionlycfg->haldata_info;
232
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
233
234
_rtw_memset(&GLBtCoexistWifiOnly, 0, sizeof(GLBtCoexistWifiOnly));
235
236
pwifionlycfg->Adapter = padapter;
237
238
#ifdef CONFIG_PCI_HCI
239
pwifionlycfg->chip_interface = WIFIONLY_INTF_PCI;
240
#elif defined(CONFIG_USB_HCI)
241
pwifionlycfg->chip_interface = WIFIONLY_INTF_USB;
242
#elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
243
pwifionlycfg->chip_interface = WIFIONLY_INTF_SDIO;
244
#else
245
pwifionlycfg->chip_interface = WIFIONLY_INTF_UNKNOWN;
246
#endif
247
248
pwifionly_haldata->customer_id = CUSTOMER_NORMAL;
249
}
250
251
void hal_btcoex_wifionly_AntInfoSetting(PADAPTER padapter)
252
{
253
struct wifi_only_cfg *pwifionlycfg = &GLBtCoexistWifiOnly;
254
struct wifi_only_haldata *pwifionly_haldata = &pwifionlycfg->haldata_info;
255
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
256
257
pwifionly_haldata->efuse_pg_antnum = pHalData->EEPROMBluetoothAntNum;
258
pwifionly_haldata->efuse_pg_antpath = pHalData->ant_path;
259
pwifionly_haldata->rfe_type = pHalData->rfe_type;
260
pwifionly_haldata->ant_div_cfg = pHalData->AntDivCfg;
261
}
262
263
#endif
264
265
266