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 *****************************************************************************/
15
16 /*Image2HeaderVersion: 3.5.2*/
17 #include "mp_precomp.h"
18 #include "../phydm_precomp.h"
19
20 #if (RTL8188F_SUPPORT == 1)
21 static boolean
check_positive(struct dm_struct * dm,const u32 condition1,const u32 condition2,const u32 condition3,const u32 condition4)22 check_positive(
23 struct dm_struct *dm,
24 const u32 condition1,
25 const u32 condition2,
26 const u32 condition3,
27 const u32 condition4
28 )
29 {
30 u8 _board_type = ((dm->board_type & BIT(4)) >> 4) << 0 | /* _GLNA*/
31 ((dm->board_type & BIT(3)) >> 3) << 1 | /* _GPA*/
32 ((dm->board_type & BIT(7)) >> 7) << 2 | /* _ALNA*/
33 ((dm->board_type & BIT(6)) >> 6) << 3 | /* _APA */
34 ((dm->board_type & BIT(2)) >> 2) << 4 | /* _BT*/
35 ((dm->board_type & BIT(1)) >> 1) << 5 | /* _NGFF*/
36 ((dm->board_type & BIT(5)) >> 5) << 6; /* _TRSWT*/
37
38 u32 cond1 = condition1, cond2 = condition2, cond3 = condition3, cond4 = condition4;
39
40 u8 cut_version_for_para = (dm->cut_version == ODM_CUT_A) ? 15 : dm->cut_version;
41 u8 pkg_type_for_para = (dm->package_type == 0) ? 15 : dm->package_type;
42
43 u32 driver1 = cut_version_for_para << 24 |
44 (dm->support_interface & 0xF0) << 16 |
45 dm->support_platform << 16 |
46 pkg_type_for_para << 12 |
47 (dm->support_interface & 0x0F) << 8 |
48 _board_type;
49
50 u32 driver2 = (dm->type_glna & 0xFF) << 0 |
51 (dm->type_gpa & 0xFF) << 8 |
52 (dm->type_alna & 0xFF) << 16 |
53 (dm->type_apa & 0xFF) << 24;
54
55 u32 driver3 = 0;
56
57 u32 driver4 = (dm->type_glna & 0xFF00) >> 8 |
58 (dm->type_gpa & 0xFF00) |
59 (dm->type_alna & 0xFF00) << 8 |
60 (dm->type_apa & 0xFF00) << 16;
61
62 PHYDM_DBG(dm, ODM_COMP_INIT,
63 "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n",
64 __func__, cond1, cond2, cond3, cond4);
65 PHYDM_DBG(dm, ODM_COMP_INIT,
66 "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n",
67 __func__, driver1, driver2, driver3, driver4);
68
69 PHYDM_DBG(dm, ODM_COMP_INIT,
70 " (Platform, Interface) = (0x%X, 0x%X)\n",
71 dm->support_platform, dm->support_interface);
72 PHYDM_DBG(dm, ODM_COMP_INIT,
73 " (Board, Package) = (0x%X, 0x%X)\n", dm->board_type,
74 dm->package_type);
75
76
77 /*============== value Defined Check ===============*/
78 /*QFN type [15:12] and cut version [27:24] need to do value check*/
79
80 if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))
81 return false;
82 if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))
83 return false;
84
85 /*=============== Bit Defined Check ================*/
86 /* We don't care [31:28] */
87
88 cond1 &= 0x00FF0FFF;
89 driver1 &= 0x00FF0FFF;
90
91 if ((cond1 & driver1) == cond1) {
92 u32 bit_mask = 0;
93
94 if ((cond1 & 0x0F) == 0) /* board_type is DONTCARE*/
95 return true;
96
97 if ((cond1 & BIT(0)) != 0) /*GLNA*/
98 bit_mask |= 0x000000FF;
99 if ((cond1 & BIT(1)) != 0) /*GPA*/
100 bit_mask |= 0x0000FF00;
101 if ((cond1 & BIT(2)) != 0) /*ALNA*/
102 bit_mask |= 0x00FF0000;
103 if ((cond1 & BIT(3)) != 0) /*APA*/
104 bit_mask |= 0xFF000000;
105
106 if (((cond2 & bit_mask) == (driver2 & bit_mask)) && ((cond4 & bit_mask) == (driver4 & bit_mask))) /* board_type of each RF path is matched*/
107 return true;
108 else
109 return false;
110 } else
111 return false;
112 }
113
114 /******************************************************************************
115 * radioa.TXT
116 ******************************************************************************/
117
118 u32 array_mp_8188f_radioa[] = {
119 0x000, 0x00030000,
120 0x008, 0x00008400,
121 0x018, 0x00000407,
122 0x019, 0x00000012,
123 0x80000400, 0x00000000, 0x40000000, 0x00000000,
124 0x01B, 0x00000C6C,
125 0xA0000000, 0x00000000,
126 0x01B, 0x00001C6C,
127 0xB0000000, 0x00000000,
128 0x01E, 0x00080009,
129 0x01F, 0x00000880,
130 0x02F, 0x0001A060,
131 0x03F, 0x00028000,
132 0x042, 0x000060C0,
133 0x057, 0x000D0000,
134 0x058, 0x000C0160,
135 0x067, 0x00001552,
136 0x083, 0x00000000,
137 0x0B0, 0x000FF9F0,
138 0x0B1, 0x00022218,
139 0x0B2, 0x00034C00,
140 0x8c000400, 0x00000000, 0x40000000, 0x00000000,
141 0x0B4, 0x0004486B,
142 0x9c000000, 0x00000000, 0x40000000, 0x00000000,
143 0x0B4, 0x0004486B,
144 0xA0000000, 0x00000000,
145 0x0B4, 0x0004484B,
146 0xB0000000, 0x00000000,
147 0x0B5, 0x0000112A,
148 0x0B6, 0x0000053E,
149 0x0B7, 0x00010408,
150 0x8c000400, 0x00000000, 0x40000000, 0x00000000,
151 0x0B8, 0x000100AF,
152 0x9c000000, 0x00000000, 0x40000000, 0x00000000,
153 0x0B8, 0x000100AF,
154 0xA0000000, 0x00000000,
155 0x0B8, 0x00010200,
156 0xB0000000, 0x00000000,
157 0x0B9, 0x00080001,
158 0x0BA, 0x00040001,
159 0x0BB, 0x00000400,
160 0x0BF, 0x000C0000,
161 0x0C2, 0x00002400,
162 0x0C3, 0x00000009,
163 0x0C4, 0x00040C91,
164 0x0C5, 0x00099999,
165 0x0C6, 0x000000A3,
166 0x0C7, 0x0008F820,
167 0x0C8, 0x00076C06,
168 0x0C9, 0x00000000,
169 0x0CA, 0x00080000,
170 0x0DF, 0x00000180,
171 0x0EF, 0x000001A0,
172 0x8f000000, 0x00000000, 0x40000000, 0x00000000,
173 0x051, 0x000E8333,
174 0xA0000000, 0x00000000,
175 0x051, 0x000E8231,
176 0xB0000000, 0x00000000,
177 0x80000400, 0x00000000, 0x40000000, 0x00000000,
178 0x052, 0x000FAC88,
179 0x9f000000, 0x00000000, 0x40000000, 0x00000000,
180 0x052, 0x000FAC2C,
181 0xA0000000, 0x00000000,
182 0x052, 0x000FAC2F,
183 0xB0000000, 0x00000000,
184 0x8f000000, 0x00000000, 0x40000000, 0x00000000,
185 0x053, 0x00000103,
186 0xA0000000, 0x00000000,
187 0x053, 0x000001C1,
188 0xB0000000, 0x00000000,
189 0x054, 0x00055007,
190 0x056, 0x000517F0,
191 0x8f000000, 0x00000000, 0x40000000, 0x00000000,
192 0x035, 0x00000099,
193 0x035, 0x00000199,
194 0x035, 0x00000299,
195 0xA0000000, 0x00000000,
196 0x035, 0x00000090,
197 0x035, 0x00000190,
198 0x035, 0x00000290,
199 0xB0000000, 0x00000000,
200 0x8b000000, 0x00000000, 0x40000000, 0x00000000,
201 0x05F, 0x00023500,
202 0x9c000400, 0x00000000, 0x40000000, 0x00000000,
203 0x05F, 0x00023504,
204 0x9c000000, 0x00000000, 0x40000000, 0x00000000,
205 0x05F, 0x00023504,
206 0xA0000000, 0x00000000,
207 0x05F, 0x000FFFFF,
208 0xB0000000, 0x00000000,
209 0x8f000000, 0x00000000, 0x40000000, 0x00000000,
210 0x036, 0x00000064,
211 0x036, 0x00008064,
212 0x036, 0x00010064,
213 0x036, 0x00018064,
214 0x9c000400, 0x00000000, 0x40000000, 0x00000000,
215 0x036, 0x00001068,
216 0x036, 0x00009068,
217 0x036, 0x00011068,
218 0x036, 0x00019068,
219 0x9c000000, 0x00000000, 0x40000000, 0x00000000,
220 0x036, 0x00001068,
221 0x036, 0x00009068,
222 0x036, 0x00011068,
223 0x036, 0x00019068,
224 0xA0000000, 0x00000000,
225 0x036, 0x00001064,
226 0x036, 0x00009064,
227 0x036, 0x00011064,
228 0x036, 0x00019064,
229 0xB0000000, 0x00000000,
230 0x018, 0x00000C07,
231 0x05A, 0x00048000,
232 0x019, 0x000739D0,
233 0x80000400, 0x00000000, 0x40000000, 0x00000000,
234 0x034, 0x0000ADD2,
235 0x034, 0x00009DCF,
236 0x034, 0x00008CF2,
237 0x034, 0x00007CEF,
238 0x034, 0x00006CEC,
239 0x034, 0x00005CE9,
240 0x034, 0x00004CCE,
241 0x034, 0x00003CCB,
242 0x034, 0x00002CC8,
243 0x034, 0x00001C4B,
244 0x034, 0x00000C48,
245 0x9f000000, 0x00000000, 0x40000000, 0x00000000,
246 0x034, 0x0000ADD6,
247 0x034, 0x00009DD3,
248 0x034, 0x00008CF4,
249 0x034, 0x00007CF1,
250 0x034, 0x00006CEE,
251 0x034, 0x00005CEB,
252 0x034, 0x00004CCE,
253 0x034, 0x00003CCB,
254 0x034, 0x00002CC8,
255 0x034, 0x00001C4B,
256 0x034, 0x00000C48,
257 0xA0000000, 0x00000000,
258 0x034, 0x0000ADD2,
259 0x034, 0x00009DD0,
260 0x034, 0x00008CF2,
261 0x034, 0x00007CEF,
262 0x034, 0x00006CEC,
263 0x034, 0x00005CD1,
264 0x034, 0x00004CCE,
265 0x034, 0x00003CCB,
266 0x034, 0x00002CC8,
267 0x034, 0x00001C4B,
268 0x034, 0x00000C48,
269 0xB0000000, 0x00000000,
270 0x000, 0x00030159,
271 0x084, 0x00048000,
272 0x086, 0x0000002A,
273 0x087, 0x00000025,
274 0x08E, 0x00065540,
275 0x08F, 0x00088000,
276 0x0EF, 0x000020A0,
277 0x03B, 0x000F0F00,
278 0x03B, 0x000E0B00,
279 0x03B, 0x000D0900,
280 0x03B, 0x000C0700,
281 0x03B, 0x000B0600,
282 0x03B, 0x000A0400,
283 0x03B, 0x00090200,
284 0x03B, 0x00080000,
285 0x03B, 0x0007BF00,
286 0x03B, 0x00060B00,
287 0x03B, 0x0005C900,
288 0x03B, 0x00040700,
289 0x03B, 0x00030600,
290 0x03B, 0x0002D500,
291 0x03B, 0x00010200,
292 0x03B, 0x0000E000,
293 0x0EF, 0x000000A0,
294 0x0EF, 0x00000010,
295 0x03B, 0x0000C0A8,
296 0x03B, 0x00010400,
297 0x0EF, 0x00000000,
298 0x0EF, 0x00080000,
299 0x030, 0x00010000,
300 0x031, 0x0000000F,
301 0x032, 0x00007EFE,
302 0x0EF, 0x00000000,
303 0x000, 0x00010159,
304 0x018, 0x0000FC07,
305 0xFFE, 0x00000000,
306 0xFFE, 0x00000000,
307 0x01F, 0x00080003,
308 0xFFE, 0x00000000,
309 0xFFE, 0x00000000,
310 0x01E, 0x00000001,
311 0x01F, 0x00080000,
312 0x000, 0x00033D95,
313
314 };
315
316 void
odm_read_and_config_mp_8188f_radioa(struct dm_struct * dm)317 odm_read_and_config_mp_8188f_radioa(struct dm_struct *dm)
318 {
319 u32 i = 0;
320 u8 c_cond;
321 boolean is_matched = true, is_skipped = false;
322 u32 array_len = sizeof(array_mp_8188f_radioa) / sizeof(u32);
323 u32 *array = array_mp_8188f_radioa;
324
325 u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
326
327 PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__);
328
329 while ((i + 1) < array_len) {
330 v1 = array[i];
331 v2 = array[i + 1];
332
333 if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/
334 if (v1 & BIT(31)) {/* positive condition*/
335 c_cond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
336 if (c_cond == COND_ENDIF) {/*end*/
337 is_matched = true;
338 is_skipped = false;
339 PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n");
340 } else if (c_cond == COND_ELSE) { /*else*/
341 is_matched = is_skipped ? false : true;
342 PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n");
343 } else {/*if , else if*/
344 pre_v1 = v1;
345 pre_v2 = v2;
346 PHYDM_DBG(dm, ODM_COMP_INIT, "IF or ELSE IF\n");
347 }
348 } else if (v1 & BIT(30)) { /*negative condition*/
349 if (is_skipped == false) {
350 if (check_positive(dm, pre_v1, pre_v2, v1, v2)) {
351 is_matched = true;
352 is_skipped = true;
353 } else {
354 is_matched = false;
355 is_skipped = false;
356 }
357 } else
358 is_matched = false;
359 }
360 } else {
361 if (is_matched)
362 odm_config_rf_radio_a_8188f(dm, v1, v2);
363 }
364 i = i + 2;
365 }
366 }
367
368 u32
odm_get_version_mp_8188f_radioa(void)369 odm_get_version_mp_8188f_radioa(void)
370 {
371 return 39;
372 }
373
374 /******************************************************************************
375 * txpowertrack_ap.TXT
376 ******************************************************************************/
377
378 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP))
379 u8 g_delta_swing_table_idx_mp_5gb_n_txpowertrack_ap_8188f[][DELTA_SWINGIDX_SIZE] = {
380 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
381 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
382 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
383 };
384 u8 g_delta_swing_table_idx_mp_5gb_p_txpowertrack_ap_8188f[][DELTA_SWINGIDX_SIZE] = {
385 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
386 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
387 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
388 };
389 u8 g_delta_swing_table_idx_mp_5ga_n_txpowertrack_ap_8188f[][DELTA_SWINGIDX_SIZE] = {
390 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
391 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
392 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
393 };
394 u8 g_delta_swing_table_idx_mp_5ga_p_txpowertrack_ap_8188f[][DELTA_SWINGIDX_SIZE] = {
395 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
396 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
397 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
398 };
399 u8 g_delta_swing_table_idx_mp_2gb_n_txpowertrack_ap_8188f[] = {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11};
400 u8 g_delta_swing_table_idx_mp_2gb_p_txpowertrack_ap_8188f[] = {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9};
401 u8 g_delta_swing_table_idx_mp_2ga_n_txpowertrack_ap_8188f[] = {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11};
402 u8 g_delta_swing_table_idx_mp_2ga_p_txpowertrack_ap_8188f[] = {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9};
403 u8 g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_ap_8188f[] = {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11};
404 u8 g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_ap_8188f[] = {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9};
405 u8 g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_ap_8188f[] = {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11};
406 u8 g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_ap_8188f[] = {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9};
407 #endif
408
409 void
odm_read_and_config_mp_8188f_txpowertrack_ap(struct dm_struct * dm)410 odm_read_and_config_mp_8188f_txpowertrack_ap(struct dm_struct *dm)
411 {
412 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP))
413 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
414
415 PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8188f\n");
416
417
418 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, g_delta_swing_table_idx_mp_2ga_p_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
419 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, g_delta_swing_table_idx_mp_2ga_n_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
420 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, g_delta_swing_table_idx_mp_2gb_p_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
421 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, g_delta_swing_table_idx_mp_2gb_n_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
422
423 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
424 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
425 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
426 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE);
427
428 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, g_delta_swing_table_idx_mp_5ga_p_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE * 3);
429 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, g_delta_swing_table_idx_mp_5ga_n_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE * 3);
430 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, g_delta_swing_table_idx_mp_5gb_p_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE * 3);
431 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, g_delta_swing_table_idx_mp_5gb_n_txpowertrack_ap_8188f, DELTA_SWINGIDX_SIZE * 3);
432 #endif
433 }
434
435 /******************************************************************************
436 * txpowertrack_sdio.TXT
437 ******************************************************************************/
438
439 #if DEV_BUS_TYPE == RT_SDIO_INTERFACE
440 u8 g_delta_swing_table_idx_mp_5gb_n_txpowertrack_sdio_8188f[][DELTA_SWINGIDX_SIZE] = {
441 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
442 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
443 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
444 };
445 u8 g_delta_swing_table_idx_mp_5gb_p_txpowertrack_sdio_8188f[][DELTA_SWINGIDX_SIZE] = {
446 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
447 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
448 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
449 };
450 u8 g_delta_swing_table_idx_mp_5ga_n_txpowertrack_sdio_8188f[][DELTA_SWINGIDX_SIZE] = {
451 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
452 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
453 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
454 };
455 u8 g_delta_swing_table_idx_mp_5ga_p_txpowertrack_sdio_8188f[][DELTA_SWINGIDX_SIZE] = {
456 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
457 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
458 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
459 };
460 u8 g_delta_swing_table_idx_mp_2gb_n_txpowertrack_sdio_8188f[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9};
461 u8 g_delta_swing_table_idx_mp_2gb_p_txpowertrack_sdio_8188f[] = {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 7, 8, 8, 8, 8};
462 u8 g_delta_swing_table_idx_mp_2ga_n_txpowertrack_sdio_8188f[] = {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18};
463 u8 g_delta_swing_table_idx_mp_2ga_p_txpowertrack_sdio_8188f[] = {0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15};
464 u8 g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_sdio_8188f[] = {0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9};
465 u8 g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_sdio_8188f[] = {0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 7};
466 u8 g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_sdio_8188f[] = {0, 1, 2, 3, 4, 6, 7, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 16, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18};
467 u8 g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_sdio_8188f[] = {0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14};
468 #endif
469
470 void
odm_read_and_config_mp_8188f_txpowertrack_sdio(struct dm_struct * dm)471 odm_read_and_config_mp_8188f_txpowertrack_sdio(struct dm_struct *dm)
472 {
473 #if DEV_BUS_TYPE == RT_SDIO_INTERFACE
474 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
475
476 PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8188f\n");
477
478
479 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, g_delta_swing_table_idx_mp_2ga_p_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
480 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, g_delta_swing_table_idx_mp_2ga_n_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
481 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, g_delta_swing_table_idx_mp_2gb_p_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
482 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, g_delta_swing_table_idx_mp_2gb_n_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
483
484 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
485 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
486 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
487 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE);
488
489 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, g_delta_swing_table_idx_mp_5ga_p_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE * 3);
490 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, g_delta_swing_table_idx_mp_5ga_n_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE * 3);
491 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, g_delta_swing_table_idx_mp_5gb_p_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE * 3);
492 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, g_delta_swing_table_idx_mp_5gb_n_txpowertrack_sdio_8188f, DELTA_SWINGIDX_SIZE * 3);
493 #endif
494 }
495
496 /******************************************************************************
497 * txpowertrack_usb.TXT
498 ******************************************************************************/
499
500 #if DEV_BUS_TYPE == RT_USB_INTERFACE
501 u8 g_delta_swing_table_idx_mp_5gb_n_txpowertrack_usb_8188f[][DELTA_SWINGIDX_SIZE] = {
502 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
503 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
504 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
505 };
506 u8 g_delta_swing_table_idx_mp_5gb_p_txpowertrack_usb_8188f[][DELTA_SWINGIDX_SIZE] = {
507 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
508 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
509 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
510 };
511 u8 g_delta_swing_table_idx_mp_5ga_n_txpowertrack_usb_8188f[][DELTA_SWINGIDX_SIZE] = {
512 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
513 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
514 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
515 };
516 u8 g_delta_swing_table_idx_mp_5ga_p_txpowertrack_usb_8188f[][DELTA_SWINGIDX_SIZE] = {
517 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
518 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
519 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
520 };
521 u8 g_delta_swing_table_idx_mp_2gb_n_txpowertrack_usb_8188f[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9};
522 u8 g_delta_swing_table_idx_mp_2gb_p_txpowertrack_usb_8188f[] = {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 7, 8, 8, 8, 8};
523 u8 g_delta_swing_table_idx_mp_2ga_n_txpowertrack_usb_8188f[] = {0, 1, 1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15};
524 u8 g_delta_swing_table_idx_mp_2ga_p_txpowertrack_usb_8188f[] = {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15};
525 u8 g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_usb_8188f[] = {0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9};
526 u8 g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_usb_8188f[] = {0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 7};
527 u8 g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_usb_8188f[] = {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16};
528 u8 g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_usb_8188f[] = {0, 0, 1, 2, 2, 3, 3, 4, 6, 6, 7, 8, 8, 10, 10, 11, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15};
529 #endif
530
531 void
odm_read_and_config_mp_8188f_txpowertrack_usb(struct dm_struct * dm)532 odm_read_and_config_mp_8188f_txpowertrack_usb(struct dm_struct *dm)
533 {
534 #if DEV_BUS_TYPE == RT_USB_INTERFACE
535 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
536
537 PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8188f\n");
538
539
540 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, g_delta_swing_table_idx_mp_2ga_p_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
541 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, g_delta_swing_table_idx_mp_2ga_n_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
542 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, g_delta_swing_table_idx_mp_2gb_p_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
543 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, g_delta_swing_table_idx_mp_2gb_n_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
544
545 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
546 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
547 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
548 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE);
549
550 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, g_delta_swing_table_idx_mp_5ga_p_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE * 3);
551 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, g_delta_swing_table_idx_mp_5ga_n_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE * 3);
552 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, g_delta_swing_table_idx_mp_5gb_p_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE * 3);
553 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, g_delta_swing_table_idx_mp_5gb_n_txpowertrack_usb_8188f, DELTA_SWINGIDX_SIZE * 3);
554 #endif
555 }
556
557 /******************************************************************************
558 * txpwr_lmt.TXT
559 ******************************************************************************/
560
561 const char *array_mp_8188f_txpwr_lmt[] = {
562 "FCC", "2.4G", "20M", "CCK", "1T", "01", "32",
563 "ETSI", "2.4G", "20M", "CCK", "1T", "01", "26",
564 "MKK", "2.4G", "20M", "CCK", "1T", "01", "32",
565 "FCC", "2.4G", "20M", "CCK", "1T", "02", "32",
566 "ETSI", "2.4G", "20M", "CCK", "1T", "02", "26",
567 "MKK", "2.4G", "20M", "CCK", "1T", "02", "32",
568 "FCC", "2.4G", "20M", "CCK", "1T", "03", "32",
569 "ETSI", "2.4G", "20M", "CCK", "1T", "03", "26",
570 "MKK", "2.4G", "20M", "CCK", "1T", "03", "32",
571 "FCC", "2.4G", "20M", "CCK", "1T", "04", "32",
572 "ETSI", "2.4G", "20M", "CCK", "1T", "04", "26",
573 "MKK", "2.4G", "20M", "CCK", "1T", "04", "32",
574 "FCC", "2.4G", "20M", "CCK", "1T", "05", "32",
575 "ETSI", "2.4G", "20M", "CCK", "1T", "05", "26",
576 "MKK", "2.4G", "20M", "CCK", "1T", "05", "32",
577 "FCC", "2.4G", "20M", "CCK", "1T", "06", "32",
578 "ETSI", "2.4G", "20M", "CCK", "1T", "06", "26",
579 "MKK", "2.4G", "20M", "CCK", "1T", "06", "32",
580 "FCC", "2.4G", "20M", "CCK", "1T", "07", "32",
581 "ETSI", "2.4G", "20M", "CCK", "1T", "07", "26",
582 "MKK", "2.4G", "20M", "CCK", "1T", "07", "32",
583 "FCC", "2.4G", "20M", "CCK", "1T", "08", "32",
584 "ETSI", "2.4G", "20M", "CCK", "1T", "08", "26",
585 "MKK", "2.4G", "20M", "CCK", "1T", "08", "32",
586 "FCC", "2.4G", "20M", "CCK", "1T", "09", "32",
587 "ETSI", "2.4G", "20M", "CCK", "1T", "09", "26",
588 "MKK", "2.4G", "20M", "CCK", "1T", "09", "32",
589 "FCC", "2.4G", "20M", "CCK", "1T", "10", "32",
590 "ETSI", "2.4G", "20M", "CCK", "1T", "10", "26",
591 "MKK", "2.4G", "20M", "CCK", "1T", "10", "32",
592 "FCC", "2.4G", "20M", "CCK", "1T", "11", "32",
593 "ETSI", "2.4G", "20M", "CCK", "1T", "11", "26",
594 "MKK", "2.4G", "20M", "CCK", "1T", "11", "32",
595 "FCC", "2.4G", "20M", "CCK", "1T", "12", "30",
596 "ETSI", "2.4G", "20M", "CCK", "1T", "12", "26",
597 "MKK", "2.4G", "20M", "CCK", "1T", "12", "32",
598 "FCC", "2.4G", "20M", "CCK", "1T", "13", "26",
599 "ETSI", "2.4G", "20M", "CCK", "1T", "13", "26",
600 "MKK", "2.4G", "20M", "CCK", "1T", "13", "32",
601 "FCC", "2.4G", "20M", "CCK", "1T", "14", "63",
602 "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63",
603 "MKK", "2.4G", "20M", "CCK", "1T", "14", "32",
604 "FCC", "2.4G", "20M", "OFDM", "1T", "01", "28",
605 "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "30",
606 "MKK", "2.4G", "20M", "OFDM", "1T", "01", "30",
607 "FCC", "2.4G", "20M", "OFDM", "1T", "02", "28",
608 "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "30",
609 "MKK", "2.4G", "20M", "OFDM", "1T", "02", "30",
610 "FCC", "2.4G", "20M", "OFDM", "1T", "03", "30",
611 "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "30",
612 "MKK", "2.4G", "20M", "OFDM", "1T", "03", "30",
613 "FCC", "2.4G", "20M", "OFDM", "1T", "04", "30",
614 "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "30",
615 "MKK", "2.4G", "20M", "OFDM", "1T", "04", "30",
616 "FCC", "2.4G", "20M", "OFDM", "1T", "05", "30",
617 "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "30",
618 "MKK", "2.4G", "20M", "OFDM", "1T", "05", "30",
619 "FCC", "2.4G", "20M", "OFDM", "1T", "06", "30",
620 "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "30",
621 "MKK", "2.4G", "20M", "OFDM", "1T", "06", "30",
622 "FCC", "2.4G", "20M", "OFDM", "1T", "07", "30",
623 "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "30",
624 "MKK", "2.4G", "20M", "OFDM", "1T", "07", "30",
625 "FCC", "2.4G", "20M", "OFDM", "1T", "08", "30",
626 "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "30",
627 "MKK", "2.4G", "20M", "OFDM", "1T", "08", "30",
628 "FCC", "2.4G", "20M", "OFDM", "1T", "09", "28",
629 "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "30",
630 "MKK", "2.4G", "20M", "OFDM", "1T", "09", "30",
631 "FCC", "2.4G", "20M", "OFDM", "1T", "10", "28",
632 "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "30",
633 "MKK", "2.4G", "20M", "OFDM", "1T", "10", "30",
634 "FCC", "2.4G", "20M", "OFDM", "1T", "11", "28",
635 "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "30",
636 "MKK", "2.4G", "20M", "OFDM", "1T", "11", "30",
637 "FCC", "2.4G", "20M", "OFDM", "1T", "12", "24",
638 "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "30",
639 "MKK", "2.4G", "20M", "OFDM", "1T", "12", "30",
640 "FCC", "2.4G", "20M", "OFDM", "1T", "13", "16",
641 "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "30",
642 "MKK", "2.4G", "20M", "OFDM", "1T", "13", "30",
643 "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63",
644 "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63",
645 "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63",
646 "FCC", "2.4G", "20M", "HT", "1T", "01", "28",
647 "ETSI", "2.4G", "20M", "HT", "1T", "01", "30",
648 "MKK", "2.4G", "20M", "HT", "1T", "01", "30",
649 "FCC", "2.4G", "20M", "HT", "1T", "02", "28",
650 "ETSI", "2.4G", "20M", "HT", "1T", "02", "30",
651 "MKK", "2.4G", "20M", "HT", "1T", "02", "30",
652 "FCC", "2.4G", "20M", "HT", "1T", "03", "30",
653 "ETSI", "2.4G", "20M", "HT", "1T", "03", "30",
654 "MKK", "2.4G", "20M", "HT", "1T", "03", "30",
655 "FCC", "2.4G", "20M", "HT", "1T", "04", "30",
656 "ETSI", "2.4G", "20M", "HT", "1T", "04", "30",
657 "MKK", "2.4G", "20M", "HT", "1T", "04", "30",
658 "FCC", "2.4G", "20M", "HT", "1T", "05", "30",
659 "ETSI", "2.4G", "20M", "HT", "1T", "05", "30",
660 "MKK", "2.4G", "20M", "HT", "1T", "05", "30",
661 "FCC", "2.4G", "20M", "HT", "1T", "06", "30",
662 "ETSI", "2.4G", "20M", "HT", "1T", "06", "30",
663 "MKK", "2.4G", "20M", "HT", "1T", "06", "30",
664 "FCC", "2.4G", "20M", "HT", "1T", "07", "30",
665 "ETSI", "2.4G", "20M", "HT", "1T", "07", "30",
666 "MKK", "2.4G", "20M", "HT", "1T", "07", "30",
667 "FCC", "2.4G", "20M", "HT", "1T", "08", "30",
668 "ETSI", "2.4G", "20M", "HT", "1T", "08", "30",
669 "MKK", "2.4G", "20M", "HT", "1T", "08", "30",
670 "FCC", "2.4G", "20M", "HT", "1T", "09", "28",
671 "ETSI", "2.4G", "20M", "HT", "1T", "09", "30",
672 "MKK", "2.4G", "20M", "HT", "1T", "09", "30",
673 "FCC", "2.4G", "20M", "HT", "1T", "10", "28",
674 "ETSI", "2.4G", "20M", "HT", "1T", "10", "30",
675 "MKK", "2.4G", "20M", "HT", "1T", "10", "30",
676 "FCC", "2.4G", "20M", "HT", "1T", "11", "28",
677 "ETSI", "2.4G", "20M", "HT", "1T", "11", "30",
678 "MKK", "2.4G", "20M", "HT", "1T", "11", "30",
679 "FCC", "2.4G", "20M", "HT", "1T", "12", "24",
680 "ETSI", "2.4G", "20M", "HT", "1T", "12", "30",
681 "MKK", "2.4G", "20M", "HT", "1T", "12", "30",
682 "FCC", "2.4G", "20M", "HT", "1T", "13", "16",
683 "ETSI", "2.4G", "20M", "HT", "1T", "13", "30",
684 "MKK", "2.4G", "20M", "HT", "1T", "13", "30",
685 "FCC", "2.4G", "20M", "HT", "1T", "14", "63",
686 "ETSI", "2.4G", "20M", "HT", "1T", "14", "63",
687 "MKK", "2.4G", "20M", "HT", "1T", "14", "63",
688 "FCC", "2.4G", "20M", "HT", "2T", "01", "28",
689 "ETSI", "2.4G", "20M", "HT", "2T", "01", "30",
690 "MKK", "2.4G", "20M", "HT", "2T", "01", "30",
691 "FCC", "2.4G", "20M", "HT", "2T", "02", "28",
692 "ETSI", "2.4G", "20M", "HT", "2T", "02", "30",
693 "MKK", "2.4G", "20M", "HT", "2T", "02", "30",
694 "FCC", "2.4G", "20M", "HT", "2T", "03", "30",
695 "ETSI", "2.4G", "20M", "HT", "2T", "03", "30",
696 "MKK", "2.4G", "20M", "HT", "2T", "03", "30",
697 "FCC", "2.4G", "20M", "HT", "2T", "04", "30",
698 "ETSI", "2.4G", "20M", "HT", "2T", "04", "30",
699 "MKK", "2.4G", "20M", "HT", "2T", "04", "30",
700 "FCC", "2.4G", "20M", "HT", "2T", "05", "30",
701 "ETSI", "2.4G", "20M", "HT", "2T", "05", "30",
702 "MKK", "2.4G", "20M", "HT", "2T", "05", "30",
703 "FCC", "2.4G", "20M", "HT", "2T", "06", "30",
704 "ETSI", "2.4G", "20M", "HT", "2T", "06", "30",
705 "MKK", "2.4G", "20M", "HT", "2T", "06", "30",
706 "FCC", "2.4G", "20M", "HT", "2T", "07", "30",
707 "ETSI", "2.4G", "20M", "HT", "2T", "07", "30",
708 "MKK", "2.4G", "20M", "HT", "2T", "07", "30",
709 "FCC", "2.4G", "20M", "HT", "2T", "08", "30",
710 "ETSI", "2.4G", "20M", "HT", "2T", "08", "30",
711 "MKK", "2.4G", "20M", "HT", "2T", "08", "30",
712 "FCC", "2.4G", "20M", "HT", "2T", "09", "28",
713 "ETSI", "2.4G", "20M", "HT", "2T", "09", "30",
714 "MKK", "2.4G", "20M", "HT", "2T", "09", "30",
715 "FCC", "2.4G", "20M", "HT", "2T", "10", "28",
716 "ETSI", "2.4G", "20M", "HT", "2T", "10", "30",
717 "MKK", "2.4G", "20M", "HT", "2T", "10", "30",
718 "FCC", "2.4G", "20M", "HT", "2T", "11", "28",
719 "ETSI", "2.4G", "20M", "HT", "2T", "11", "30",
720 "MKK", "2.4G", "20M", "HT", "2T", "11", "30",
721 "FCC", "2.4G", "20M", "HT", "2T", "12", "63",
722 "ETSI", "2.4G", "20M", "HT", "2T", "12", "30",
723 "MKK", "2.4G", "20M", "HT", "2T", "12", "30",
724 "FCC", "2.4G", "20M", "HT", "2T", "13", "63",
725 "ETSI", "2.4G", "20M", "HT", "2T", "13", "30",
726 "MKK", "2.4G", "20M", "HT", "2T", "13", "30",
727 "FCC", "2.4G", "20M", "HT", "2T", "14", "63",
728 "ETSI", "2.4G", "20M", "HT", "2T", "14", "63",
729 "MKK", "2.4G", "20M", "HT", "2T", "14", "63",
730 "FCC", "2.4G", "40M", "HT", "1T", "01", "63",
731 "ETSI", "2.4G", "40M", "HT", "1T", "01", "63",
732 "MKK", "2.4G", "40M", "HT", "1T", "01", "63",
733 "FCC", "2.4G", "40M", "HT", "1T", "02", "63",
734 "ETSI", "2.4G", "40M", "HT", "1T", "02", "63",
735 "MKK", "2.4G", "40M", "HT", "1T", "02", "63",
736 "FCC", "2.4G", "40M", "HT", "1T", "03", "26",
737 "ETSI", "2.4G", "40M", "HT", "1T", "03", "26",
738 "MKK", "2.4G", "40M", "HT", "1T", "03", "26",
739 "FCC", "2.4G", "40M", "HT", "1T", "04", "26",
740 "ETSI", "2.4G", "40M", "HT", "1T", "04", "26",
741 "MKK", "2.4G", "40M", "HT", "1T", "04", "26",
742 "FCC", "2.4G", "40M", "HT", "1T", "05", "26",
743 "ETSI", "2.4G", "40M", "HT", "1T", "05", "26",
744 "MKK", "2.4G", "40M", "HT", "1T", "05", "26",
745 "FCC", "2.4G", "40M", "HT", "1T", "06", "26",
746 "ETSI", "2.4G", "40M", "HT", "1T", "06", "26",
747 "MKK", "2.4G", "40M", "HT", "1T", "06", "26",
748 "FCC", "2.4G", "40M", "HT", "1T", "07", "26",
749 "ETSI", "2.4G", "40M", "HT", "1T", "07", "26",
750 "MKK", "2.4G", "40M", "HT", "1T", "07", "26",
751 "FCC", "2.4G", "40M", "HT", "1T", "08", "26",
752 "ETSI", "2.4G", "40M", "HT", "1T", "08", "26",
753 "MKK", "2.4G", "40M", "HT", "1T", "08", "26",
754 "FCC", "2.4G", "40M", "HT", "1T", "09", "26",
755 "ETSI", "2.4G", "40M", "HT", "1T", "09", "26",
756 "MKK", "2.4G", "40M", "HT", "1T", "09", "26",
757 "FCC", "2.4G", "40M", "HT", "1T", "10", "24",
758 "ETSI", "2.4G", "40M", "HT", "1T", "10", "26",
759 "MKK", "2.4G", "40M", "HT", "1T", "10", "26",
760 "FCC", "2.4G", "40M", "HT", "1T", "11", "10",
761 "ETSI", "2.4G", "40M", "HT", "1T", "11", "26",
762 "MKK", "2.4G", "40M", "HT", "1T", "11", "26",
763 "FCC", "2.4G", "40M", "HT", "1T", "12", "63",
764 "ETSI", "2.4G", "40M", "HT", "1T", "12", "26",
765 "MKK", "2.4G", "40M", "HT", "1T", "12", "26",
766 "FCC", "2.4G", "40M", "HT", "1T", "13", "63",
767 "ETSI", "2.4G", "40M", "HT", "1T", "13", "26",
768 "MKK", "2.4G", "40M", "HT", "1T", "13", "26",
769 "FCC", "2.4G", "40M", "HT", "1T", "14", "63",
770 "ETSI", "2.4G", "40M", "HT", "1T", "14", "63",
771 "MKK", "2.4G", "40M", "HT", "1T", "14", "63",
772 "FCC", "2.4G", "40M", "HT", "2T", "01", "63",
773 "ETSI", "2.4G", "40M", "HT", "2T", "01", "63",
774 "MKK", "2.4G", "40M", "HT", "2T", "01", "63",
775 "FCC", "2.4G", "40M", "HT", "2T", "02", "63",
776 "ETSI", "2.4G", "40M", "HT", "2T", "02", "63",
777 "MKK", "2.4G", "40M", "HT", "2T", "02", "63",
778 "FCC", "2.4G", "40M", "HT", "2T", "03", "26",
779 "ETSI", "2.4G", "40M", "HT", "2T", "03", "26",
780 "MKK", "2.4G", "40M", "HT", "2T", "03", "26",
781 "FCC", "2.4G", "40M", "HT", "2T", "04", "26",
782 "ETSI", "2.4G", "40M", "HT", "2T", "04", "26",
783 "MKK", "2.4G", "40M", "HT", "2T", "04", "26",
784 "FCC", "2.4G", "40M", "HT", "2T", "05", "26",
785 "ETSI", "2.4G", "40M", "HT", "2T", "05", "26",
786 "MKK", "2.4G", "40M", "HT", "2T", "05", "26",
787 "FCC", "2.4G", "40M", "HT", "2T", "06", "26",
788 "ETSI", "2.4G", "40M", "HT", "2T", "06", "26",
789 "MKK", "2.4G", "40M", "HT", "2T", "06", "26",
790 "FCC", "2.4G", "40M", "HT", "2T", "07", "26",
791 "ETSI", "2.4G", "40M", "HT", "2T", "07", "26",
792 "MKK", "2.4G", "40M", "HT", "2T", "07", "26",
793 "FCC", "2.4G", "40M", "HT", "2T", "08", "26",
794 "ETSI", "2.4G", "40M", "HT", "2T", "08", "26",
795 "MKK", "2.4G", "40M", "HT", "2T", "08", "26",
796 "FCC", "2.4G", "40M", "HT", "2T", "09", "26",
797 "ETSI", "2.4G", "40M", "HT", "2T", "09", "26",
798 "MKK", "2.4G", "40M", "HT", "2T", "09", "26",
799 "FCC", "2.4G", "40M", "HT", "2T", "10", "26",
800 "ETSI", "2.4G", "40M", "HT", "2T", "10", "26",
801 "MKK", "2.4G", "40M", "HT", "2T", "10", "26",
802 "FCC", "2.4G", "40M", "HT", "2T", "11", "26",
803 "ETSI", "2.4G", "40M", "HT", "2T", "11", "26",
804 "MKK", "2.4G", "40M", "HT", "2T", "11", "26",
805 "FCC", "2.4G", "40M", "HT", "2T", "12", "63",
806 "ETSI", "2.4G", "40M", "HT", "2T", "12", "26",
807 "MKK", "2.4G", "40M", "HT", "2T", "12", "26",
808 "FCC", "2.4G", "40M", "HT", "2T", "13", "63",
809 "ETSI", "2.4G", "40M", "HT", "2T", "13", "26",
810 "MKK", "2.4G", "40M", "HT", "2T", "13", "26",
811 "FCC", "2.4G", "40M", "HT", "2T", "14", "63",
812 "ETSI", "2.4G", "40M", "HT", "2T", "14", "63",
813 "MKK", "2.4G", "40M", "HT", "2T", "14", "63"
814 };
815
816 void
odm_read_and_config_mp_8188f_txpwr_lmt(struct dm_struct * dm)817 odm_read_and_config_mp_8188f_txpwr_lmt(struct dm_struct *dm)
818 {
819 u32 i = 0;
820 #if (DM_ODM_SUPPORT_TYPE == ODM_IOT)
821 u32 array_len = sizeof(array_mp_8188f_txpwr_lmt) / sizeof(u8);
822 u8 *array = (u8 *)array_mp_8188f_txpwr_lmt;
823 #else
824 u32 array_len = sizeof(array_mp_8188f_txpwr_lmt) / sizeof(u8 *);
825 u8 **array = (u8 **)array_mp_8188f_txpwr_lmt;
826 #endif
827
828 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
829 void *adapter = dm->adapter;
830 HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
831
832 PlatformZeroMemory(hal_data->BufOfLinesPwrLmt, MAX_LINES_HWCONFIG_TXT * MAX_BYTES_LINE_HWCONFIG_TXT);
833 hal_data->nLinesReadPwrLmt = array_len / 7;
834 #endif
835
836 PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__);
837
838 for (i = 0; i < array_len; i += 7) {
839 #if (DM_ODM_SUPPORT_TYPE == ODM_IOT)
840 u8 regulation = array[i];
841 u8 band = array[i + 1];
842 u8 bandwidth = array[i + 2];
843 u8 rate = array[i + 3];
844 u8 rf_path = array[i + 4];
845 u8 chnl = array[i + 5];
846 u8 val = array[i + 6];
847 #else
848 u8 *regulation = array[i];
849 u8 *band = array[i + 1];
850 u8 *bandwidth = array[i + 2];
851 u8 *rate = array[i + 3];
852 u8 *rf_path = array[i + 4];
853 u8 *chnl = array[i + 5];
854 u8 *val = array[i + 6];
855 #endif
856
857 odm_config_bb_txpwr_lmt_8188f(dm, regulation, band, bandwidth, rate, rf_path, chnl, val);
858 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
859 rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",",
860 regulation, band, bandwidth, rate, rf_path, chnl, val);
861 #endif
862 }
863 }
864
865 #endif /* end of HWIMG_SUPPORT*/
866
867