xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8188fu/hal/phydm/rtl8188f/halhwimg8188f_bb.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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 *                           agc_tab.TXT
116 ******************************************************************************/
117 
118 u32 array_mp_8188f_agc_tab[] = {
119 		0xC78, 0xFC000001,
120 		0xC78, 0xFB010001,
121 		0xC78, 0xFA020001,
122 		0xC78, 0xF9030001,
123 		0xC78, 0xF8040001,
124 		0xC78, 0xF7050001,
125 		0xC78, 0xF6060001,
126 		0xC78, 0xF5070001,
127 		0xC78, 0xF4080001,
128 		0xC78, 0xF3090001,
129 		0xC78, 0xF20A0001,
130 		0xC78, 0xF10B0001,
131 		0xC78, 0xF00C0001,
132 		0xC78, 0xEF0D0001,
133 		0xC78, 0xEE0E0001,
134 		0xC78, 0xED0F0001,
135 		0xC78, 0xEC100001,
136 		0xC78, 0xEB110001,
137 		0xC78, 0xEA120001,
138 		0xC78, 0xE9130001,
139 		0xC78, 0xE8140001,
140 		0xC78, 0xE7150001,
141 		0xC78, 0xE6160001,
142 		0xC78, 0xE5170001,
143 		0xC78, 0xE4180001,
144 		0xC78, 0xE3190001,
145 		0xC78, 0xE21A0001,
146 		0xC78, 0xE11B0001,
147 		0xC78, 0xE01C0001,
148 		0xC78, 0xC21D0001,
149 		0xC78, 0xC11E0001,
150 		0xC78, 0xC01F0001,
151 		0xC78, 0xA5200001,
152 		0xC78, 0xA4210001,
153 		0xC78, 0xA3220001,
154 		0xC78, 0xA2230001,
155 		0xC78, 0xA1240001,
156 		0xC78, 0xA0250001,
157 		0xC78, 0x65260001,
158 		0xC78, 0x64270001,
159 		0xC78, 0x63280001,
160 		0xC78, 0x62290001,
161 		0xC78, 0x612A0001,
162 		0xC78, 0x442B0001,
163 		0xC78, 0x432C0001,
164 		0xC78, 0x422D0001,
165 		0xC78, 0x412E0001,
166 		0xC78, 0x402F0001,
167 		0xC78, 0x21300001,
168 		0xC78, 0x20310001,
169 		0xC78, 0x05320001,
170 		0xC78, 0x04330001,
171 		0xC78, 0x03340001,
172 		0xC78, 0x02350001,
173 		0xC78, 0x01360001,
174 		0xC78, 0x00370001,
175 		0xC78, 0x00380001,
176 		0xC78, 0x00390001,
177 		0xC78, 0x003A0001,
178 		0xC78, 0x003B0001,
179 		0xC78, 0x003C0001,
180 		0xC78, 0x003D0001,
181 		0xC78, 0x003E0001,
182 		0xC78, 0x003F0001,
183 		0xC50, 0x69553422,
184 		0xC50, 0x69553420,
185 
186 };
187 
188 void
odm_read_and_config_mp_8188f_agc_tab(struct dm_struct * dm)189 odm_read_and_config_mp_8188f_agc_tab(struct dm_struct *dm)
190 {
191 	u32	i = 0;
192 	u8	c_cond;
193 	boolean	is_matched = true, is_skipped = false;
194 	u32	array_len = sizeof(array_mp_8188f_agc_tab) / sizeof(u32);
195 	u32	*array = array_mp_8188f_agc_tab;
196 
197 	u32	v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
198 
199 	PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__);
200 
201 	while ((i + 1) < array_len) {
202 		v1 = array[i];
203 		v2 = array[i + 1];
204 
205 		if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/
206 			if (v1 & BIT(31)) {/* positive condition*/
207 				c_cond  = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
208 				if (c_cond == COND_ENDIF) {/*end*/
209 					is_matched = true;
210 					is_skipped = false;
211 					PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n");
212 				} else if (c_cond == COND_ELSE) { /*else*/
213 					is_matched = is_skipped ? false : true;
214 					PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n");
215 				} else {/*if , else if*/
216 					pre_v1 = v1;
217 					pre_v2 = v2;
218 					PHYDM_DBG(dm, ODM_COMP_INIT, "IF or ELSE IF\n");
219 				}
220 			} else if (v1 & BIT(30)) { /*negative condition*/
221 				if (is_skipped == false) {
222 					if (check_positive(dm, pre_v1, pre_v2, v1, v2)) {
223 						is_matched = true;
224 						is_skipped = true;
225 					} else {
226 						is_matched = false;
227 						is_skipped = false;
228 					}
229 				} else
230 					is_matched = false;
231 			}
232 		} else {
233 			if (is_matched)
234 				odm_config_bb_agc_8188f(dm, v1, MASKDWORD, v2);
235 		}
236 		i = i + 2;
237 	}
238 }
239 
240 u32
odm_get_version_mp_8188f_agc_tab(void)241 odm_get_version_mp_8188f_agc_tab(void)
242 {
243 		return 39;
244 }
245 
246 /******************************************************************************
247 *                           phy_reg.TXT
248 ******************************************************************************/
249 
250 u32 array_mp_8188f_phy_reg[] = {
251 		0x800, 0x80045700,
252 		0x804, 0x00000001,
253 		0x808, 0x0000FC00,
254 		0x80C, 0x0000000A,
255 		0x810, 0x10001331,
256 		0x814, 0x020C3D10,
257 		0x818, 0x00200385,
258 		0x81C, 0x00000000,
259 		0x820, 0x01000100,
260 		0x824, 0x00390204,
261 		0x828, 0x00000000,
262 		0x82C, 0x00000000,
263 		0x830, 0x00000000,
264 		0x834, 0x00000000,
265 		0x838, 0x00000000,
266 		0x83C, 0x00000000,
267 		0x840, 0x00010000,
268 		0x844, 0x00000000,
269 		0x848, 0x00000000,
270 		0x84C, 0x00000000,
271 		0x850, 0x00030000,
272 		0x854, 0x00000000,
273 		0x858, 0x569A569A,
274 		0x85C, 0x569A569A,
275 		0x860, 0x00000130,
276 		0x864, 0x00000000,
277 		0x868, 0x00000000,
278 		0x86C, 0x27272700,
279 		0x870, 0x00000000,
280 		0x874, 0x25004000,
281 		0x878, 0x00000808,
282 		0x87C, 0x004F0201,
283 		0x880, 0xB0000B1E,
284 		0x884, 0x00000007,
285 		0x888, 0x00000000,
286 		0x88C, 0xCCC000C0,
287 		0x890, 0x00000800,
288 		0x894, 0xFFFFFFFE,
289 		0x898, 0x40302010,
290 		0x89C, 0x00706050,
291 		0x900, 0x00000000,
292 		0x904, 0x00000023,
293 		0x908, 0x00000000,
294 		0x90C, 0x81121111,
295 		0x910, 0x00000002,
296 		0x914, 0x00000201,
297 		0x948, 0x99000000,
298 		0x94C, 0x00000010,
299 		0x950, 0x20003000,
300 		0x954, 0x4A880000,
301 		0x958, 0x4BC5D87A,
302 		0x95C, 0x04EB9B79,
303 		0x96C, 0x00000003,
304 		0xA00, 0x00D046C8,
305 		0xA04, 0x80FF800C,
306 	0x80000400,	0x00000000,	0x40000000,	0x00000000,
307 		0xA08, 0x8C038300,
308 	0xA0000000,	0x00000000,
309 		0xA08, 0x8C898300,
310 	0xB0000000,	0x00000000,
311 		0xA0C, 0x2E7F120F,
312 		0xA10, 0x9500BB78,
313 		0xA14, 0x1114D028,
314 		0xA18, 0x00881117,
315 		0xA1C, 0x89140F00,
316 		0xA20, 0xD1D80000,
317 		0xA24, 0x5A7DA0BD,
318 		0xA28, 0x0000223B,
319 		0xA2C, 0x00D30000,
320 		0xA70, 0x101FBF00,
321 		0xA74, 0x00000007,
322 	0x80000400,	0x00000000,	0x40000000,	0x00000000,
323 		0xA78, 0x00008900,
324 	0xA0000000,	0x00000000,
325 		0xA78, 0x00000900,
326 	0xB0000000,	0x00000000,
327 		0xA7C, 0x225B0606,
328 		0xA80, 0x218075B1,
329 		0xA84, 0x00120000,
330 		0xA88, 0x040C0000,
331 		0xA8C, 0x12345678,
332 		0xA90, 0xABCDEF00,
333 		0xA94, 0x001B1B89,
334 		0xA98, 0x05100000,
335 		0xA9C, 0x3F000000,
336 		0xAA0, 0x00000000,
337 		0xB2C, 0x00000000,
338 		0xC00, 0x48071D40,
339 		0xC04, 0x03A05611,
340 		0xC08, 0x000000E4,
341 		0xC0C, 0x6C6C6C6C,
342 		0xC10, 0x18800000,
343 		0xC14, 0x40000100,
344 		0xC18, 0x08800000,
345 		0xC1C, 0x40000100,
346 		0xC20, 0x00000000,
347 		0xC24, 0x00000000,
348 		0xC28, 0x00000000,
349 		0xC2C, 0x00000000,
350 		0xC30, 0x69E9CC4A,
351 		0xC34, 0x31000040,
352 		0xC38, 0x21688080,
353 		0xC3C, 0x00001714,
354 		0xC40, 0x1F78403F,
355 		0xC44, 0x00010036,
356 		0xC48, 0xEC020107,
357 		0xC4C, 0x007F037F,
358 		0xC50, 0x69553420,
359 		0xC54, 0x43BC0094,
360 		0xC58, 0x00013169,
361 		0xC5C, 0x00250492,
362 		0xC60, 0x00000000,
363 		0xC64, 0x7112848B,
364 		0xC68, 0x47C07BFF,
365 		0xC6C, 0x00000036,
366 		0xC70, 0x2C7F000D,
367 		0xC74, 0x020600DB,
368 		0xC78, 0x0000001F,
369 		0xC7C, 0x00B91612,
370 		0xC80, 0x390000E4,
371 	0x80000400,	0x00000000,	0x40000000,	0x00000000,
372 		0xC84, 0x21F60000,
373 	0xA0000000,	0x00000000,
374 		0xC84, 0x11F60000,
375 	0xB0000000,	0x00000000,
376 		0xC88, 0x40000100,
377 		0xC8C, 0x20200000,
378 		0xC90, 0x00091521,
379 		0xC94, 0x00000000,
380 		0xC98, 0x00121820,
381 		0xC9C, 0x00007F7F,
382 		0xCA0, 0x00000000,
383 		0xCA4, 0x000300A0,
384 		0xCA8, 0x00000000,
385 		0xCAC, 0x00000000,
386 		0xCB0, 0x00000000,
387 		0xCB4, 0x00000000,
388 		0xCB8, 0x00000000,
389 		0xCBC, 0x28000000,
390 		0xCC0, 0x00000000,
391 		0xCC4, 0x00000000,
392 		0xCC8, 0x00000000,
393 		0xCCC, 0x00000000,
394 		0xCD0, 0x00000000,
395 		0xCD4, 0x00000000,
396 		0xCD8, 0x64B22427,
397 		0xCDC, 0x00766932,
398 		0xCE0, 0x00222222,
399 		0xCE4, 0x10000000,
400 		0xCE8, 0x37644302,
401 		0xCEC, 0x2F97D40C,
402 		0xD00, 0x04030740,
403 		0xD04, 0x40020401,
404 		0xD08, 0x0000907F,
405 		0xD0C, 0x20010201,
406 		0xD10, 0xA0633333,
407 		0xD14, 0x3333BC53,
408 		0xD18, 0x7A8F5B6F,
409 		0xD2C, 0xCB979975,
410 		0xD30, 0x00000000,
411 		0xD34, 0x40608000,
412 		0xD38, 0x98000000,
413 		0xD3C, 0x40127353,
414 		0xD40, 0x00000000,
415 		0xD44, 0x00000000,
416 		0xD48, 0x00000000,
417 		0xD4C, 0x00000000,
418 		0xD50, 0x6437140A,
419 		0xD54, 0x00000000,
420 		0xD58, 0x00000282,
421 		0xD5C, 0x30032064,
422 		0xD60, 0x4653DE68,
423 		0xD64, 0x04518A3C,
424 		0xD68, 0x00002101,
425 		0xD6C, 0x2A201C16,
426 		0xD70, 0x1812362E,
427 		0xD74, 0x322C2220,
428 		0xD78, 0x000E3C24,
429 		0xE00, 0x2D2D2D2D,
430 		0xE04, 0x2D2D2D2D,
431 		0xE08, 0x0390272D,
432 		0xE10, 0x2D2D2D2D,
433 		0xE14, 0x2D2D2D2D,
434 		0xE18, 0x2D2D2D2D,
435 		0xE1C, 0x2D2D2D2D,
436 		0xE28, 0x00000000,
437 		0xE30, 0x1000DC1F,
438 		0xE34, 0x10008C1F,
439 		0xE38, 0x02140102,
440 		0xE3C, 0x681604C2,
441 		0xE40, 0x01007C00,
442 		0xE44, 0x01004800,
443 		0xE48, 0xFB000000,
444 		0xE4C, 0x000028D1,
445 		0xE50, 0x1000DC1F,
446 		0xE54, 0x10008C1F,
447 		0xE58, 0x02140102,
448 		0xE5C, 0x28160D05,
449 		0xE60, 0x00000008,
450 		0xE60, 0x021400A0,
451 		0xE64, 0x281600A0,
452 		0xE6C, 0x01C00010,
453 		0xE70, 0x01C00010,
454 		0xE74, 0x02000010,
455 		0xE78, 0x02000010,
456 		0xE7C, 0x02000010,
457 		0xE80, 0x02000010,
458 		0xE84, 0x01C00010,
459 		0xE88, 0x02000010,
460 		0xE8C, 0x01C00010,
461 		0xED0, 0x01C00010,
462 		0xED4, 0x01C00010,
463 		0xED8, 0x01C00010,
464 		0xEDC, 0x00000010,
465 		0xEE0, 0x00000010,
466 		0xEEC, 0x03C00010,
467 		0xF14, 0x00000003,
468 		0xF4C, 0x00000000,
469 		0xF00, 0x00000300,
470 
471 };
472 
473 void
odm_read_and_config_mp_8188f_phy_reg(struct dm_struct * dm)474 odm_read_and_config_mp_8188f_phy_reg(struct dm_struct *dm)
475 {
476 	u32	i = 0;
477 	u8	c_cond;
478 	boolean	is_matched = true, is_skipped = false;
479 	u32	array_len = sizeof(array_mp_8188f_phy_reg) / sizeof(u32);
480 	u32	*array = array_mp_8188f_phy_reg;
481 
482 	u32	v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
483 
484 	PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__);
485 
486 	while ((i + 1) < array_len) {
487 		v1 = array[i];
488 		v2 = array[i + 1];
489 
490 		if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/
491 			if (v1 & BIT(31)) {/* positive condition*/
492 				c_cond  = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
493 				if (c_cond == COND_ENDIF) {/*end*/
494 					is_matched = true;
495 					is_skipped = false;
496 					PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n");
497 				} else if (c_cond == COND_ELSE) { /*else*/
498 					is_matched = is_skipped ? false : true;
499 					PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n");
500 				} else {/*if , else if*/
501 					pre_v1 = v1;
502 					pre_v2 = v2;
503 					PHYDM_DBG(dm, ODM_COMP_INIT, "IF or ELSE IF\n");
504 				}
505 			} else if (v1 & BIT(30)) { /*negative condition*/
506 				if (is_skipped == false) {
507 					if (check_positive(dm, pre_v1, pre_v2, v1, v2)) {
508 						is_matched = true;
509 						is_skipped = true;
510 					} else {
511 						is_matched = false;
512 						is_skipped = false;
513 					}
514 				} else
515 					is_matched = false;
516 			}
517 		} else {
518 			if (is_matched)
519 				odm_config_bb_phy_8188f(dm, v1, MASKDWORD, v2);
520 		}
521 		i = i + 2;
522 	}
523 }
524 
525 u32
odm_get_version_mp_8188f_phy_reg(void)526 odm_get_version_mp_8188f_phy_reg(void)
527 {
528 		return 39;
529 }
530 
531 /******************************************************************************
532 *                           phy_reg_pg.TXT
533 ******************************************************************************/
534 
535 u32 array_mp_8188f_phy_reg_pg[] = {
536 	0, 0, 0, 0x00000e08, 0x0000ff00, 0x00004000,
537 	0, 0, 0, 0x0000086c, 0xffffff00, 0x32363800,
538 	0, 0, 0, 0x00000e00, 0xffffffff, 0x34363636,
539 	0, 0, 0, 0x00000e04, 0xffffffff, 0x28303234,
540 	0, 0, 0, 0x00000e10, 0xffffffff, 0x30343434,
541 	0, 0, 0, 0x00000e14, 0xffffffff, 0x26262830
542 };
543 
544 void
odm_read_and_config_mp_8188f_phy_reg_pg(struct dm_struct * dm)545 odm_read_and_config_mp_8188f_phy_reg_pg(struct dm_struct *dm)
546 {
547 	u32	i = 0;
548 	u32	array_len = sizeof(array_mp_8188f_phy_reg_pg) / sizeof(u32);
549 	u32	*array = array_mp_8188f_phy_reg_pg;
550 
551 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
552 	void	*adapter = dm->adapter;
553 	HAL_DATA_TYPE	*hal_data = GET_HAL_DATA(((PADAPTER)adapter));
554 
555 	PlatformZeroMemory(hal_data->BufOfLinesPwrByRate, MAX_LINES_HWCONFIG_TXT * MAX_BYTES_LINE_HWCONFIG_TXT);
556 	hal_data->nLinesReadPwrByRate = array_len / 6;
557 #endif
558 
559 	PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__);
560 
561 	dm->phy_reg_pg_version = 1;
562 	dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE;
563 
564 	for (i = 0; i < array_len; i += 6) {
565 		u32	v1 = array[i];
566 		u32	v2 = array[i + 1];
567 		u32	v3 = array[i + 2];
568 		u32	v4 = array[i + 3];
569 		u32	v5 = array[i + 4];
570 		u32	v6 = array[i + 5];
571 
572 		odm_config_bb_phy_reg_pg_8188f(dm, v1, v2, v3, v4, v5, v6);
573 
574 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
575 	rsprintf((char *)hal_data->BufOfLinesPwrByRate[i / 6], 100, "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,",
576 		(v1 == 0 ? "2.4G" : "  5G"), (v2 == 0 ? "A" : "B"), (v3 == 0 ? "1Tx" : "2Tx"), v4, v5, v6);
577 #endif
578 	}
579 }
580 
581 
582 
583 #endif /* end of HWIMG_SUPPORT*/
584 
585