net: wireless: rockchip_wlan: add rtl8723ds support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723ds / hal / phydm / rtl8723d / halhwimg8723d_bb.c
1 /****************************************************************************** \r
2\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. \r
4\r
5 * This program is free software; you can redistribute it and/or modify it \r
6 * under the terms of version 2 of the GNU General Public License as \r
7 * published by the Free Software Foundation. \r
8\r
9 * This program is distributed in the hope that it will be useful, but WITHOUT \r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or \r
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for \r
12 * more details. \r
13\r
14 * You should have received a copy of the GNU General Public License along with \r
15 * this program; if not, write to the Free Software Foundation, Inc., \r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA \r
17\r
18\r
19 ******************************************************************************/\r
20 \r
21 /*Image2HeaderVersion: 2.26*/\r
22 #include "mp_precomp.h"\r
23 #include "../phydm_precomp.h"\r
24 \r
25 #if (RTL8723D_SUPPORT == 1)\r
26 static BOOLEAN\r
27 CheckPositive(\r
28         IN  PDM_ODM_T     pDM_Odm,\r
29         IN  const u4Byte  Condition1,\r
30         IN  const u4Byte  Condition2,\r
31         IN      const u4Byte  Condition3,\r
32         IN      const u4Byte  Condition4\r
33 )\r
34 {\r
35         u1Byte    _BoardType = ((pDM_Odm->BoardType & BIT4) >> 4) << 0 | /* _GLNA*/\r
36                                 ((pDM_Odm->BoardType & BIT3) >> 3) << 1 | /* _GPA*/ \r
37                                 ((pDM_Odm->BoardType & BIT7) >> 7) << 2 | /* _ALNA*/\r
38                                 ((pDM_Odm->BoardType & BIT6) >> 6) << 3 | /* _APA */\r
39                                 ((pDM_Odm->BoardType & BIT2) >> 2) << 4 | /* _BT*/  \r
40                                 ((pDM_Odm->BoardType & BIT1) >> 1) << 5;  /* _NGFF*/  \r
41 \r
42         u4Byte  cond1   = Condition1, cond2 = Condition2, cond3 = Condition3, cond4 = Condition4;\r
43 \r
44         u1Byte  cut_version_for_para   = (pDM_Odm->CutVersion == ODM_CUT_A) ? 15 : pDM_Odm->CutVersion;\r
45         u1Byte  pkg_type_for_para   = (pDM_Odm->PackageType == 0) ? 15 : pDM_Odm->PackageType;\r
46 \r
47         u4Byte    driver1 = cut_version_for_para       << 24 | \r
48                                 (pDM_Odm->SupportInterface & 0xF0) << 16 | \r
49                                 pDM_Odm->SupportPlatform  << 16 | \r
50                                 pkg_type_for_para      << 12 | \r
51                                 (pDM_Odm->SupportInterface & 0x0F) << 8  |\r
52                                 _BoardType;\r
53 \r
54         u4Byte    driver2 = (pDM_Odm->TypeGLNA & 0xFF) <<  0 |  \r
55                                 (pDM_Odm->TypeGPA & 0xFF)  <<  8 | \r
56                                 (pDM_Odm->TypeALNA & 0xFF) << 16 | \r
57                                 (pDM_Odm->TypeAPA & 0xFF)  << 24; \r
58 \r
59 u4Byte    driver3 = 0;\r
60 \r
61         u4Byte    driver4 = (pDM_Odm->TypeGLNA & 0xFF00) >>  8 |\r
62                                 (pDM_Odm->TypeGPA & 0xFF00) |\r
63                                 (pDM_Odm->TypeALNA & 0xFF00) << 8 |\r
64                                 (pDM_Odm->TypeAPA & 0xFF00)  << 16;\r
65 \r
66         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
67         ("===> CheckPositive (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", cond1, cond2, cond3, cond4));\r
68         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
69         ("===> CheckPositive (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", driver1, driver2, driver3, driver4));\r
70 \r
71         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
72         ("      (Platform, Interface) = (0x%X, 0x%X)\n", pDM_Odm->SupportPlatform, pDM_Odm->SupportInterface));\r
73         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
74         ("      (Board, Package) = (0x%X, 0x%X)\n", pDM_Odm->BoardType, pDM_Odm->PackageType));\r
75 \r
76 \r
77         /*============== Value Defined Check ===============*/\r
78         /*QFN Type [15:12] and Cut Version [27:24] need to do value check*/\r
79         \r
80         if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))\r
81                 return FALSE;\r
82         if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))\r
83                 return FALSE;\r
84 \r
85         /*=============== Bit Defined Check ================*/\r
86         /* We don't care [31:28] */\r
87 \r
88         cond1   &= 0x00FF0FFF; \r
89         driver1 &= 0x00FF0FFF; \r
90 \r
91         if ((cond1 & driver1) == cond1) {\r
92                 u4Byte bitMask = 0;\r
93 \r
94                 if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE*/\r
95                         return TRUE;\r
96 \r
97                 if ((cond1 & BIT0) != 0) /*GLNA*/\r
98                         bitMask |= 0x000000FF;\r
99                 if ((cond1 & BIT1) != 0) /*GPA*/\r
100                         bitMask |= 0x0000FF00;\r
101                 if ((cond1 & BIT2) != 0) /*ALNA*/\r
102                         bitMask |= 0x00FF0000;\r
103                 if ((cond1 & BIT3) != 0) /*APA*/\r
104                         bitMask |= 0xFF000000;\r
105 \r
106                 if (((cond2 & bitMask) == (driver2 & bitMask)) && ((cond4 & bitMask) == (driver4 & bitMask)))  /* BoardType of each RF path is matched*/\r
107                         return TRUE;\r
108                 else\r
109                         return FALSE;\r
110         } else\r
111                 return FALSE;\r
112 }\r
113 static BOOLEAN\r
114 CheckNegative(\r
115         IN  PDM_ODM_T     pDM_Odm,\r
116         IN  const u4Byte  Condition1,\r
117         IN  const u4Byte  Condition2\r
118 )\r
119 {\r
120         return TRUE;\r
121 }\r
122 \r
123 /******************************************************************************\r
124 *                           AGC_TAB.TXT\r
125 ******************************************************************************/\r
126 \r
127 u4Byte Array_MP_8723D_AGC_TAB[] = { \r
128                 0xC78, 0xFE000101,\r
129                 0xC78, 0xFD010101,\r
130                 0xC78, 0xFC020101,\r
131                 0xC78, 0xFB030101,\r
132                 0xC78, 0xFA040101,\r
133                 0xC78, 0xF9050101,\r
134                 0xC78, 0xF8060101,\r
135                 0xC78, 0xF7070101,\r
136                 0xC78, 0xF6080101,\r
137                 0xC78, 0xF5090101,\r
138                 0xC78, 0xF40A0101,\r
139                 0xC78, 0xF30B0101,\r
140                 0xC78, 0xF20C0101,\r
141                 0xC78, 0xF10D0101,\r
142                 0xC78, 0xF00E0101,\r
143                 0xC78, 0xEF0F0101,\r
144                 0xC78, 0xEE100101,\r
145                 0xC78, 0xED110101,\r
146                 0xC78, 0xEC120101,\r
147                 0xC78, 0xEB130101,\r
148                 0xC78, 0xEA140101,\r
149                 0xC78, 0xE9150101,\r
150                 0xC78, 0xE8160101,\r
151                 0xC78, 0xE7170101,\r
152                 0xC78, 0xE6180101,\r
153                 0xC78, 0xE5190101,\r
154                 0xC78, 0xE41A0101,\r
155                 0xC78, 0xE31B0101,\r
156                 0xC78, 0xE21C0101,\r
157                 0xC78, 0xE11D0101,\r
158                 0xC78, 0xE01E0101,\r
159                 0xC78, 0x861F0101,\r
160                 0xC78, 0x85200101,\r
161                 0xC78, 0x84210101,\r
162                 0xC78, 0x83220101,\r
163                 0xC78, 0x82230101,\r
164                 0xC78, 0x81240101,\r
165                 0xC78, 0x80250101,\r
166                 0xC78, 0x44260101,\r
167                 0xC78, 0x43270101,\r
168                 0xC78, 0x42280101,\r
169                 0xC78, 0x41290101,\r
170                 0xC78, 0x402A0101,\r
171                 0xC78, 0x022B0101,\r
172                 0xC78, 0x012C0101,\r
173                 0xC78, 0x002D0101,\r
174                 0xC78, 0xC52E0001,\r
175                 0xC78, 0xC42F0001,\r
176                 0xC78, 0xC3300001,\r
177                 0xC78, 0xC2310001,\r
178                 0xC78, 0xC1320001,\r
179                 0xC78, 0xC0330001,\r
180                 0xC78, 0x04340001,\r
181                 0xC78, 0x03350001,\r
182                 0xC78, 0x02360001,\r
183                 0xC78, 0x01370001,\r
184                 0xC78, 0x00380001,\r
185                 0xC78, 0x00390001,\r
186                 0xC78, 0x003A0001,\r
187                 0xC78, 0x003B0001,\r
188                 0xC78, 0x003C0001,\r
189                 0xC78, 0x003D0001,\r
190                 0xC78, 0x003E0001,\r
191                 0xC78, 0x003F0001,\r
192                 0xC78, 0x6F002001,\r
193                 0xC78, 0x6F012001,\r
194                 0xC78, 0x6F022001,\r
195                 0xC78, 0x6F032001,\r
196                 0xC78, 0x6F042001,\r
197                 0xC78, 0x6F052001,\r
198                 0xC78, 0x6F062001,\r
199                 0xC78, 0x6F072001,\r
200                 0xC78, 0x6F082001,\r
201                 0xC78, 0x6F092001,\r
202                 0xC78, 0x6F0A2001,\r
203                 0xC78, 0x6F0B2001,\r
204                 0xC78, 0x6F0C2001,\r
205                 0xC78, 0x6F0D2001,\r
206                 0xC78, 0x6F0E2001,\r
207                 0xC78, 0x6F0F2001,\r
208                 0xC78, 0x6F102001,\r
209                 0xC78, 0x6F112001,\r
210                 0xC78, 0x6F122001,\r
211                 0xC78, 0x6F132001,\r
212                 0xC78, 0x6F142001,\r
213                 0xC78, 0x6F152001,\r
214                 0xC78, 0x6F162001,\r
215                 0xC78, 0x6F172001,\r
216                 0xC78, 0x6F182001,\r
217                 0xC78, 0x6F192001,\r
218                 0xC78, 0x6F1A2001,\r
219                 0xC78, 0x6F1B2001,\r
220                 0xC78, 0x6F1C2001,\r
221                 0xC78, 0x6F1D2001,\r
222                 0xC78, 0x6F1E2001,\r
223                 0xC78, 0x6F1F2001,\r
224                 0xC78, 0x6F202001,\r
225                 0xC78, 0x6F212001,\r
226                 0xC78, 0x6F222001,\r
227                 0xC78, 0x6F232001,\r
228                 0xC78, 0x6E242001,\r
229                 0xC78, 0x6D252001,\r
230                 0xC78, 0x6C262001,\r
231                 0xC78, 0x6B272001,\r
232                 0xC78, 0x6A282001,\r
233                 0xC78, 0x69292001,\r
234                 0xC78, 0x4B2A2001,\r
235                 0xC78, 0x4A2B2001,\r
236                 0xC78, 0x492C2001,\r
237                 0xC78, 0x482D2001,\r
238                 0xC78, 0x472E2001,\r
239                 0xC78, 0x462F2001,\r
240                 0xC78, 0x45302001,\r
241                 0xC78, 0x44312001,\r
242                 0xC78, 0x43322001,\r
243                 0xC78, 0x42332001,\r
244                 0xC78, 0x41342001,\r
245                 0xC78, 0x40352001,\r
246                 0xC78, 0x02362001,\r
247                 0xC78, 0x01372001,\r
248                 0xC78, 0x00382001,\r
249                 0xC78, 0x00392001,\r
250                 0xC78, 0x003A2001,\r
251                 0xC78, 0x003B2001,\r
252                 0xC78, 0x003C2001,\r
253                 0xC78, 0x003D2001,\r
254                 0xC78, 0x003E2001,\r
255                 0xC78, 0x003F2001,\r
256                 0xC78, 0x7F003101,\r
257                 0xC78, 0x7F013101,\r
258                 0xC78, 0x7F023101,\r
259                 0xC78, 0x7F033101,\r
260                 0xC78, 0x7F043101,\r
261                 0xC78, 0x7F053101,\r
262                 0xC78, 0x7F063101,\r
263                 0xC78, 0x7F073101,\r
264                 0xC78, 0x7E083101,\r
265                 0xC78, 0x7D093101,\r
266                 0xC78, 0x7C0A3101,\r
267                 0xC78, 0x7B0B3101,\r
268                 0xC78, 0x7A0C3101,\r
269                 0xC78, 0x790D3101,\r
270                 0xC78, 0x780E3101,\r
271                 0xC78, 0x770F3101,\r
272                 0xC78, 0x76103101,\r
273                 0xC78, 0x75113101,\r
274                 0xC78, 0x74123101,\r
275                 0xC78, 0x73133101,\r
276                 0xC78, 0x72143101,\r
277                 0xC78, 0x71153101,\r
278                 0xC78, 0x70163101,\r
279                 0xC78, 0x6F173101,\r
280                 0xC78, 0x6E183101,\r
281                 0xC78, 0x6D193101,\r
282                 0xC78, 0x6C1A3101,\r
283                 0xC78, 0x6B1B3101,\r
284                 0xC78, 0x6A1C3101,\r
285                 0xC78, 0x691D3101,\r
286                 0xC78, 0x681E3101,\r
287                 0xC78, 0x4B1F3101,\r
288                 0xC78, 0x4A203101,\r
289                 0xC78, 0x49213101,\r
290                 0xC78, 0x48223101,\r
291                 0xC78, 0x47233101,\r
292                 0xC78, 0x46243101,\r
293                 0xC78, 0x45253101,\r
294                 0xC78, 0x44263101,\r
295                 0xC78, 0x43273101,\r
296                 0xC78, 0x42283101,\r
297                 0xC78, 0x41293101,\r
298                 0xC78, 0x402A3101,\r
299                 0xC78, 0x022B3101,\r
300                 0xC78, 0x012C3101,\r
301                 0xC78, 0x002D3101,\r
302                 0xC78, 0x002E3101,\r
303                 0xC78, 0x002F3101,\r
304                 0xC78, 0x00303101,\r
305                 0xC78, 0x00313101,\r
306                 0xC78, 0x00323101,\r
307                 0xC78, 0x00333101,\r
308                 0xC78, 0x00343101,\r
309                 0xC78, 0x00353101,\r
310                 0xC78, 0x00363101,\r
311                 0xC78, 0x00373101,\r
312                 0xC78, 0x00383101,\r
313                 0xC78, 0x00393101,\r
314                 0xC78, 0x003A3101,\r
315                 0xC78, 0x003B3101,\r
316                 0xC78, 0x003C3101,\r
317                 0xC78, 0x003D3101,\r
318                 0xC78, 0x003E3101,\r
319                 0xC78, 0x003F3101,\r
320                 0xC78, 0xFE403101,\r
321                 0xC78, 0xFD413101,\r
322                 0xC78, 0xFC423101,\r
323                 0xC78, 0xFB433101,\r
324                 0xC78, 0xFA443101,\r
325                 0xC78, 0xF9453101,\r
326                 0xC78, 0xF8463101,\r
327                 0xC78, 0xF7473101,\r
328                 0xC78, 0xF6483101,\r
329                 0xC78, 0xF5493101,\r
330                 0xC78, 0xF44A3101,\r
331                 0xC78, 0xF34B3101,\r
332                 0xC78, 0xF24C3101,\r
333                 0xC78, 0xF14D3101,\r
334                 0xC78, 0xF04E3101,\r
335                 0xC78, 0xEF4F3101,\r
336                 0xC78, 0xEE503101,\r
337                 0xC78, 0xED513101,\r
338                 0xC78, 0xEC523101,\r
339                 0xC78, 0xEB533101,\r
340                 0xC78, 0xEA543101,\r
341                 0xC78, 0xE9553101,\r
342                 0xC78, 0xE8563101,\r
343                 0xC78, 0xE7573101,\r
344                 0xC78, 0xE6583101,\r
345                 0xC78, 0xE5593101,\r
346                 0xC78, 0xE45A3101,\r
347                 0xC78, 0xE35B3101,\r
348                 0xC78, 0xE25C3101,\r
349                 0xC78, 0xE15D3101,\r
350                 0xC78, 0xE05E3101,\r
351                 0xC78, 0x865F3101,\r
352                 0xC78, 0x85603101,\r
353                 0xC78, 0x84613101,\r
354                 0xC78, 0x83623101,\r
355                 0xC78, 0x82633101,\r
356                 0xC78, 0x81643101,\r
357                 0xC78, 0x80653101,\r
358                 0xC78, 0x80663101,\r
359                 0xC78, 0x80673101,\r
360                 0xC78, 0x80683101,\r
361                 0xC78, 0x80693101,\r
362                 0xC78, 0x806A3101,\r
363                 0xC78, 0x806B3101,\r
364                 0xC78, 0x806C3101,\r
365                 0xC78, 0x806D3101,\r
366                 0xC78, 0x806E3101,\r
367                 0xC78, 0x806F3101,\r
368                 0xC78, 0x80703101,\r
369                 0xC78, 0x80713101,\r
370                 0xC78, 0x80723101,\r
371                 0xC78, 0x80733101,\r
372                 0xC78, 0x80743101,\r
373                 0xC78, 0x80753101,\r
374                 0xC78, 0x80763101,\r
375                 0xC78, 0x80773101,\r
376                 0xC78, 0x80783101,\r
377                 0xC78, 0x80793101,\r
378                 0xC78, 0x807A3101,\r
379                 0xC78, 0x807B3101,\r
380                 0xC78, 0x807C3101,\r
381                 0xC78, 0x807D3101,\r
382                 0xC78, 0x807E3101,\r
383                 0xC78, 0x807F3101,\r
384                 0xC78, 0xEF402001,\r
385                 0xC78, 0xEF412001,\r
386                 0xC78, 0xEF422001,\r
387                 0xC78, 0xEF432001,\r
388                 0xC78, 0xEF442001,\r
389                 0xC78, 0xEF452001,\r
390                 0xC78, 0xEF462001,\r
391                 0xC78, 0xEF472001,\r
392                 0xC78, 0xEF482001,\r
393                 0xC78, 0xEF492001,\r
394                 0xC78, 0xEF4A2001,\r
395                 0xC78, 0xEF4B2001,\r
396                 0xC78, 0xEF4C2001,\r
397                 0xC78, 0xEF4D2001,\r
398                 0xC78, 0xEF4E2001,\r
399                 0xC78, 0xEF4F2001,\r
400                 0xC78, 0xEF502001,\r
401                 0xC78, 0xEF512001,\r
402                 0xC78, 0xEF522001,\r
403                 0xC78, 0xEF532001,\r
404                 0xC78, 0xEF542001,\r
405                 0xC78, 0xEF552001,\r
406                 0xC78, 0xEF562001,\r
407                 0xC78, 0xEF572001,\r
408                 0xC78, 0xEF582001,\r
409                 0xC78, 0xEF592001,\r
410                 0xC78, 0xEF5A2001,\r
411                 0xC78, 0xEF5B2001,\r
412                 0xC78, 0xEF5C2001,\r
413                 0xC78, 0xEF5D2001,\r
414                 0xC78, 0xEF5E2001,\r
415                 0xC78, 0xEF5F2001,\r
416                 0xC78, 0xEF602001,\r
417                 0xC78, 0xEE612001,\r
418                 0xC78, 0xED622001,\r
419                 0xC78, 0xEC632001,\r
420                 0xC78, 0xEB642001,\r
421                 0xC78, 0xEA652001,\r
422                 0xC78, 0xE9662001,\r
423                 0xC78, 0xE8672001,\r
424                 0xC78, 0xCB682001,\r
425                 0xC78, 0xCA692001,\r
426                 0xC78, 0xC96A2001,\r
427                 0xC78, 0xC86B2001,\r
428                 0xC78, 0xC76C2001,\r
429                 0xC78, 0xC66D2001,\r
430                 0xC78, 0xC56E2001,\r
431                 0xC78, 0xC46F2001,\r
432                 0xC78, 0xC3702001,\r
433                 0xC78, 0xC2712001,\r
434                 0xC78, 0xC1722001,\r
435                 0xC78, 0xC0732001,\r
436                 0xC78, 0x82742001,\r
437                 0xC78, 0x81752001,\r
438                 0xC78, 0x80762001,\r
439                 0xC78, 0x80772001,\r
440                 0xC78, 0x80782001,\r
441                 0xC78, 0x80792001,\r
442                 0xC78, 0x807A2001,\r
443                 0xC78, 0x807B2001,\r
444                 0xC78, 0x807C2001,\r
445                 0xC78, 0x807D2001,\r
446                 0xC78, 0x807E2001,\r
447                 0xC78, 0x807F2001,\r
448                 0xC78, 0xFA001101,\r
449                 0xC78, 0xF9011101,\r
450                 0xC78, 0xF8021101,\r
451                 0xC78, 0xF7031101,\r
452                 0xC78, 0xF6041101,\r
453                 0xC78, 0xF5051101,\r
454                 0xC78, 0xF4061101,\r
455                 0xC78, 0xD7071101,\r
456                 0xC78, 0xD6081101,\r
457                 0xC78, 0xD5091101,\r
458                 0xC78, 0xD40A1101,\r
459                 0xC78, 0x970B1101,\r
460                 0xC78, 0x960C1101,\r
461                 0xC78, 0x950D1101,\r
462                 0xC78, 0x940E1101,\r
463                 0xC78, 0x930F1101,\r
464                 0xC78, 0x92101101,\r
465                 0xC78, 0x91111101,\r
466                 0xC78, 0x90121101,\r
467                 0xC78, 0x8F131101,\r
468                 0xC78, 0x8E141101,\r
469                 0xC78, 0x8D151101,\r
470                 0xC78, 0x8C161101,\r
471                 0xC78, 0x8B171101,\r
472                 0xC78, 0x8A181101,\r
473                 0xC78, 0x89191101,\r
474                 0xC78, 0x881A1101,\r
475                 0xC78, 0x871B1101,\r
476                 0xC78, 0x861C1101,\r
477                 0xC78, 0x851D1101,\r
478                 0xC78, 0x841E1101,\r
479                 0xC78, 0x831F1101,\r
480                 0xC78, 0x82201101,\r
481                 0xC78, 0x81211101,\r
482                 0xC78, 0x80221101,\r
483                 0xC78, 0x43231101,\r
484                 0xC78, 0x42241101,\r
485                 0xC78, 0x41251101,\r
486                 0xC78, 0x04261101,\r
487                 0xC78, 0x03271101,\r
488                 0xC78, 0x02281101,\r
489                 0xC78, 0x01291101,\r
490                 0xC78, 0x002A1101,\r
491                 0xC78, 0xC42B1001,\r
492                 0xC78, 0xC32C1001,\r
493                 0xC78, 0xC22D1001,\r
494                 0xC78, 0xC12E1001,\r
495                 0xC78, 0xC02F1001,\r
496                 0xC78, 0x85301001,\r
497                 0xC78, 0x84311001,\r
498                 0xC78, 0x83321001,\r
499                 0xC78, 0x82331001,\r
500                 0xC78, 0x81341001,\r
501                 0xC78, 0x80351001,\r
502                 0xC78, 0x05361001,\r
503                 0xC78, 0x04371001,\r
504                 0xC78, 0x03381001,\r
505                 0xC78, 0x02391001,\r
506                 0xC78, 0x013A1001,\r
507                 0xC78, 0x003B1001,\r
508                 0xC78, 0x003C1001,\r
509                 0xC78, 0x003D1001,\r
510                 0xC78, 0x003E1001,\r
511                 0xC78, 0x003F1001,\r
512                 0xC50, 0x69553422,\r
513                 0xC50, 0x69553420,\r
514 \r
515 };\r
516 \r
517 void\r
518 ODM_ReadAndConfig_MP_8723D_AGC_TAB(\r
519         IN   PDM_ODM_T  pDM_Odm\r
520 )\r
521 {\r
522         u4Byte     i         = 0;\r
523         u1Byte     cCond;\r
524         BOOLEAN bMatched = TRUE, bSkipped = FALSE;\r
525         u4Byte     ArrayLen    = sizeof(Array_MP_8723D_AGC_TAB)/sizeof(u4Byte);\r
526         pu4Byte    Array       = Array_MP_8723D_AGC_TAB;\r
527         \r
528         u4Byte  v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;\r
529 \r
530         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8723D_AGC_TAB\n"));\r
531 \r
532         while ((i + 1) < ArrayLen) {\r
533                 v1 = Array[i];\r
534                 v2 = Array[i + 1];\r
535 \r
536                 if (v1 & (BIT31 | BIT30)) {/*positive & negative condition*/\r
537                         if (v1 & BIT31) {/* positive condition*/\r
538                                 cCond  = (u1Byte)((v1 & (BIT29|BIT28)) >> 28);\r
539                                 if (cCond == COND_ENDIF) {/*end*/\r
540                                         bMatched = TRUE;\r
541                                         bSkipped = FALSE;\r
542                                         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ENDIF\n"));\r
543                                 } else if (cCond == COND_ELSE) { /*else*/\r
544                                         bMatched = bSkipped?FALSE:TRUE;\r
545                                         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ELSE\n"));\r
546                                 } else {/*if , else if*/\r
547                                         pre_v1 = v1;\r
548                                         pre_v2 = v2;\r
549                                         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("IF or ELSE IF\n"));\r
550                                 }\r
551                         } else if (v1 & BIT30) { /*negative condition*/\r
552                                 if (bSkipped == FALSE) {\r
553                                         if (CheckPositive(pDM_Odm, pre_v1, pre_v2, v1, v2)) {\r
554                                                 bMatched = TRUE;\r
555                                                 bSkipped = TRUE;\r
556                                         } else {\r
557                                                 bMatched = FALSE;\r
558                                                 bSkipped = FALSE;\r
559                                         }\r
560                                 } else\r
561                                         bMatched = FALSE;\r
562                         }\r
563                 } else {\r
564                         if (bMatched)\r
565                                 odm_ConfigBB_AGC_8723D(pDM_Odm, v1, bMaskDWord, v2);\r
566                 }\r
567                 i = i + 2;\r
568         }\r
569 }\r
570 \r
571 u4Byte\r
572 ODM_GetVersion_MP_8723D_AGC_TAB(void)\r
573 {\r
574            return 31;\r
575 }\r
576 \r
577 /******************************************************************************\r
578 *                           PHY_REG.TXT\r
579 ******************************************************************************/\r
580 \r
581 u4Byte Array_MP_8723D_PHY_REG[] = { \r
582                 0x800, 0x80046C00,\r
583                 0x804, 0x00000003,\r
584                 0x808, 0x0000FC00,\r
585                 0x80C, 0x0000000A,\r
586                 0x810, 0x10001331,\r
587                 0x814, 0x020C3D10,\r
588                 0x818, 0x00200385,\r
589                 0x81C, 0x00000000,\r
590                 0x820, 0x01000100,\r
591                 0x824, 0x00390204,\r
592                 0x828, 0x00000000,\r
593                 0x82C, 0x00000000,\r
594                 0x830, 0x00000000,\r
595                 0x834, 0x00000000,\r
596                 0x838, 0x00000000,\r
597                 0x83C, 0x00000000,\r
598                 0x840, 0x00010000,\r
599                 0x844, 0x00000000,\r
600                 0x848, 0x00000000,\r
601                 0x84C, 0x00000000,\r
602                 0x850, 0x00000000,\r
603                 0x854, 0x00000000,\r
604                 0x858, 0x569A11A9,\r
605                 0x85C, 0x01000014,\r
606                 0x860, 0x66F60110,\r
607                 0x864, 0x461F0641,\r
608                 0x868, 0x00000000,\r
609                 0x86C, 0x27272700,\r
610                 0x870, 0x07000460,\r
611                 0x874, 0x25004000,\r
612                 0x878, 0x00000808,\r
613                 0x87C, 0x004F0201,\r
614                 0x880, 0xB2002E12,\r
615                 0x884, 0x00000007,\r
616                 0x888, 0x00000000,\r
617                 0x88C, 0xCCC000C0,\r
618                 0x890, 0x00000800,\r
619                 0x894, 0xFFFFFFFE,\r
620                 0x898, 0x40302010,\r
621                 0x89C, 0x00706050,\r
622                 0x900, 0x00000000,\r
623                 0x904, 0x00000023,\r
624                 0x908, 0x00000000,\r
625                 0x90C, 0x81121111,\r
626                 0x910, 0x00000402,\r
627                 0x914, 0x00000300,\r
628                 0x920, 0x18C6318C,\r
629                 0x924, 0x0000018C,\r
630                 0x948, 0x99000000,\r
631                 0x94C, 0x00000010,\r
632                 0x950, 0x00003800,\r
633                 0x954, 0x5A380000,\r
634                 0x958, 0x4BC6D87A,\r
635                 0x95C, 0x04EB9B79,\r
636                 0x96C, 0x00000003,\r
637                 0x970, 0x00000000,\r
638                 0x974, 0x00000000,\r
639                 0x978, 0x00000000,\r
640                 0x97C, 0x13000000,\r
641                 0x980, 0x00000000,\r
642                 0xA00, 0x00D047C8,\r
643                 0xA04, 0x80FF800C,\r
644                 0xA08, 0x8C838300,\r
645                 0xA0C, 0x2E20100F,\r
646                 0xA10, 0x9500BB78,\r
647                 0xA14, 0x1114D028,\r
648                 0xA18, 0x00881117,\r
649                 0xA1C, 0x89140F00,\r
650                 0xA20, 0xE82C0001,\r
651                 0xA24, 0x64B80C1C,\r
652                 0xA28, 0x00008810,\r
653                 0xA2C, 0x00D30000,\r
654                 0xA70, 0x101FBF00,\r
655                 0xA74, 0x00000007,\r
656                 0xA78, 0x00008900,\r
657                 0xA7C, 0x225B0606,\r
658                 0xA80, 0x2180FA74,\r
659                 0xA84, 0x00200000,\r
660                 0xA88, 0x040C0000,\r
661                 0xA8C, 0x12345678,\r
662                 0xA90, 0xABCDEF00,\r
663                 0xA94, 0x001B1B89,\r
664                 0xA98, 0x00000000,\r
665                 0xA9C, 0x00020000,\r
666                 0xAA0, 0x00000000,\r
667                 0xAA4, 0x0000000C,\r
668                 0xAA8, 0xCA100008,\r
669                 0xAAC, 0x01235667,\r
670                 0xAB0, 0x00000000,\r
671                 0xAB4, 0x20201402,\r
672                 0xB2C, 0x00000000,\r
673                 0xC00, 0x48071D40,\r
674                 0xC04, 0x03A05611,\r
675                 0xC08, 0x000000E4,\r
676                 0xC0C, 0x6C6C6C6C,\r
677                 0xC10, 0x28800000,\r
678                 0xC14, 0x40000100,\r
679                 0xC18, 0x08800000,\r
680                 0xC1C, 0x40000100,\r
681                 0xC20, 0x00000000,\r
682                 0xC24, 0x00000000,\r
683                 0xC28, 0x00000000,\r
684                 0xC2C, 0x00000000,\r
685                 0xC30, 0x69E9AC48,\r
686                 0xC34, 0x31000040,\r
687                 0xC38, 0x21688080,\r
688                 0xC3C, 0x000016D4,\r
689                 0xC40, 0x1F78403F,\r
690                 0xC44, 0x00010036,\r
691                 0xC48, 0xEC020107,\r
692                 0xC4C, 0x007F037F,\r
693                 0xC50, 0x69553420,\r
694                 0xC54, 0x43BC0094,\r
695                 0xC58, 0x00015969,\r
696                 0xC5C, 0x00310492,\r
697                 0xC60, 0x00280A00,\r
698                 0xC64, 0x7112848B,\r
699                 0xC68, 0x47C074FF,\r
700                 0xC6C, 0x00000036,\r
701                 0xC70, 0x2C7F000D,\r
702                 0xC74, 0x020600DB,\r
703                 0xC78, 0x0000001F,\r
704                 0xC7C, 0x00B91612,\r
705                 0xC80, 0x390000E4,\r
706                 0xC84, 0x11F60000,\r
707                 0xC88, 0x40000100,\r
708                 0xC8C, 0x20200000,\r
709                 0xC90, 0x00091521,\r
710                 0xC94, 0x00000000,\r
711                 0xC98, 0x00121820,\r
712                 0xC9C, 0x00007F7F,\r
713                 0xCA0, 0x00012000,\r
714                 0xCA4, 0xA00000A0,\r
715                 0xCA8, 0x85E7C606,\r
716                 0xCAC, 0x00000060,\r
717                 0xCB0, 0x00000000,\r
718                 0xCB4, 0x00000000,\r
719                 0xCB8, 0x00000000,\r
720                 0xCBC, 0x28000000,\r
721                 0xCC0, 0x0010A3D0,\r
722                 0xCC4, 0x00000F7D,\r
723                 0xCC8, 0x000442D6,\r
724                 0xCCC, 0x00000000,\r
725                 0xCD0, 0x000001C8,\r
726                 0xCD4, 0x001C8000,\r
727                 0xCD8, 0x00000100,\r
728                 0xCDC, 0x40100000,\r
729                 0xCE0, 0x00222220,\r
730                 0xCE4, 0x20000000,\r
731                 0xCE8, 0x37644302,\r
732                 0xCEC, 0x2F97D40C,\r
733                 0xD00, 0x00030740,\r
734                 0xD04, 0x40020401,\r
735                 0xD08, 0x0000907F,\r
736                 0xD0C, 0x20010201,\r
737                 0xD10, 0xA0633333,\r
738                 0xD14, 0x3333BC53,\r
739                 0xD18, 0x7A8F5B6F,\r
740                 0xD2C, 0xCC979975,\r
741                 0xD30, 0x00000000,\r
742                 0xD34, 0x80608000,\r
743                 0xD38, 0x88000000,\r
744                 0xD3C, 0xC0127343,\r
745                 0xD40, 0x00000000,\r
746                 0xD44, 0x00000000,\r
747                 0xD48, 0x00000000,\r
748                 0xD4C, 0x00000000,\r
749                 0xD50, 0x00000038,\r
750                 0xD54, 0x00000000,\r
751                 0xD58, 0x00000282,\r
752                 0xD5C, 0x30032064,\r
753                 0xD60, 0x4653DE68,\r
754                 0xD64, 0x04518A3C,\r
755                 0xD68, 0x00002101,\r
756                 0xE00, 0x2D2D2D2D,\r
757                 0xE04, 0x2D2D2D2D,\r
758                 0xE08, 0x0390272D,\r
759                 0xE10, 0x2D2D2D2D,\r
760                 0xE14, 0x2D2D2D2D,\r
761                 0xE18, 0x2D2D2D2D,\r
762                 0xE1C, 0x2D2D2D2D,\r
763                 0xE28, 0x00000000,\r
764                 0xE30, 0x1000DC1F,\r
765                 0xE34, 0x10008C1F,\r
766                 0xE38, 0x02140102,\r
767                 0xE3C, 0x681604C2,\r
768                 0xE40, 0x01007C00,\r
769                 0xE44, 0x01004800,\r
770                 0xE48, 0xFB000000,\r
771                 0xE4C, 0x000028D1,\r
772                 0xE50, 0x1000DC1F,\r
773                 0xE54, 0x10008C1F,\r
774                 0xE58, 0x02140102,\r
775                 0xE5C, 0x28160D05,\r
776                 0xE60, 0x00000008,\r
777                 0xE68, 0x001B25A4,\r
778                 0xE6C, 0x01C00014,\r
779                 0xE70, 0x01C00016,\r
780                 0xE74, 0x02000014,\r
781                 0xE78, 0x02000014,\r
782                 0xE7C, 0x02000014,\r
783                 0xE80, 0x02000014,\r
784                 0xE84, 0x01C00014,\r
785                 0xE88, 0x02000014,\r
786                 0xE8C, 0x01C00014,\r
787                 0xED0, 0x01C00014,\r
788                 0xED4, 0x01C00014,\r
789                 0xED8, 0x01C00014,\r
790                 0xEDC, 0x00000014,\r
791                 0xEE0, 0x00000014,\r
792                 0xEE8, 0x21555448,\r
793                 0xEEC, 0x03C00014,\r
794                 0xF14, 0x00000003,\r
795                 0xF00, 0x00100300,\r
796                 0xF08, 0x0000800B,\r
797                 0xF0C, 0x0000F007,\r
798                 0xF10, 0x0000A487,\r
799                 0xF1C, 0x80000064,\r
800                 0xF38, 0x00030155,\r
801                 0xF3C, 0x0000003A,\r
802                 0xF4C, 0x13000000,\r
803                 0xF50, 0x00000000,\r
804                 0xF18, 0x00000000,\r
805 \r
806 };\r
807 \r
808 void\r
809 ODM_ReadAndConfig_MP_8723D_PHY_REG(\r
810         IN   PDM_ODM_T  pDM_Odm\r
811 )\r
812 {\r
813         u4Byte     i         = 0;\r
814         u1Byte     cCond;\r
815         BOOLEAN bMatched = TRUE, bSkipped = FALSE;\r
816         u4Byte     ArrayLen    = sizeof(Array_MP_8723D_PHY_REG)/sizeof(u4Byte);\r
817         pu4Byte    Array       = Array_MP_8723D_PHY_REG;\r
818         \r
819         u4Byte  v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;\r
820 \r
821         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8723D_PHY_REG\n"));\r
822 \r
823         while ((i + 1) < ArrayLen) {\r
824                 v1 = Array[i];\r
825                 v2 = Array[i + 1];\r
826 \r
827                 if (v1 & (BIT31 | BIT30)) {/*positive & negative condition*/\r
828                         if (v1 & BIT31) {/* positive condition*/\r
829                                 cCond  = (u1Byte)((v1 & (BIT29|BIT28)) >> 28);\r
830                                 if (cCond == COND_ENDIF) {/*end*/\r
831                                         bMatched = TRUE;\r
832                                         bSkipped = FALSE;\r
833                                         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ENDIF\n"));\r
834                                 } else if (cCond == COND_ELSE) { /*else*/\r
835                                         bMatched = bSkipped?FALSE:TRUE;\r
836                                         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ELSE\n"));\r
837                                 } else {/*if , else if*/\r
838                                         pre_v1 = v1;\r
839                                         pre_v2 = v2;\r
840                                         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("IF or ELSE IF\n"));\r
841                                 }\r
842                         } else if (v1 & BIT30) { /*negative condition*/\r
843                                 if (bSkipped == FALSE) {\r
844                                         if (CheckPositive(pDM_Odm, pre_v1, pre_v2, v1, v2)) {\r
845                                                 bMatched = TRUE;\r
846                                                 bSkipped = TRUE;\r
847                                         } else {\r
848                                                 bMatched = FALSE;\r
849                                                 bSkipped = FALSE;\r
850                                         }\r
851                                 } else\r
852                                         bMatched = FALSE;\r
853                         }\r
854                 } else {\r
855                         if (bMatched)\r
856                                 odm_ConfigBB_PHY_8723D(pDM_Odm, v1, bMaskDWord, v2);\r
857                 }\r
858                 i = i + 2;\r
859         }\r
860 }\r
861 \r
862 u4Byte\r
863 ODM_GetVersion_MP_8723D_PHY_REG(void)\r
864 {\r
865            return 31;\r
866 }\r
867 \r
868 /******************************************************************************\r
869 *                           PHY_REG_PG.TXT\r
870 ******************************************************************************/\r
871 \r
872 u4Byte Array_MP_8723D_PHY_REG_PG[] = { \r
873         0, 0, 0, 0x00000e08, 0x0000ff00, 0x00003200,\r
874         0, 0, 0, 0x0000086c, 0xffffff00, 0x32323200,\r
875         0, 0, 0, 0x00000e00, 0xffffffff, 0x32343434,\r
876         0, 0, 0, 0x00000e04, 0xffffffff, 0x28303032,\r
877         0, 0, 0, 0x00000e10, 0xffffffff, 0x30323234,\r
878         0, 0, 0, 0x00000e14, 0xffffffff, 0x26282830\r
879 };\r
880 \r
881 void\r
882 ODM_ReadAndConfig_MP_8723D_PHY_REG_PG(\r
883         IN   PDM_ODM_T  pDM_Odm\r
884 )\r
885 {\r
886         u4Byte     i         = 0;\r
887         u4Byte     ArrayLen    = sizeof(Array_MP_8723D_PHY_REG_PG)/sizeof(u4Byte);\r
888         pu4Byte    Array       = Array_MP_8723D_PHY_REG_PG;\r
889 \r
890 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
891         PADAPTER                Adapter = pDM_Odm->Adapter;\r
892         HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);\r
893 \r
894         PlatformZeroMemory(pHalData->BufOfLinesPwrByRate, MAX_LINES_HWCONFIG_TXT*MAX_BYTES_LINE_HWCONFIG_TXT);\r
895         pHalData->nLinesReadPwrByRate = ArrayLen/6;\r
896 #endif\r
897 \r
898         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8723D_PHY_REG_PG\n"));\r
899 \r
900         pDM_Odm->PhyRegPgVersion = 1;\r
901         pDM_Odm->PhyRegPgValueType = PHY_REG_PG_EXACT_VALUE;\r
902 \r
903         for (i = 0; i < ArrayLen; i += 6) {\r
904                 u4Byte v1 = Array[i];\r
905                 u4Byte v2 = Array[i+1];\r
906                 u4Byte v3 = Array[i+2];\r
907                 u4Byte v4 = Array[i+3];\r
908                 u4Byte v5 = Array[i+4];\r
909                 u4Byte v6 = Array[i+5];\r
910 \r
911             odm_ConfigBB_PHY_REG_PG_8723D(pDM_Odm, v1, v2, v3, v4, v5, v6);\r
912 \r
913 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
914         rsprintf((char *)pHalData->BufOfLinesPwrByRate[i/6], 100, "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,",\r
915                 (v1 == 0?"2.4G":"  5G"), (v2 == 0?"A":"B"), (v3 == 0?"1Tx":"2Tx"), v4, v5, v6);\r
916 #endif\r
917         }\r
918 }\r
919 \r
920 \r
921 \r
922 #endif /* end of HWIMG_SUPPORT*/\r
923 \r