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