--- /dev/null
+/****************************************************************************** \r
+* \r
+* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. \r
+* \r
+* This program is free software; you can redistribute it and/or modify it \r
+* under the terms of version 2 of the GNU General Public License as \r
+* published by the Free Software Foundation. \r
+* \r
+* This program is distributed in the hope that it will be useful, but WITHOUT \r
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or \r
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for \r
+* more details. \r
+* \r
+* You should have received a copy of the GNU General Public License along with \r
+* this program; if not, write to the Free Software Foundation, Inc., \r
+* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA \r
+* \r
+* \r
+******************************************************************************/\r
+\r
+/*Image2HeaderVersion: 2.18*/\r
+#include "mp_precomp.h"\r
+#include "../phydm_precomp.h"\r
+\r
+#if (RTL8188F_SUPPORT == 1)\r
+static BOOLEAN\r
+CheckPositive(\r
+ IN PDM_ODM_T pDM_Odm,\r
+ IN const u4Byte Condition1,\r
+ IN const u4Byte Condition2,\r
+ IN const u4Byte Condition3,\r
+ IN const u4Byte Condition4\r
+)\r
+{\r
+ u1Byte _BoardType = ((pDM_Odm->BoardType & BIT4) >> 4) << 0 | /* _GLNA*/\r
+ ((pDM_Odm->BoardType & BIT3) >> 3) << 1 | /* _GPA*/ \r
+ ((pDM_Odm->BoardType & BIT7) >> 7) << 2 | /* _ALNA*/\r
+ ((pDM_Odm->BoardType & BIT6) >> 6) << 3 | /* _APA */\r
+ ((pDM_Odm->BoardType & BIT2) >> 2) << 4; /* _BT*/ \r
+\r
+ u4Byte cond1 = Condition1, cond2 = Condition2, cond3 = Condition3, cond4 = Condition4;\r
+ u4Byte driver1 = pDM_Odm->CutVersion << 24 | \r
+ (pDM_Odm->SupportInterface & 0xF0) << 16 | \r
+ pDM_Odm->SupportPlatform << 16 | \r
+ pDM_Odm->PackageType << 12 | \r
+ (pDM_Odm->SupportInterface & 0x0F) << 8 |\r
+ _BoardType;\r
+\r
+ u4Byte driver2 = (pDM_Odm->TypeGLNA & 0xFF) << 0 | \r
+ (pDM_Odm->TypeGPA & 0xFF) << 8 | \r
+ (pDM_Odm->TypeALNA & 0xFF) << 16 | \r
+ (pDM_Odm->TypeAPA & 0xFF) << 24; \r
+\r
+u4Byte driver3 = 0;\r
+\r
+ u4Byte driver4 = (pDM_Odm->TypeGLNA & 0xFF00) >> 8 |\r
+ (pDM_Odm->TypeGPA & 0xFF00) |\r
+ (pDM_Odm->TypeALNA & 0xFF00) << 8 |\r
+ (pDM_Odm->TypeAPA & 0xFF00) << 16;\r
+\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
+ ("===> CheckPositive (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", cond1, cond2, cond3, cond4));\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
+ ("===> CheckPositive (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", driver1, driver2, driver3, driver4));\r
+\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
+ (" (Platform, Interface) = (0x%X, 0x%X)\n", pDM_Odm->SupportPlatform, pDM_Odm->SupportInterface));\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, \r
+ (" (Board, Package) = (0x%X, 0x%X)\n", pDM_Odm->BoardType, pDM_Odm->PackageType));\r
+\r
+\r
+ /*============== Value Defined Check ===============*/\r
+ /*QFN Type [15:12] and Cut Version [27:24] need to do value check*/\r
+ \r
+ if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))\r
+ return FALSE;\r
+ if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))\r
+ return FALSE;\r
+\r
+ /*=============== Bit Defined Check ================*/\r
+ /* We don't care [31:28] */\r
+\r
+ cond1 &= 0x00FF0FFF; \r
+ driver1 &= 0x00FF0FFF; \r
+\r
+ if ((cond1 & driver1) == cond1) {\r
+ u4Byte bitMask = 0;\r
+\r
+ if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE*/\r
+ return TRUE;\r
+\r
+ if ((cond1 & BIT0) != 0) /*GLNA*/\r
+ bitMask |= 0x000000FF;\r
+ if ((cond1 & BIT1) != 0) /*GPA*/\r
+ bitMask |= 0x0000FF00;\r
+ if ((cond1 & BIT2) != 0) /*ALNA*/\r
+ bitMask |= 0x00FF0000;\r
+ if ((cond1 & BIT3) != 0) /*APA*/\r
+ bitMask |= 0xFF000000;\r
+\r
+ if (((cond2 & bitMask) == (driver2 & bitMask)) && ((cond4 & bitMask) == (driver4 & bitMask))) /* BoardType of each RF path is matched*/\r
+ return TRUE;\r
+ else\r
+ return FALSE;\r
+ } else\r
+ return FALSE;\r
+}\r
+static BOOLEAN\r
+CheckNegative(\r
+ IN PDM_ODM_T pDM_Odm,\r
+ IN const u4Byte Condition1,\r
+ IN const u4Byte Condition2\r
+)\r
+{\r
+ return TRUE;\r
+}\r
+\r
+/******************************************************************************\r
+* AGC_TAB.TXT\r
+******************************************************************************/\r
+\r
+u4Byte Array_MP_8188F_AGC_TAB[] = { \r
+ 0xC78, 0xFC000001,\r
+ 0xC78, 0xFB010001,\r
+ 0xC78, 0xFA020001,\r
+ 0xC78, 0xF9030001,\r
+ 0xC78, 0xF8040001,\r
+ 0xC78, 0xF7050001,\r
+ 0xC78, 0xF6060001,\r
+ 0xC78, 0xF5070001,\r
+ 0xC78, 0xF4080001,\r
+ 0xC78, 0xF3090001,\r
+ 0xC78, 0xF20A0001,\r
+ 0xC78, 0xF10B0001,\r
+ 0xC78, 0xF00C0001,\r
+ 0xC78, 0xEF0D0001,\r
+ 0xC78, 0xEE0E0001,\r
+ 0xC78, 0xED0F0001,\r
+ 0xC78, 0xEC100001,\r
+ 0xC78, 0xEB110001,\r
+ 0xC78, 0xEA120001,\r
+ 0xC78, 0xE9130001,\r
+ 0xC78, 0xE8140001,\r
+ 0xC78, 0xE7150001,\r
+ 0xC78, 0xE6160001,\r
+ 0xC78, 0xE5170001,\r
+ 0xC78, 0xE4180001,\r
+ 0xC78, 0xE3190001,\r
+ 0xC78, 0xE21A0001,\r
+ 0xC78, 0xE11B0001,\r
+ 0xC78, 0xE01C0001,\r
+ 0xC78, 0xC21D0001,\r
+ 0xC78, 0xC11E0001,\r
+ 0xC78, 0xC01F0001,\r
+ 0xC78, 0xA5200001,\r
+ 0xC78, 0xA4210001,\r
+ 0xC78, 0xA3220001,\r
+ 0xC78, 0xA2230001,\r
+ 0xC78, 0xA1240001,\r
+ 0xC78, 0xA0250001,\r
+ 0xC78, 0x65260001,\r
+ 0xC78, 0x64270001,\r
+ 0xC78, 0x63280001,\r
+ 0xC78, 0x62290001,\r
+ 0xC78, 0x612A0001,\r
+ 0xC78, 0x442B0001,\r
+ 0xC78, 0x432C0001,\r
+ 0xC78, 0x422D0001,\r
+ 0xC78, 0x412E0001,\r
+ 0xC78, 0x402F0001,\r
+ 0xC78, 0x21300001,\r
+ 0xC78, 0x20310001,\r
+ 0xC78, 0x05320001,\r
+ 0xC78, 0x04330001,\r
+ 0xC78, 0x03340001,\r
+ 0xC78, 0x02350001,\r
+ 0xC78, 0x01360001,\r
+ 0xC78, 0x00370001,\r
+ 0xC78, 0x00380001,\r
+ 0xC78, 0x00390001,\r
+ 0xC78, 0x003A0001,\r
+ 0xC78, 0x003B0001,\r
+ 0xC78, 0x003C0001,\r
+ 0xC78, 0x003D0001,\r
+ 0xC78, 0x003E0001,\r
+ 0xC78, 0x003F0001,\r
+ 0xC50, 0x69553422,\r
+ 0xC50, 0x69553420,\r
+\r
+};\r
+\r
+void\r
+ODM_ReadAndConfig_MP_8188F_AGC_TAB(\r
+ IN PDM_ODM_T pDM_Odm\r
+)\r
+{\r
+ u4Byte i = 0;\r
+ u1Byte cCond;\r
+ BOOLEAN bMatched = TRUE, bSkipped = FALSE;\r
+ u4Byte ArrayLen = sizeof(Array_MP_8188F_AGC_TAB)/sizeof(u4Byte);\r
+ pu4Byte Array = Array_MP_8188F_AGC_TAB;\r
+ \r
+ u4Byte v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;\r
+\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8188F_AGC_TAB\n"));\r
+\r
+ while ((i + 1) < ArrayLen) {\r
+ v1 = Array[i];\r
+ v2 = Array[i + 1];\r
+\r
+ if (v1 & (BIT31 | BIT30)) {/*positive & negative condition*/\r
+ if (v1 & BIT31) {/* positive condition*/\r
+ cCond = (u1Byte)((v1 & (BIT29|BIT28)) >> 28);\r
+ if (cCond == COND_ENDIF) {/*end*/\r
+ bMatched = TRUE;\r
+ bSkipped = FALSE;\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ENDIF\n"));\r
+ } else if (cCond == COND_ELSE) { /*else*/\r
+ bMatched = bSkipped?FALSE:TRUE;\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ELSE\n"));\r
+ } else {/*if , else if*/\r
+ pre_v1 = v1;\r
+ pre_v2 = v2;\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("IF or ELSE IF\n"));\r
+ }\r
+ } else if (v1 & BIT30) { /*negative condition*/\r
+ if (bSkipped == FALSE) {\r
+ if (CheckPositive(pDM_Odm, pre_v1, pre_v2, v1, v2)) {\r
+ bMatched = TRUE;\r
+ bSkipped = TRUE;\r
+ } else {\r
+ bMatched = FALSE;\r
+ bSkipped = FALSE;\r
+ }\r
+ } else\r
+ bMatched = FALSE;\r
+ }\r
+ } else {\r
+ if (bMatched)\r
+ odm_ConfigBB_AGC_8188F(pDM_Odm, v1, bMaskDWord, v2);\r
+ }\r
+ i = i + 2;\r
+ }\r
+}\r
+\r
+u4Byte\r
+ODM_GetVersion_MP_8188F_AGC_TAB(void)\r
+{\r
+ return 31;\r
+}\r
+\r
+/******************************************************************************\r
+* PHY_REG.TXT\r
+******************************************************************************/\r
+\r
+u4Byte Array_MP_8188F_PHY_REG[] = { \r
+ 0x800, 0x80045700,\r
+ 0x804, 0x00000001,\r
+ 0x808, 0x0000FC00,\r
+ 0x80C, 0x0000000A,\r
+ 0x810, 0x10001331,\r
+ 0x814, 0x020C3D10,\r
+ 0x818, 0x00200385,\r
+ 0x81C, 0x00000000,\r
+ 0x820, 0x01000100,\r
+ 0x824, 0x00390204,\r
+ 0x828, 0x00000000,\r
+ 0x82C, 0x00000000,\r
+ 0x830, 0x00000000,\r
+ 0x834, 0x00000000,\r
+ 0x838, 0x00000000,\r
+ 0x83C, 0x00000000,\r
+ 0x840, 0x00010000,\r
+ 0x844, 0x00000000,\r
+ 0x848, 0x00000000,\r
+ 0x84C, 0x00000000,\r
+ 0x850, 0x00030000,\r
+ 0x854, 0x00000000,\r
+ 0x858, 0x569A569A,\r
+ 0x85C, 0x569A569A,\r
+ 0x860, 0x00000130,\r
+ 0x864, 0x00000000,\r
+ 0x868, 0x00000000,\r
+ 0x86C, 0x27272700,\r
+ 0x870, 0x00000000,\r
+ 0x874, 0x25004000,\r
+ 0x878, 0x00000808,\r
+ 0x87C, 0x004F0201,\r
+ 0x880, 0xB0000B1E,\r
+ 0x884, 0x00000007,\r
+ 0x888, 0x00000000,\r
+ 0x88C, 0xCCC000C0,\r
+ 0x890, 0x00000800,\r
+ 0x894, 0xFFFFFFFE,\r
+ 0x898, 0x40302010,\r
+ 0x89C, 0x00706050,\r
+ 0x900, 0x00000000,\r
+ 0x904, 0x00000023,\r
+ 0x908, 0x00000000,\r
+ 0x90C, 0x81121111,\r
+ 0x910, 0x00000002,\r
+ 0x914, 0x00000201,\r
+ 0x948, 0x99000000,\r
+ 0x94C, 0x00000010,\r
+ 0x950, 0x20003000,\r
+ 0x954, 0x4A880000,\r
+ 0x958, 0x4BC5D87A,\r
+ 0x95C, 0x04EB9B79,\r
+ 0x96C, 0x00000003,\r
+ 0xA00, 0x00D047C8,\r
+ 0xA04, 0x80FF800C,\r
+ 0x80000400, 0x00000000, 0x40000000, 0x00000000,\r
+ 0xA08, 0x8C038300,\r
+ 0xA0000000, 0x00000000,\r
+ 0xA08, 0x8C898300,\r
+ 0xB0000000, 0x00000000,\r
+ 0xA0C, 0x2E7F120F,\r
+ 0xA10, 0x9500BB78,\r
+ 0xA14, 0x1114D028,\r
+ 0xA18, 0x00881117,\r
+ 0xA1C, 0x89140F00,\r
+ 0xA20, 0xD1D80000,\r
+ 0xA24, 0x5A7DA0BD,\r
+ 0xA28, 0x0000223B,\r
+ 0xA2C, 0x00D30000,\r
+ 0xA70, 0x101FBF00,\r
+ 0xA74, 0x00000007,\r
+ 0x80000400, 0x00000000, 0x40000000, 0x00000000,\r
+ 0xA78, 0x00008900,\r
+ 0xA0000000, 0x00000000,\r
+ 0xA78, 0x00000900,\r
+ 0xB0000000, 0x00000000,\r
+ 0xA7C, 0x225B0606,\r
+ 0xA80, 0x218075B1,\r
+ 0xA84, 0x00120000,\r
+ 0xA88, 0x040C0000,\r
+ 0xA8C, 0x12345678,\r
+ 0xA90, 0xABCDEF00,\r
+ 0xA94, 0x001B1B89,\r
+ 0xA98, 0x05100000,\r
+ 0xA9C, 0x3F000000,\r
+ 0xAA0, 0x00000000,\r
+ 0xB2C, 0x00000000,\r
+ 0xC00, 0x48071D40,\r
+ 0xC04, 0x03A05611,\r
+ 0xC08, 0x000000E4,\r
+ 0xC0C, 0x6C6C6C6C,\r
+ 0xC10, 0x18800000,\r
+ 0xC14, 0x40000100,\r
+ 0xC18, 0x08800000,\r
+ 0xC1C, 0x40000100,\r
+ 0xC20, 0x00000000,\r
+ 0xC24, 0x00000000,\r
+ 0xC28, 0x00000000,\r
+ 0xC2C, 0x00000000,\r
+ 0xC30, 0x69E9CC4A,\r
+ 0xC34, 0x31000040,\r
+ 0xC38, 0x21688080,\r
+ 0xC3C, 0x00001714,\r
+ 0xC40, 0x1F78403F,\r
+ 0xC44, 0x00010036,\r
+ 0xC48, 0xEC020107,\r
+ 0xC4C, 0x007F037F,\r
+ 0xC50, 0x69553420,\r
+ 0xC54, 0x43BC0094,\r
+ 0xC58, 0x00013169,\r
+ 0xC5C, 0x00250492,\r
+ 0xC60, 0x00000000,\r
+ 0xC64, 0x7112848B,\r
+ 0xC68, 0x47C07BFF,\r
+ 0xC6C, 0x00000036,\r
+ 0xC70, 0x2C7F000D,\r
+ 0xC74, 0x020600DB,\r
+ 0xC78, 0x0000001F,\r
+ 0xC7C, 0x00B91612,\r
+ 0xC80, 0x390000E4,\r
+ 0x80000400, 0x00000000, 0x40000000, 0x00000000,\r
+ 0xC84, 0x21F60000,\r
+ 0xA0000000, 0x00000000,\r
+ 0xC84, 0x11F60000,\r
+ 0xB0000000, 0x00000000,\r
+ 0xC88, 0x40000100,\r
+ 0xC8C, 0x20200000,\r
+ 0xC90, 0x00091521,\r
+ 0xC94, 0x00000000,\r
+ 0xC98, 0x00121820,\r
+ 0xC9C, 0x00007F7F,\r
+ 0xCA0, 0x00000000,\r
+ 0xCA4, 0x000300A0,\r
+ 0xCA8, 0x00000000,\r
+ 0xCAC, 0x00000000,\r
+ 0xCB0, 0x00000000,\r
+ 0xCB4, 0x00000000,\r
+ 0xCB8, 0x00000000,\r
+ 0xCBC, 0x28000000,\r
+ 0xCC0, 0x00000000,\r
+ 0xCC4, 0x00000000,\r
+ 0xCC8, 0x00000000,\r
+ 0xCCC, 0x00000000,\r
+ 0xCD0, 0x00000000,\r
+ 0xCD4, 0x00000000,\r
+ 0xCD8, 0x64B22427,\r
+ 0xCDC, 0x00766932,\r
+ 0xCE0, 0x00222222,\r
+ 0xCE4, 0x10000000,\r
+ 0xCE8, 0x37644302,\r
+ 0xCEC, 0x2F97D40C,\r
+ 0xD00, 0x04030740,\r
+ 0xD04, 0x40020401,\r
+ 0xD08, 0x0000907F,\r
+ 0xD0C, 0x20010201,\r
+ 0xD10, 0xA0633333,\r
+ 0xD14, 0x3333BC53,\r
+ 0xD18, 0x7A8F5B6F,\r
+ 0xD2C, 0xCB979975,\r
+ 0xD30, 0x00000000,\r
+ 0xD34, 0x80608000,\r
+ 0xD38, 0x98000000,\r
+ 0xD3C, 0x40127353,\r
+ 0xD40, 0x00000000,\r
+ 0xD44, 0x00000000,\r
+ 0xD48, 0x00000000,\r
+ 0xD4C, 0x00000000,\r
+ 0xD50, 0x6437140A,\r
+ 0xD54, 0x00000000,\r
+ 0xD58, 0x00000282,\r
+ 0xD5C, 0x30032064,\r
+ 0xD60, 0x4653DE68,\r
+ 0xD64, 0x04518A3C,\r
+ 0xD68, 0x00002101,\r
+ 0xD6C, 0x2A201C16,\r
+ 0xD70, 0x1812362E,\r
+ 0xD74, 0x322C2220,\r
+ 0xD78, 0x000E3C24,\r
+ 0xE00, 0x2D2D2D2D,\r
+ 0xE04, 0x2D2D2D2D,\r
+ 0xE08, 0x0390272D,\r
+ 0xE10, 0x2D2D2D2D,\r
+ 0xE14, 0x2D2D2D2D,\r
+ 0xE18, 0x2D2D2D2D,\r
+ 0xE1C, 0x2D2D2D2D,\r
+ 0xE28, 0x00000000,\r
+ 0xE30, 0x1000DC1F,\r
+ 0xE34, 0x10008C1F,\r
+ 0xE38, 0x02140102,\r
+ 0xE3C, 0x681604C2,\r
+ 0xE40, 0x01007C00,\r
+ 0xE44, 0x01004800,\r
+ 0xE48, 0xFB000000,\r
+ 0xE4C, 0x000028D1,\r
+ 0xE50, 0x1000DC1F,\r
+ 0xE54, 0x10008C1F,\r
+ 0xE58, 0x02140102,\r
+ 0xE5C, 0x28160D05,\r
+ 0xE60, 0x00000008,\r
+ 0xE60, 0x021400A0,\r
+ 0xE64, 0x281600A0,\r
+ 0xE6C, 0x01C00010,\r
+ 0xE70, 0x01C00010,\r
+ 0xE74, 0x02000010,\r
+ 0xE78, 0x02000010,\r
+ 0xE7C, 0x02000010,\r
+ 0xE80, 0x02000010,\r
+ 0xE84, 0x01C00010,\r
+ 0xE88, 0x02000010,\r
+ 0xE8C, 0x01C00010,\r
+ 0xED0, 0x01C00010,\r
+ 0xED4, 0x01C00010,\r
+ 0xED8, 0x01C00010,\r
+ 0xEDC, 0x00000010,\r
+ 0xEE0, 0x00000010,\r
+ 0xEEC, 0x03C00010,\r
+ 0xF14, 0x00000003,\r
+ 0xF4C, 0x00000000,\r
+ 0xF00, 0x00000300,\r
+\r
+};\r
+\r
+void\r
+ODM_ReadAndConfig_MP_8188F_PHY_REG(\r
+ IN PDM_ODM_T pDM_Odm\r
+)\r
+{\r
+ u4Byte i = 0;\r
+ u1Byte cCond;\r
+ BOOLEAN bMatched = TRUE, bSkipped = FALSE;\r
+ u4Byte ArrayLen = sizeof(Array_MP_8188F_PHY_REG)/sizeof(u4Byte);\r
+ pu4Byte Array = Array_MP_8188F_PHY_REG;\r
+ \r
+ u4Byte v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;\r
+\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8188F_PHY_REG\n"));\r
+\r
+ while ((i + 1) < ArrayLen) {\r
+ v1 = Array[i];\r
+ v2 = Array[i + 1];\r
+\r
+ if (v1 & (BIT31 | BIT30)) {/*positive & negative condition*/\r
+ if (v1 & BIT31) {/* positive condition*/\r
+ cCond = (u1Byte)((v1 & (BIT29|BIT28)) >> 28);\r
+ if (cCond == COND_ENDIF) {/*end*/\r
+ bMatched = TRUE;\r
+ bSkipped = FALSE;\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ENDIF\n"));\r
+ } else if (cCond == COND_ELSE) { /*else*/\r
+ bMatched = bSkipped?FALSE:TRUE;\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ELSE\n"));\r
+ } else {/*if , else if*/\r
+ pre_v1 = v1;\r
+ pre_v2 = v2;\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("IF or ELSE IF\n"));\r
+ }\r
+ } else if (v1 & BIT30) { /*negative condition*/\r
+ if (bSkipped == FALSE) {\r
+ if (CheckPositive(pDM_Odm, pre_v1, pre_v2, v1, v2)) {\r
+ bMatched = TRUE;\r
+ bSkipped = TRUE;\r
+ } else {\r
+ bMatched = FALSE;\r
+ bSkipped = FALSE;\r
+ }\r
+ } else\r
+ bMatched = FALSE;\r
+ }\r
+ } else {\r
+ if (bMatched)\r
+ odm_ConfigBB_PHY_8188F(pDM_Odm, v1, bMaskDWord, v2);\r
+ }\r
+ i = i + 2;\r
+ }\r
+}\r
+\r
+u4Byte\r
+ODM_GetVersion_MP_8188F_PHY_REG(void)\r
+{\r
+ return 31;\r
+}\r
+\r
+/******************************************************************************\r
+* PHY_REG_PG.TXT\r
+******************************************************************************/\r
+\r
+u4Byte Array_MP_8188F_PHY_REG_PG[] = { \r
+ 0, 0, 0, 0x00000e08, 0x0000ff00, 0x00003200,\r
+ 0, 0, 0, 0x0000086c, 0xffffff00, 0x32323200,\r
+ 0, 0, 0, 0x00000e00, 0xffffffff, 0x34363636,\r
+ 0, 0, 0, 0x00000e04, 0xffffffff, 0x28303234,\r
+ 0, 0, 0, 0x00000e10, 0xffffffff, 0x30343434,\r
+ 0, 0, 0, 0x00000e14, 0xffffffff, 0x26262830\r
+};\r
+\r
+void\r
+ODM_ReadAndConfig_MP_8188F_PHY_REG_PG(\r
+ IN PDM_ODM_T pDM_Odm\r
+)\r
+{\r
+ u4Byte i = 0;\r
+ u4Byte ArrayLen = sizeof(Array_MP_8188F_PHY_REG_PG)/sizeof(u4Byte);\r
+ pu4Byte Array = Array_MP_8188F_PHY_REG_PG;\r
+\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
+ PADAPTER Adapter = pDM_Odm->Adapter;\r
+ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);\r
+\r
+ PlatformZeroMemory(pHalData->BufOfLinesPwrByRate, MAX_LINES_HWCONFIG_TXT*MAX_BYTES_LINE_HWCONFIG_TXT);\r
+ pHalData->nLinesReadPwrByRate = ArrayLen/6;\r
+#endif\r
+\r
+ ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8188F_PHY_REG_PG\n"));\r
+\r
+ pDM_Odm->PhyRegPgVersion = 1;\r
+ pDM_Odm->PhyRegPgValueType = PHY_REG_PG_EXACT_VALUE;\r
+\r
+ for (i = 0; i < ArrayLen; i += 6) {\r
+ u4Byte v1 = Array[i];\r
+ u4Byte v2 = Array[i+1];\r
+ u4Byte v3 = Array[i+2];\r
+ u4Byte v4 = Array[i+3];\r
+ u4Byte v5 = Array[i+4];\r
+ u4Byte v6 = Array[i+5];\r
+\r
+ odm_ConfigBB_PHY_REG_PG_8188F(pDM_Odm, v1, v2, v3, v4, v5, v6);\r
+\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
+ rsprintf((char *)pHalData->BufOfLinesPwrByRate[i/6], 100, "%s, %s, %s, 0x%X, 0x%08X, 0x%08X,",\r
+ (v1 == 0?"2.4G":" 5G"), (v2 == 0?"A":"B"), (v3 == 0?"1Tx":"2Tx"), v4, v5, v6);\r
+#endif\r
+ }\r
+}\r
+\r
+\r
+\r
+#endif /* end of HWIMG_SUPPORT*/\r
+\r