Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nu11secur1ty
GitHub Repository: nu11secur1ty/Kali-Linux
Path: blob/master/ALFA-W1F1/RTL8814AU/hal/phydm/halrf/halrf_debug.c
1308 views
1
/******************************************************************************
2
*
3
* Copyright(c) 2007 - 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
* The full GNU General Public License is included in this distribution in the
15
* file called LICENSE.
16
*
17
* Contact Information:
18
* wlanfae <[email protected]>
19
* Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20
* Hsinchu 300, Taiwan.
21
*
22
* Larry Finger <[email protected]>
23
*
24
*****************************************************************************/
25
26
/*@************************************************************
27
* include files
28
* ************************************************************
29
*/
30
31
#include "mp_precomp.h"
32
#include "phydm_precomp.h"
33
34
void halrf_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len)
35
{
36
#ifdef CONFIG_PHYDM_DEBUG_FUNCTION
37
struct dm_struct *dm = (struct dm_struct *)dm_void;
38
u32 used = *_used;
39
u32 out_len = *_out_len;
40
u32 rf_release_ver = 0;
41
42
switch (dm->support_ic_type) {
43
#if (RTL8814A_SUPPORT)
44
case ODM_RTL8814A:
45
rf_release_ver = RF_RELEASE_VERSION_8814A;
46
break;
47
#endif
48
49
#if (RTL8821C_SUPPORT)
50
case ODM_RTL8821C:
51
rf_release_ver = RF_RELEASE_VERSION_8821C;
52
break;
53
#endif
54
55
#if (RTL8822B_SUPPORT)
56
case ODM_RTL8822B:
57
rf_release_ver = RF_RELEASE_VERSION_8822B;
58
break;
59
#endif
60
61
#if (RTL8822C_SUPPORT)
62
case ODM_RTL8822C:
63
rf_release_ver = RF_RELEASE_VERSION_8822C;
64
break;
65
#endif
66
67
#if (RTL8814B_SUPPORT)
68
case ODM_RTL8814B:
69
rf_release_ver = RF_RELEASE_VERSION_8814B;
70
break;
71
#endif
72
73
#if (RTL8812F_SUPPORT)
74
case ODM_RTL8812F:
75
rf_release_ver = RF_RELEASE_VERSION_8812F;
76
break;
77
#endif
78
79
#if (RTL8198F_SUPPORT)
80
case ODM_RTL8198F:
81
rf_release_ver = RF_RELEASE_VERSION_8198F;
82
break;
83
#endif
84
85
#if (RTL8197F_SUPPORT)
86
case ODM_RTL8197F:
87
rf_release_ver = RF_RELEASE_VERSION_8197F;
88
break;
89
#endif
90
91
#if (RTL8192F_SUPPORT)
92
case ODM_RTL8197F:
93
rf_release_ver = RF_RELEASE_VERSION_8192F;
94
break;
95
#endif
96
97
#if (RTL8710B_SUPPORT)
98
case ODM_RTL8710B:
99
rf_release_ver = RF_RELEASE_VERSION_8710B;
100
break;
101
#endif
102
103
#if (RTL8195B_SUPPORT)
104
case ODM_RTL8195B:
105
rf_release_ver = RF_RELEASE_VERSION_8195B;
106
break;
107
#endif
108
}
109
110
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %d\n",
111
"RF Para Release Ver", rf_release_ver);
112
113
/* HAL RF version List */
114
PDM_SNPF(out_len, used, output + used, out_len - used, "%-35s\n",
115
"% HAL RF version %");
116
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
117
"Power Tracking", HALRF_POWRTRACKING_VER);
118
PDM_SNPF(out_len, used, output + used, out_len - used,
119
" %-35s: %s %s\n", "IQK",
120
(dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) ? "FW" :
121
HALRF_IQK_VER,
122
(halrf_match_iqk_version(dm_void)) ? "(match)" : "(mismatch)");
123
124
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
125
"LCK", HALRF_LCK_VER);
126
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
127
"DPK", HALRF_DPK_VER);
128
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
129
"TSSI", HALRF_TSSI_VER);
130
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
131
"KFREE", HALRF_KFREE_VER);
132
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
133
"TX 2G Current Calibration", HALRF_PABIASK_VER);
134
PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
135
"RFK Init. Parameter", HALRF_RFK_INIT_VER);
136
137
*_used = used;
138
*_out_len = out_len;
139
#endif
140
}
141
142
void halrf_debug_trace(void *dm_void, char input[][16], u32 *_used,
143
char *output, u32 *_out_len)
144
{
145
struct dm_struct *dm = (struct dm_struct *)dm_void;
146
struct _hal_rf_ *rf = &dm->rf_table;
147
u32 one = 1;
148
u32 used = *_used;
149
u32 out_len = *_out_len;
150
u32 rf_var[10] = {0};
151
u8 i;
152
153
for (i = 0; i < 5; i++)
154
if (input[i + 1])
155
PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &rf_var[i]);
156
157
if (rf_var[0] == 100) {
158
PDM_SNPF(out_len, used, output + used, out_len - used,
159
"\n[DBG MSG] RF Selection\n");
160
PDM_SNPF(out_len, used, output + used, out_len - used,
161
"00. (( %s ))TX_PWR_TRACK\n",
162
((rf->rf_dbg_comp & DBG_RF_TX_PWR_TRACK) ? ("V") :
163
(".")));
164
PDM_SNPF(out_len, used, output + used, out_len - used,
165
"01. (( %s ))IQK\n",
166
((rf->rf_dbg_comp & DBG_RF_IQK) ? ("V") : (".")));
167
PDM_SNPF(out_len, used, output + used, out_len - used,
168
"02. (( %s ))LCK\n",
169
((rf->rf_dbg_comp & DBG_RF_LCK) ? ("V") : (".")));
170
PDM_SNPF(out_len, used, output + used, out_len - used,
171
"03. (( %s ))DPK\n",
172
((rf->rf_dbg_comp & DBG_RF_DPK) ? ("V") : (".")));
173
PDM_SNPF(out_len, used, output + used, out_len - used,
174
"04. (( %s ))TXGAPK\n",
175
((rf->rf_dbg_comp & DBG_RF_TXGAPK) ? ("V") : (".")));
176
PDM_SNPF(out_len, used, output + used, out_len - used,
177
"29. (( %s ))MP\n",
178
((rf->rf_dbg_comp & DBG_RF_MP) ? ("V") : (".")));
179
PDM_SNPF(out_len, used, output + used, out_len - used,
180
"30. (( %s ))TMP\n",
181
((rf->rf_dbg_comp & DBG_RF_TMP) ? ("V") : (".")));
182
PDM_SNPF(out_len, used, output + used, out_len - used,
183
"31. (( %s ))INIT\n",
184
((rf->rf_dbg_comp & DBG_RF_INIT) ? ("V") : (".")));
185
186
} else if (rf_var[0] == 101) {
187
rf->rf_dbg_comp = 0;
188
PDM_SNPF(out_len, used, output + used, out_len - used,
189
"Disable all DBG COMP\n");
190
} else {
191
if (rf_var[1] == 1) /*enable*/
192
rf->rf_dbg_comp |= (one << rf_var[0]);
193
else if (rf_var[1] == 2) /*disable*/
194
rf->rf_dbg_comp &= ~(one << rf_var[0]);
195
}
196
PDM_SNPF(out_len, used, output + used, out_len - used,
197
"\nCurr-RF_Dbg_Comp = 0x%x\n", rf->rf_dbg_comp);
198
199
*_used = used;
200
*_out_len = out_len;
201
}
202
203
struct halrf_command {
204
char name[16];
205
u8 id;
206
};
207
208
enum halrf_CMD_ID {
209
HALRF_HELP,
210
HALRF_SUPPORTABILITY,
211
HALRF_DBG_COMP,
212
HALRF_PROFILE,
213
HALRF_IQK_INFO,
214
HALRF_IQK,
215
HALRF_IQK_DEBUG,
216
HALRF_DPK,
217
#ifdef CONFIG_2G_BAND_SHIFT
218
HAL_BAND_SHIFT,
219
#endif
220
};
221
222
struct halrf_command halrf_cmd_ary[] = {
223
{"-h", HALRF_HELP},
224
{"ability", HALRF_SUPPORTABILITY},
225
{"dbg", HALRF_DBG_COMP},
226
{"profile", HALRF_PROFILE},
227
{"iqk_info", HALRF_IQK_INFO},
228
{"iqk", HALRF_IQK},
229
{"dpk", HALRF_DPK},
230
{"iqk_dbg", HALRF_IQK_DEBUG},
231
#ifdef CONFIG_2G_BAND_SHIFT
232
{"band_shift", HAL_BAND_SHIFT},
233
#endif
234
};
235
236
void halrf_cmd_parser(void *dm_void, char input[][16], u32 *_used, char *output,
237
u32 *_out_len, u32 input_num)
238
{
239
struct dm_struct *dm = (struct dm_struct *)dm_void;
240
#ifdef CONFIG_PHYDM_DEBUG_FUNCTION
241
u8 id = 0;
242
u32 rf_var[10] = {0};
243
u32 i, input_idx = 0;
244
u32 halrf_ary_size =
245
sizeof(halrf_cmd_ary) / sizeof(struct halrf_command);
246
u32 used = *_used;
247
u32 out_len = *_out_len;
248
249
/* Parsing Cmd ID */
250
for (i = 0; i < halrf_ary_size; i++) {
251
if (strcmp(halrf_cmd_ary[i].name, input[1]) == 0) {
252
id = halrf_cmd_ary[i].id;
253
break;
254
}
255
}
256
257
if (i == halrf_ary_size) {
258
PDM_SNPF(out_len, used, output + used, out_len - used,
259
"RF Cmd not found\n");
260
return;
261
}
262
263
switch (id) {
264
case HALRF_HELP:
265
PDM_SNPF(out_len, used, output + used, out_len - used,
266
"RF cmd ==>\n");
267
268
for (i = 0; i < halrf_ary_size - 1; i++) {
269
PDM_SNPF(out_len, used, output + used, out_len - used,
270
" %-5d: %s\n", i, halrf_cmd_ary[i + 1].name);
271
}
272
break;
273
case HALRF_SUPPORTABILITY:
274
halrf_support_ability_debug(dm, &input[0], &used, output,
275
&out_len);
276
break;
277
#ifdef CONFIG_2G_BAND_SHIFT
278
case HAL_BAND_SHIFT:
279
halrf_support_band_shift_debug(dm, &input[0], &used, output,
280
&out_len);
281
break;
282
#endif
283
case HALRF_DBG_COMP:
284
halrf_debug_trace(dm, &input[0], &used, output, &out_len);
285
break;
286
case HALRF_PROFILE:
287
halrf_basic_profile(dm, &used, output, &out_len);
288
break;
289
case HALRF_IQK_INFO:
290
#if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
291
halrf_iqk_info_dump(dm, &used, output, &out_len);
292
#endif
293
break;
294
case HALRF_IQK:
295
PDM_SNPF(out_len, used, output + used, out_len - used,
296
"TRX IQK Trigger\n");
297
halrf_iqk_trigger(dm, false);
298
#if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
299
halrf_iqk_info_dump(dm, &used, output, &out_len);
300
#endif
301
break;
302
case HALRF_IQK_DEBUG:
303
304
for (i = 0; i < 5; i++) {
305
if (input[i + 1]) {
306
PHYDM_SSCANF(input[i + 2], DCMD_HEX,
307
&rf_var[i]);
308
input_idx++;
309
}
310
}
311
312
if (input_idx >= 1) {
313
#if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
314
if (dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8821C))
315
halrf_iqk_debug(dm, (u32 *)rf_var, &used,
316
output, &out_len);
317
#endif
318
}
319
break;
320
case HALRF_DPK:
321
PDM_SNPF(out_len, used, output + used, out_len - used,
322
"DPK Trigger\n");
323
halrf_dpk_trigger(dm);
324
break;
325
default:
326
break;
327
}
328
329
*_used = used;
330
*_out_len = out_len;
331
#endif
332
}
333
334
void halrf_init_debug_setting(void *dm_void)
335
{
336
struct dm_struct *dm = (struct dm_struct *)dm_void;
337
struct _hal_rf_ *rf = &dm->rf_table;
338
339
rf->rf_dbg_comp =
340
#if DBG
341
#if 0
342
/*DBG_RF_TX_PWR_TRACK |*/
343
/*DBG_RF_IQK | */
344
/*DBG_RF_LCK | */
345
/*DBG_RF_DPK | */
346
/*DBG_RF_DACK | */
347
/*DBG_RF_TXGAPK | */
348
/*DBG_RF_MP | */
349
/*DBG_RF_TMP | */
350
/*DBG_RF_INIT | */
351
#endif
352
#endif
353
0;
354
}
355
356