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