diff options
Diffstat (limited to 'drivers/net/wireless/rtl8723as/hal/OUTSRC/rtl8723a/HalHWImg8723A_RF.c')
-rwxr-xr-x | drivers/net/wireless/rtl8723as/hal/OUTSRC/rtl8723a/HalHWImg8723A_RF.c | 580 |
1 files changed, 290 insertions, 290 deletions
diff --git a/drivers/net/wireless/rtl8723as/hal/OUTSRC/rtl8723a/HalHWImg8723A_RF.c b/drivers/net/wireless/rtl8723as/hal/OUTSRC/rtl8723a/HalHWImg8723A_RF.c index 31925b03922c..b9a5942bbb22 100755 --- a/drivers/net/wireless/rtl8723as/hal/OUTSRC/rtl8723a/HalHWImg8723A_RF.c +++ b/drivers/net/wireless/rtl8723as/hal/OUTSRC/rtl8723a/HalHWImg8723A_RF.c @@ -1,290 +1,290 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License as -* published by the Free Software Foundation. -* -* This program is distributed in the hope that it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License along with -* this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* -******************************************************************************/ - -#include "../odm_precomp.h" - -#if (RTL8723A_SUPPORT == 1) -static BOOLEAN -CheckCondition( - const u4Byte Condition, - const u4Byte Hex - ) -{ - u4Byte _board = (Hex & 0x000000FF); - u4Byte _interface = (Hex & 0x0000FF00) >> 8; - u4Byte _platform = (Hex & 0x00FF0000) >> 16; - u4Byte cond = Condition; - - if ( Condition == 0xCDCDCDCD ) - return TRUE; - - cond = Condition & 0x000000FF; - if ( (_board == cond) && cond != 0x00) - return FALSE; - - cond = Condition & 0x0000FF00; - cond = cond >> 8; - if ( (_interface & cond) == 0 && cond != 0x07) - return FALSE; - - cond = Condition & 0x00FF0000; - cond = cond >> 16; - if ( (_platform & cond) == 0 && cond != 0x0F) - return FALSE; - return TRUE; -} - - -/****************************************************************************** -* RadioA_1T.TXT -******************************************************************************/ - -u4Byte Array_RadioA_1T_8723A[] = { - 0x000, 0x00030159, - 0x001, 0x00031284, - 0x002, 0x00098000, - 0xFF0F011F, 0xABCD, - 0x003, 0x00018C63, - 0xCDCDCDCD, 0xCDCD, - 0x003, 0x00039C63, - 0xFF0F011F, 0xDEAD, - 0x004, 0x000210E7, - 0x009, 0x0002044F, - 0x00A, 0x0001A3F1, - 0x00B, 0x00014787, - 0x00C, 0x000896FE, - 0x00D, 0x0000E02C, - 0x00E, 0x00039CE7, - 0x00F, 0x00000451, - 0x019, 0x00000000, - 0x01A, 0x00030355, - 0x01B, 0x00060A00, - 0x01C, 0x000FC378, - 0x01D, 0x000A1250, - 0x01E, 0x0000024F, - 0x01F, 0x00000000, - 0x020, 0x0000B614, - 0x021, 0x0006C000, - 0x022, 0x00000000, - 0x023, 0x00001558, - 0x024, 0x00000060, - 0x025, 0x00000483, - 0x026, 0x0004F000, - 0x027, 0x000EC7D9, - 0x028, 0x00057730, - 0x029, 0x00004783, - 0x02A, 0x00000001, - 0x02B, 0x00021334, - 0x02A, 0x00000000, - 0x02B, 0x00000054, - 0x02A, 0x00000001, - 0x02B, 0x00000808, - 0x02B, 0x00053333, - 0x02C, 0x0000000C, - 0x02A, 0x00000002, - 0x02B, 0x00000808, - 0x02B, 0x0005B333, - 0x02C, 0x0000000D, - 0x02A, 0x00000003, - 0x02B, 0x00000808, - 0x02B, 0x00063333, - 0x02C, 0x0000000D, - 0x02A, 0x00000004, - 0x02B, 0x00000808, - 0x02B, 0x0006B333, - 0x02C, 0x0000000D, - 0x02A, 0x00000005, - 0x02B, 0x00000808, - 0x02B, 0x00073333, - 0x02C, 0x0000000D, - 0x02A, 0x00000006, - 0x02B, 0x00000709, - 0x02B, 0x0005B333, - 0x02C, 0x0000000D, - 0x02A, 0x00000007, - 0x02B, 0x00000709, - 0x02B, 0x00063333, - 0x02C, 0x0000000D, - 0x02A, 0x00000008, - 0x02B, 0x0000060A, - 0x02B, 0x0004B333, - 0x02C, 0x0000000D, - 0x02A, 0x00000009, - 0x02B, 0x0000060A, - 0x02B, 0x00053333, - 0x02C, 0x0000000D, - 0x02A, 0x0000000A, - 0x02B, 0x0000060A, - 0x02B, 0x0005B333, - 0x02C, 0x0000000D, - 0x02A, 0x0000000B, - 0x02B, 0x0000060A, - 0x02B, 0x00063333, - 0x02C, 0x0000000D, - 0x02A, 0x0000000C, - 0x02B, 0x0000060A, - 0x02B, 0x0006B333, - 0x02C, 0x0000000D, - 0x02A, 0x0000000D, - 0x02B, 0x0000060A, - 0x02B, 0x00073333, - 0x02C, 0x0000000D, - 0x02A, 0x0000000E, - 0x02B, 0x0000050B, - 0x02B, 0x00066666, - 0x02C, 0x0000001A, - 0x02A, 0x000E0000, - 0x010, 0x0004000F, - 0x011, 0x000E31FC, - 0x010, 0x0006000F, - 0x011, 0x000FF9F8, - 0x010, 0x0002000F, - 0x011, 0x000203F9, - 0x010, 0x0003000F, - 0x011, 0x000FF500, - 0x010, 0x00000000, - 0x011, 0x00000000, - 0x010, 0x0008000F, - 0x011, 0x0003F100, - 0x010, 0x0009000F, - 0x011, 0x00023100, - 0x012, 0x00032000, - 0x012, 0x00071000, - 0x012, 0x000B0000, - 0x012, 0x000FC000, - 0x013, 0x000287B3, - 0x013, 0x000244B7, - 0x013, 0x000204AB, - 0x013, 0x0001C49F, - 0x013, 0x00018493, - 0x013, 0x0001429B, - 0x013, 0x00010299, - 0x013, 0x0000C29C, - 0x013, 0x000081A0, - 0x013, 0x000040AC, - 0x013, 0x00000020, - 0x014, 0x0001944C, - 0x014, 0x00059444, - 0x014, 0x0009944C, - 0x014, 0x000D9444, - 0xFF0F011F, 0xABCD, - 0x015, 0x0000F424, - 0x015, 0x0004F424, - 0x015, 0x0008F424, - 0x015, 0x000CF424, - 0xCDCDCDCD, 0xCDCD, - 0x015, 0x0000F474, - 0x015, 0x0004F477, - 0x015, 0x0008F455, - 0x015, 0x000CF455, - 0xFF0F011F, 0xDEAD, - 0x016, 0x00000339, - 0x016, 0x00040339, - 0x016, 0x00080339, - 0xFF0F011F, 0xABCD, - 0x016, 0x000C0356, - 0xCDCDCDCD, 0xCDCD, - 0x016, 0x000C0366, - 0xFF0F011F, 0xDEAD, - 0x000, 0x00010159, - 0x018, 0x0000F401, - 0x0FE, 0x00000000, - 0x0FE, 0x00000000, - 0x01F, 0x00000003, - 0x0FE, 0x00000000, - 0x0FE, 0x00000000, - 0x01E, 0x00000247, - 0x01F, 0x00000000, - 0x000, 0x00030159, - -}; - -void -ODM_ReadAndConfig_RadioA_1T_8723A( - IN PDM_ODM_T pDM_Odm - ) -{ - #define READ_NEXT_PAIR(v1, v2, i) do { i += 2; v1 = Array[i]; v2 = Array[i+1]; } while(0) - - u4Byte hex = 0; - u4Byte i = 0; - u2Byte count = 0; - pu4Byte ptr_array = NULL; - u1Byte platform = pDM_Odm->SupportPlatform; - u1Byte interfaceValue = pDM_Odm->SupportInterface; - u1Byte board = pDM_Odm->BoardType; - u4Byte ArrayLen = sizeof(Array_RadioA_1T_8723A)/sizeof(u4Byte); - pu4Byte Array = Array_RadioA_1T_8723A; - - - hex += board; - hex += interfaceValue << 8; - hex += platform << 16; - hex += 0xFF000000; - - for (i = 0; i < ArrayLen; i += 2 ) - { - u4Byte v1 = Array[i]; - u4Byte v2 = Array[i+1]; - - // This (offset, data) pair meets the condition. - if ( v1 < 0xCDCDCDCD ) - { - odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2); - continue; - } - else - { // This line is the start line of branch. - if ( !CheckCondition(Array[i], hex) ) - { // Discard the following (offset, data) pairs. - READ_NEXT_PAIR(v1, v2, i); - while (v2 != 0xDEAD && - v2 != 0xCDEF && - v2 != 0xCDCD && i < ArrayLen -2) - { - READ_NEXT_PAIR(v1, v2, i); - } - i -= 2; // prevent from for-loop += 2 - } - else // Configure matched pairs and skip to end of if-else. - { - READ_NEXT_PAIR(v1, v2, i); - while (v2 != 0xDEAD && - v2 != 0xCDEF && - v2 != 0xCDCD && i < ArrayLen -2) - { - odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2); - READ_NEXT_PAIR(v1, v2, i); - } - - while (v2 != 0xDEAD && i < ArrayLen -2) - { - READ_NEXT_PAIR(v1, v2, i); - } - - } - } - } - -} - - -#endif // end of HWIMG_SUPPORT - +/******************************************************************************
+*
+* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms of version 2 of the GNU General Public License as
+* published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+* more details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program; if not, write to the Free Software Foundation, Inc.,
+* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+*
+*
+******************************************************************************/
+
+#include "../odm_precomp.h"
+
+#if (RTL8723A_SUPPORT == 1)
+static BOOLEAN
+CheckCondition(
+ const u4Byte Condition,
+ const u4Byte Hex
+ )
+{
+ u4Byte _board = (Hex & 0x000000FF);
+ u4Byte _interface = (Hex & 0x0000FF00) >> 8;
+ u4Byte _platform = (Hex & 0x00FF0000) >> 16;
+ u4Byte cond = Condition;
+
+ if ( Condition == 0xCDCDCDCD )
+ return TRUE;
+
+ cond = Condition & 0x000000FF;
+ if ( (_board == cond) && cond != 0x00)
+ return FALSE;
+
+ cond = Condition & 0x0000FF00;
+ cond = cond >> 8;
+ if ( (_interface & cond) == 0 && cond != 0x07)
+ return FALSE;
+
+ cond = Condition & 0x00FF0000;
+ cond = cond >> 16;
+ if ( (_platform & cond) == 0 && cond != 0x0F)
+ return FALSE;
+ return TRUE;
+}
+
+
+/******************************************************************************
+* RadioA_1T.TXT
+******************************************************************************/
+
+u4Byte Array_RadioA_1T_8723A[] = {
+ 0x000, 0x00030159,
+ 0x001, 0x00031284,
+ 0x002, 0x00098000,
+ 0xFF0F011F, 0xABCD,
+ 0x003, 0x00018C63,
+ 0xCDCDCDCD, 0xCDCD,
+ 0x003, 0x00039C63,
+ 0xFF0F011F, 0xDEAD,
+ 0x004, 0x000210E7,
+ 0x009, 0x0002044F,
+ 0x00A, 0x0001A3F1,
+ 0x00B, 0x00014787,
+ 0x00C, 0x000896FE,
+ 0x00D, 0x0000E02C,
+ 0x00E, 0x00039CE7,
+ 0x00F, 0x00000451,
+ 0x019, 0x00000000,
+ 0x01A, 0x00030355,
+ 0x01B, 0x00060A00,
+ 0x01C, 0x000FC378,
+ 0x01D, 0x000A1250,
+ 0x01E, 0x0000024F,
+ 0x01F, 0x00000000,
+ 0x020, 0x0000B614,
+ 0x021, 0x0006C000,
+ 0x022, 0x00000000,
+ 0x023, 0x00001558,
+ 0x024, 0x00000060,
+ 0x025, 0x00000483,
+ 0x026, 0x0004F000,
+ 0x027, 0x000EC7D9,
+ 0x028, 0x00057730,
+ 0x029, 0x00004783,
+ 0x02A, 0x00000001,
+ 0x02B, 0x00021334,
+ 0x02A, 0x00000000,
+ 0x02B, 0x00000054,
+ 0x02A, 0x00000001,
+ 0x02B, 0x00000808,
+ 0x02B, 0x00053333,
+ 0x02C, 0x0000000C,
+ 0x02A, 0x00000002,
+ 0x02B, 0x00000808,
+ 0x02B, 0x0005B333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x00000003,
+ 0x02B, 0x00000808,
+ 0x02B, 0x00063333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x00000004,
+ 0x02B, 0x00000808,
+ 0x02B, 0x0006B333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x00000005,
+ 0x02B, 0x00000808,
+ 0x02B, 0x00073333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x00000006,
+ 0x02B, 0x00000709,
+ 0x02B, 0x0005B333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x00000007,
+ 0x02B, 0x00000709,
+ 0x02B, 0x00063333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x00000008,
+ 0x02B, 0x0000060A,
+ 0x02B, 0x0004B333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x00000009,
+ 0x02B, 0x0000060A,
+ 0x02B, 0x00053333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x0000000A,
+ 0x02B, 0x0000060A,
+ 0x02B, 0x0005B333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x0000000B,
+ 0x02B, 0x0000060A,
+ 0x02B, 0x00063333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x0000000C,
+ 0x02B, 0x0000060A,
+ 0x02B, 0x0006B333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x0000000D,
+ 0x02B, 0x0000060A,
+ 0x02B, 0x00073333,
+ 0x02C, 0x0000000D,
+ 0x02A, 0x0000000E,
+ 0x02B, 0x0000050B,
+ 0x02B, 0x00066666,
+ 0x02C, 0x0000001A,
+ 0x02A, 0x000E0000,
+ 0x010, 0x0004000F,
+ 0x011, 0x000E31FC,
+ 0x010, 0x0006000F,
+ 0x011, 0x000FF9F8,
+ 0x010, 0x0002000F,
+ 0x011, 0x000203F9,
+ 0x010, 0x0003000F,
+ 0x011, 0x000FF500,
+ 0x010, 0x00000000,
+ 0x011, 0x00000000,
+ 0x010, 0x0008000F,
+ 0x011, 0x0003F100,
+ 0x010, 0x0009000F,
+ 0x011, 0x00023100,
+ 0x012, 0x00032000,
+ 0x012, 0x00071000,
+ 0x012, 0x000B0000,
+ 0x012, 0x000FC000,
+ 0x013, 0x000287B3,
+ 0x013, 0x000244B7,
+ 0x013, 0x000204AB,
+ 0x013, 0x0001C49F,
+ 0x013, 0x00018493,
+ 0x013, 0x0001429B,
+ 0x013, 0x00010299,
+ 0x013, 0x0000C29C,
+ 0x013, 0x000081A0,
+ 0x013, 0x000040AC,
+ 0x013, 0x00000020,
+ 0x014, 0x0001944C,
+ 0x014, 0x00059444,
+ 0x014, 0x0009944C,
+ 0x014, 0x000D9444,
+ 0xFF0F011F, 0xABCD,
+ 0x015, 0x0000F424,
+ 0x015, 0x0004F424,
+ 0x015, 0x0008F424,
+ 0x015, 0x000CF424,
+ 0xCDCDCDCD, 0xCDCD,
+ 0x015, 0x0000F474,
+ 0x015, 0x0004F477,
+ 0x015, 0x0008F455,
+ 0x015, 0x000CF455,
+ 0xFF0F011F, 0xDEAD,
+ 0x016, 0x00000339,
+ 0x016, 0x00040339,
+ 0x016, 0x00080339,
+ 0xFF0F011F, 0xABCD,
+ 0x016, 0x000C0356,
+ 0xCDCDCDCD, 0xCDCD,
+ 0x016, 0x000C0366,
+ 0xFF0F011F, 0xDEAD,
+ 0x000, 0x00010159,
+ 0x018, 0x0000F401,
+ 0x0FE, 0x00000000,
+ 0x0FE, 0x00000000,
+ 0x01F, 0x00000003,
+ 0x0FE, 0x00000000,
+ 0x0FE, 0x00000000,
+ 0x01E, 0x00000247,
+ 0x01F, 0x00000000,
+ 0x000, 0x00030159,
+
+};
+
+void
+ODM_ReadAndConfig_RadioA_1T_8723A(
+ IN PDM_ODM_T pDM_Odm
+ )
+{
+ #define READ_NEXT_PAIR(v1, v2, i) do { i += 2; v1 = Array[i]; v2 = Array[i+1]; } while(0)
+
+ u4Byte hex = 0;
+ u4Byte i = 0;
+ u2Byte count = 0;
+ pu4Byte ptr_array = NULL;
+ u1Byte platform = pDM_Odm->SupportPlatform;
+ u1Byte interfaceValue = pDM_Odm->SupportInterface;
+ u1Byte board = pDM_Odm->BoardType;
+ u4Byte ArrayLen = sizeof(Array_RadioA_1T_8723A)/sizeof(u4Byte);
+ pu4Byte Array = Array_RadioA_1T_8723A;
+
+
+ hex += board;
+ hex += interfaceValue << 8;
+ hex += platform << 16;
+ hex += 0xFF000000;
+
+ for (i = 0; i < ArrayLen; i += 2 )
+ {
+ u4Byte v1 = Array[i];
+ u4Byte v2 = Array[i+1];
+
+ // This (offset, data) pair meets the condition.
+ if ( v1 < 0xCDCDCDCD )
+ {
+ odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2);
+ continue;
+ }
+ else
+ { // This line is the start line of branch.
+ if ( !CheckCondition(Array[i], hex) )
+ { // Discard the following (offset, data) pairs.
+ READ_NEXT_PAIR(v1, v2, i);
+ while (v2 != 0xDEAD &&
+ v2 != 0xCDEF &&
+ v2 != 0xCDCD && i < ArrayLen -2)
+ {
+ READ_NEXT_PAIR(v1, v2, i);
+ }
+ i -= 2; // prevent from for-loop += 2
+ }
+ else // Configure matched pairs and skip to end of if-else.
+ {
+ READ_NEXT_PAIR(v1, v2, i);
+ while (v2 != 0xDEAD &&
+ v2 != 0xCDEF &&
+ v2 != 0xCDCD && i < ArrayLen -2)
+ {
+ odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2);
+ READ_NEXT_PAIR(v1, v2, i);
+ }
+
+ while (v2 != 0xDEAD && i < ArrayLen -2)
+ {
+ READ_NEXT_PAIR(v1, v2, i);
+ }
+
+ }
+ }
+ }
+
+}
+
+
+#endif // end of HWIMG_SUPPORT
+
|