| // SPDX-License-Identifier: GPL-2.0 |
| /* Copyright(c) 2007 - 2011 Realtek Corporation. */ |
| |
| #include "../include/drv_types.h" |
| |
| static void odm_ConfigRFReg_8188E(struct odm_dm_struct *pDM_Odm, u32 Addr, |
| u32 Data, u32 RegAddr) |
| { |
| if (Addr == 0xffe) { |
| msleep(50); |
| } else if (Addr == 0xfd) { |
| mdelay(5); |
| } else if (Addr == 0xfc) { |
| mdelay(1); |
| } else if (Addr == 0xfb) { |
| udelay(50); |
| } else if (Addr == 0xfa) { |
| udelay(5); |
| } else if (Addr == 0xf9) { |
| udelay(1); |
| } else { |
| rtl8188e_PHY_SetRFReg(pDM_Odm->Adapter, RegAddr, bRFRegOffsetMask, Data); |
| /* Add 1us delay between BB/RF register setting. */ |
| udelay(1); |
| } |
| } |
| |
| void odm_ConfigRF_RadioA_8188E(struct odm_dm_struct *pDM_Odm, u32 Addr, u32 Data) |
| { |
| u32 content = 0x1000; /* RF_Content: radioa_txt */ |
| u32 maskforPhySet = (u32)(content & 0xE000); |
| |
| odm_ConfigRFReg_8188E(pDM_Odm, Addr, Data, Addr | maskforPhySet); |
| } |
| |
| void odm_ConfigMAC_8188E(struct odm_dm_struct *pDM_Odm, u32 Addr, u8 Data) |
| { |
| rtw_write8(pDM_Odm->Adapter, Addr, Data); |
| } |
| |
| void odm_ConfigBB_AGC_8188E(struct odm_dm_struct *pDM_Odm, u32 Addr, u32 Bitmask, u32 Data) |
| { |
| rtl8188e_PHY_SetBBReg(pDM_Odm->Adapter, Addr, Bitmask, Data); |
| /* Add 1us delay between BB/RF register setting. */ |
| udelay(1); |
| } |
| |
| void odm_ConfigBB_PHY_REG_PG_8188E(struct odm_dm_struct *pDM_Odm, u32 Addr, |
| u32 Bitmask, u32 Data) |
| { |
| if (Addr == 0xfe) |
| msleep(50); |
| else if (Addr == 0xfd) |
| mdelay(5); |
| else if (Addr == 0xfc) |
| mdelay(1); |
| else if (Addr == 0xfb) |
| udelay(50); |
| else if (Addr == 0xfa) |
| udelay(5); |
| else if (Addr == 0xf9) |
| udelay(1); |
| else |
| storePwrIndexDiffRateOffset(pDM_Odm->Adapter, Addr, Bitmask, Data); |
| } |
| |
| void odm_ConfigBB_PHY_8188E(struct odm_dm_struct *pDM_Odm, u32 Addr, u32 Bitmask, u32 Data) |
| { |
| if (Addr == 0xfe) { |
| msleep(50); |
| } else if (Addr == 0xfd) { |
| mdelay(5); |
| } else if (Addr == 0xfc) { |
| mdelay(1); |
| } else if (Addr == 0xfb) { |
| udelay(50); |
| } else if (Addr == 0xfa) { |
| udelay(5); |
| } else if (Addr == 0xf9) { |
| udelay(1); |
| } else { |
| if (Addr == 0xa24) |
| pDM_Odm->RFCalibrateInfo.RegA24 = Data; |
| rtl8188e_PHY_SetBBReg(pDM_Odm->Adapter, Addr, Bitmask, Data); |
| |
| /* Add 1us delay between BB/RF register setting. */ |
| udelay(1); |
| } |
| } |