/* SPDX-License-Identifier: GPL-2.0 */ /* Copyright(c) 2007 - 2017 Realtek Corporation */ #ifndef __HAL_PHY_H__ #define __HAL_PHY_H__ #if DISABLE_BB_RF #define HAL_FW_ENABLE 0 #define HAL_MAC_ENABLE 0 #define HAL_BB_ENABLE 0 #define HAL_RF_ENABLE 0 #else /* FPGA_PHY and ASIC */ #define HAL_FW_ENABLE 1 #define HAL_MAC_ENABLE 1 #define HAL_BB_ENABLE 1 #define HAL_RF_ENABLE 1 #endif #define RF6052_MAX_TX_PWR 0x3F #define RF6052_MAX_REG_88E 0xFF #define RF6052_MAX_REG_92C 0x7F #define RF6052_MAX_REG \ ((RF6052_MAX_REG_88E > RF6052_MAX_REG_92C) ? RF6052_MAX_REG_88E : RF6052_MAX_REG_92C) #define GET_RF6052_REAL_MAX_REG(_Adapter) \ (RF6052_MAX_REG_92C) #define RF6052_MAX_PATH 2 /* * Antenna detection method, i.e., using single tone detection or RSSI reported from each antenna detected. * Added by Roger, 2013.05.22. * */ #define ANT_DETECT_BY_SINGLE_TONE BIT0 #define ANT_DETECT_BY_RSSI BIT1 #define IS_ANT_DETECT_SUPPORT_SINGLE_TONE(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_SINGLE_TONE) #define IS_ANT_DETECT_SUPPORT_RSSI(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_RSSI) /*--------------------------Define Parameters-------------------------------*/ enum rf_chip { RF_CHIP_MIN = 0, /* 0 */ RF_8225 = 1, /* 1 11b/g RF for verification only */ RF_8256 = 2, /* 2 11b/g/n */ RF_8258 = 3, /* 3 11a/b/g/n RF */ RF_6052 = 4, /* 4 11b/g/n RF */ RF_PSEUDO_11N = 5, /* 5, It is a temporality RF. */ RF_CHIP_MAX }; enum antenna_path { ANTENNA_NONE = 0, ANTENNA_D = 1, ANTENNA_C = 2, ANTENNA_CD = 3, ANTENNA_B = 4, ANTENNA_BD = 5, ANTENNA_BC = 6, ANTENNA_BCD = 7, ANTENNA_A = 8, ANTENNA_AD = 9, ANTENNA_AC = 10, ANTENNA_ACD = 11, ANTENNA_AB = 12, ANTENNA_ABD = 13, ANTENNA_ABC = 14, ANTENNA_ABCD = 15 }; enum rf_content { radioa_txt = 0x1000, radiob_txt = 0x1001, radioc_txt = 0x1002, radiod_txt = 0x1003 }; enum baseband_config_type { BaseBand_Config_PHY_REG = 0, /* Radio Path A */ BaseBand_Config_AGC_TAB = 1, /* Radio Path B */ BaseBand_Config_AGC_TAB_2G = 2, BaseBand_Config_AGC_TAB_5G = 3, BaseBand_Config_PHY_REG_PG }; enum hw_block { HW_BLOCK_MAC = 0, HW_BLOCK_PHY0 = 1, HW_BLOCK_PHY1 = 2, HW_BLOCK_RF = 3, HW_BLOCK_MAXIMUM = 4, /* Never use this */ }; enum wireless_mode { WIRELESS_MODE_UNKNOWN = 0x00, WIRELESS_MODE_A = 0x01, WIRELESS_MODE_B = 0x02, WIRELESS_MODE_G = 0x04, WIRELESS_MODE_AUTO = 0x08, WIRELESS_MODE_N_24G = 0x10, WIRELESS_MODE_N_5G = 0x20, WIRELESS_MODE_AC_5G = 0x40, WIRELESS_MODE_AC_24G = 0x80, WIRELESS_MODE_AC_ONLY = 0x100, }; enum sw_chnl_cmd_id { CmdID_End, CmdID_SetTxPowerLevel, CmdID_BBRegWrite10, CmdID_WritePortUlong, CmdID_WritePortUshort, CmdID_WritePortUchar, CmdID_RF_WriteReg, }; struct sw_chnl_cmd { enum sw_chnl_cmd_id CmdID; u32 Para1; u32 Para2; u32 msDelay; }; struct antenna_sel_ofdm { u32 r_tx_antenna:4; u32 r_ant_l:4; u32 r_ant_non_ht:4; u32 r_ant_ht1:4; u32 r_ant_ht2:4; u32 r_ant_ht_s1:4; u32 r_ant_non_ht_s1:4; u32 OFDM_TXSC:2; u32 Reserved:2; }; struct antenna_sel_cck { u8 r_cckrx_enable_2:2; u8 r_cckrx_enable:2; u8 r_ccktx_enable:4; }; struct shadow_compare_map { /* Shadow register value */ u32 Value; /* Compare or not flag */ u8 Compare; /* Record If it had ever modified unpredicted */ u8 ErrorOrNot; /* Recorver Flag */ u8 Recorver; /* */ u8 Driver_Write; }; /*--------------------------Exported Function prototype---------------------*/ u32 PHY_CalculateBitShift(u32 BitMask); u32 PHY_RFShadowRead(struct adapter * Adapter, enum rf_path eRFPath, u32 Offset); void PHY_RFShadowWrite(struct adapter * Adapter, enum rf_path eRFPath, u32 Offset, u32 Data); bool PHY_RFShadowCompare(struct adapter * Adapter, enum rf_path eRFPath, u32 Offset); void PHY_RFShadowRecorver(struct adapter *Adapter, enum rf_path eRFPath, u32 Offset); void PHY_RFShadowCompareAll(struct adapter *Adapter); void PHY_RFShadowRecorverAll(struct adapter *Adapter); void PHY_RFShadowCompareFlagSet(struct adapter *Adapter, enum rf_path eRFPath, u32 Offset, u8 Type); void PHY_RFShadowRecorverFlagSet(struct adapter *Adapter, enum rf_path eRFPath, u32 Offset, u8 Type); void PHY_RFShadowCompareFlagSetAll(struct adapter *Adapter); void PHY_RFShadowRecorverFlagSetAll(struct adapter *Adapter); void PHY_RFShadowRefresh(struct adapter *Adapter); #endif /* __HAL_COMMON_H__ */