summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/rtl8723a/odm_RegConfig8723A.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/rtl8723a/odm_RegConfig8723A.c')
-rwxr-xr-xdrivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/rtl8723a/odm_RegConfig8723A.c192
1 files changed, 192 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/rtl8723a/odm_RegConfig8723A.c b/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/rtl8723a/odm_RegConfig8723A.c
new file mode 100755
index 000000000000..e3dae30d32a0
--- /dev/null
+++ b/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/rtl8723a/odm_RegConfig8723A.c
@@ -0,0 +1,192 @@
+/******************************************************************************
+ *
+ * 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)
+
+void
+odm_ConfigRFReg_8723A(
+ IN PDM_ODM_T pDM_Odm,
+ IN u4Byte Addr,
+ IN u4Byte Data,
+ IN ODM_RF_RADIO_PATH_E RF_PATH,
+ IN u4Byte RegAddr
+ )
+{
+ if(Addr == 0xfe)
+ {
+ #ifdef CONFIG_LONG_DELAY_ISSUE
+ ODM_sleep_ms(50);
+ #else
+ ODM_delay_ms(50);
+ #endif
+ }
+ else if (Addr == 0xfd)
+ {
+ ODM_delay_ms(5);
+ }
+ else if (Addr == 0xfc)
+ {
+ ODM_delay_ms(1);
+ }
+ else if (Addr == 0xfb)
+ {
+ ODM_delay_us(50);
+ }
+ else if (Addr == 0xfa)
+ {
+ ODM_delay_us(5);
+ }
+ else if (Addr == 0xf9)
+ {
+ ODM_delay_us(1);
+ }
+ else
+ {
+ ODM_SetRFReg(pDM_Odm, RF_PATH, RegAddr, bRFRegOffsetMask, Data);
+ // Add 1us delay between BB/RF register setting.
+ ODM_delay_us(1);
+ }
+}
+
+
+void
+odm_ConfigRF_RadioA_8723A(
+ IN PDM_ODM_T pDM_Odm,
+ IN u4Byte Addr,
+ IN u4Byte Data
+ )
+{
+ u4Byte content = 0x1000; // RF_Content: radioa_txt
+ u4Byte maskforPhySet= (u4Byte)(content&0xE000);
+
+ odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, ODM_RF_PATH_A, Addr|maskforPhySet);
+
+ ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ConfigRFWithHeaderFile: [RadioA] %08X %08X\n", Addr, Data));
+}
+
+void
+odm_ConfigRF_RadioB_8723A(
+ IN PDM_ODM_T pDM_Odm,
+ IN u4Byte Addr,
+ IN u4Byte Data
+ )
+{
+ u4Byte content = 0x1001; // RF_Content: radiob_txt
+ u4Byte maskforPhySet= (u4Byte)(content&0xE000);
+
+ odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, ODM_RF_PATH_B, Addr|maskforPhySet);
+
+ ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ConfigRFWithHeaderFile: [RadioB] %08X %08X\n", Addr, Data));
+
+}
+
+void
+odm_ConfigMAC_8723A(
+ IN PDM_ODM_T pDM_Odm,
+ IN u4Byte Addr,
+ IN u1Byte Data
+ )
+{
+ ODM_Write1Byte(pDM_Odm, Addr, Data);
+ ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ConfigMACWithHeaderFile: [MAC_REG] %08X %08X\n", Addr, Data));
+}
+
+void
+odm_ConfigBB_AGC_8723A(
+ IN PDM_ODM_T pDM_Odm,
+ IN u4Byte Addr,
+ IN u4Byte Bitmask,
+ IN u4Byte Data
+ )
+{
+ ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
+ // Add 1us delay between BB/RF register setting.
+ ODM_delay_us(1);
+
+ ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ConfigBBWithHeaderFile: [AGC_TAB] %08X %08X\n", Addr, Data));
+}
+
+void
+odm_ConfigBB_PHY_REG_PG_8723A(
+ IN PDM_ODM_T pDM_Odm,
+ IN u4Byte Addr,
+ IN u4Byte Bitmask,
+ IN u4Byte Data
+ )
+{
+ if (Addr == 0xfe)
+ #ifdef CONFIG_LONG_DELAY_ISSUE
+ ODM_sleep_ms(50);
+ #else
+ ODM_delay_ms(50);
+ #endif
+ else if (Addr == 0xfd)
+ ODM_delay_ms(5);
+ else if (Addr == 0xfc)
+ ODM_delay_ms(1);
+ else if (Addr == 0xfb)
+ ODM_delay_us(50);
+ else if (Addr == 0xfa)
+ ODM_delay_us(5);
+ else if (Addr == 0xf9)
+ ODM_delay_us(1);
+ // TODO: ODM_StorePwrIndexDiffRateOffset(...)
+ // storePwrIndexDiffRateOffset(Adapter, Addr, Bitmask, Data);
+
+ ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ConfigBBWithHeaderFile: [PHY_REG] %08X %08X %08X\n", Addr, Bitmask, Data));
+}
+
+void
+odm_ConfigBB_PHY_8723A(
+ IN PDM_ODM_T pDM_Odm,
+ IN u4Byte Addr,
+ IN u4Byte Bitmask,
+ IN u4Byte Data
+ )
+{
+ if (Addr == 0xfe)
+ #ifdef CONFIG_LONG_DELAY_ISSUE
+ ODM_sleep_ms(50);
+ #else
+ ODM_delay_ms(50);
+ #endif
+ else if (Addr == 0xfd)
+ ODM_delay_ms(5);
+ else if (Addr == 0xfc)
+ ODM_delay_ms(1);
+ else if (Addr == 0xfb)
+ ODM_delay_us(50);
+ else if (Addr == 0xfa)
+ ODM_delay_us(5);
+ else if (Addr == 0xf9)
+ ODM_delay_us(1);
+ else if (Addr == 0xa24)
+ pDM_Odm->RFCalibrateInfo.RegA24 = Data;
+ ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
+
+ // Add 1us delay between BB/RF register setting.
+ ODM_delay_us(1);
+
+ ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ConfigBBWithHeaderFile: [PHY_REG] %08X %08X\n", Addr, Data));
+}
+#endif
+