1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\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
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
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
19 ******************************************************************************/
\r
21 #include "Mp_Precomp.h"
\r
22 #include "../phydm_precomp.h"
\r
24 #if (RTL8723B_SUPPORT == 1)
\r
27 IN PDM_ODM_T pDM_Odm,
\r
28 IN const u4Byte Condition1,
\r
29 IN const u4Byte Condition2
\r
32 u1Byte _BoardType = ((pDM_Odm->BoardType & BIT4) >> 4) << 0 | // _GLNA
\r
33 ((pDM_Odm->BoardType & BIT3) >> 3) << 1 | // _GPA
\r
34 ((pDM_Odm->BoardType & BIT7) >> 7) << 2 | // _ALNA
\r
35 ((pDM_Odm->BoardType & BIT6) >> 6) << 3 | // _APA
\r
36 ((pDM_Odm->BoardType & BIT2) >> 2) << 4; // _BT
\r
38 u4Byte cond1 = Condition1, cond2 = Condition2;
\r
39 u4Byte driver1 = pDM_Odm->CutVersion << 24 |
\r
40 pDM_Odm->SupportPlatform << 16 |
\r
41 pDM_Odm->PackageType << 12 |
\r
42 pDM_Odm->SupportInterface << 8 |
\r
45 u4Byte driver2 = pDM_Odm->TypeGLNA << 0 |
\r
46 pDM_Odm->TypeGPA << 8 |
\r
47 pDM_Odm->TypeALNA << 16 |
\r
48 pDM_Odm->TypeAPA << 24;
\r
50 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
\r
51 ("===> [8812A] CheckPositive (cond1, cond2) = (0x%X 0x%X)\n", cond1, cond2));
\r
52 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
\r
53 ("===> [8812A] CheckPositive (driver1, driver2) = (0x%X 0x%X)\n", driver1, driver2));
\r
55 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
\r
56 (" (Platform, Interface) = (0x%X, 0x%X)\n", pDM_Odm->SupportPlatform, pDM_Odm->SupportInterface));
\r
57 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
\r
58 (" (Board, Package) = (0x%X, 0x%X)\n", pDM_Odm->BoardType, pDM_Odm->PackageType));
\r
61 //============== Value Defined Check ===============//
\r
62 //QFN Type [15:12] and Cut Version [27:24] need to do value check
\r
64 if(((cond1 & 0x0000F000) != 0) &&((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))
\r
66 if(((cond1 & 0x0F000000) != 0) &&((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))
\r
69 //=============== Bit Defined Check ================//
\r
70 // We don't care [31:28] and [23:20]
\r
72 cond1 &= 0x000F0FFF;
\r
73 driver1 &= 0x000F0FFF;
\r
75 if ((cond1 & driver1) == cond1)
\r
78 if ((cond1 & 0x0F) == 0) // BoardType is DONTCARE
\r
81 if ((cond1 & BIT0) != 0) //GLNA
\r
82 bitMask |= 0x000000FF;
\r
83 if ((cond1 & BIT1) != 0) //GPA
\r
84 bitMask |= 0x0000FF00;
\r
85 if ((cond1 & BIT2) != 0) //ALNA
\r
86 bitMask |= 0x00FF0000;
\r
87 if ((cond1 & BIT3) != 0) //APA
\r
88 bitMask |= 0xFF000000;
\r
90 if ((cond2 & bitMask) == (driver2 & bitMask)) // BoardType of each RF path is matched
\r
102 IN PDM_ODM_T pDM_Odm,
\r
103 IN const u4Byte Condition1,
\r
104 IN const u4Byte Condition2
\r
110 /******************************************************************************
\r
112 ******************************************************************************/
\r
114 u4Byte Array_MP_8723B_MAC_REG[] = {
\r
222 ODM_ReadAndConfig_MP_8723B_MAC_REG(
\r
223 IN PDM_ODM_T pDM_Odm
\r
228 BOOLEAN bMatched = TRUE, bSkipped = FALSE;
\r
230 u4Byte ArrayLen = sizeof(Array_MP_8723B_MAC_REG)/sizeof(u4Byte);
\r
231 pu4Byte Array = Array_MP_8723B_MAC_REG;
\r
233 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8723B_MAC_REG\n"));
\r
235 while(( i+1) < ArrayLen)
\r
237 u4Byte v1 = Array[i];
\r
238 u4Byte v2 = Array[i+1];
\r
240 if(v1 & (BIT31|BIT30)) //positive & negative condition
\r
242 if(v1 & BIT31) // positive condition
\r
244 cCond = (u1Byte)((v1 & (BIT29|BIT28)) >> 28);
\r
245 if(cCond == COND_ENDIF) //end
\r
250 else if(cCond == COND_ELSE) //else
\r
252 bMatched = bSkipped?FALSE:TRUE;
\r
254 else //if , else if
\r
260 if(CheckPositive(pDM_Odm, v1, v2))
\r
273 else if(v1 & BIT30){ //negative condition
\r
280 odm_ConfigMAC_8723B(pDM_Odm, v1, (u1Byte)v2);
\r
287 ODM_GetVersion_MP_8723B_MAC_REG(void)
\r
292 #endif // end of HWIMG_SUPPORT
\r