static u32 rtl_phydm_get_version(struct rtl_priv *rtlpriv) { u32 ver = 0; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) ver = RELEASE_VERSION_8822B; return ver; }
static bool rtl_phydm_switch_channel(struct rtl_priv *rtlpriv, u8 central_ch) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_switch_channel_8822b(dm, central_ch); return false; }
static bool rtl_phydm_parameter_init(struct rtl_priv *rtlpriv, bool post) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_parameter_init(dm, post ? ODM_POST_SETTING : ODM_PRE_SETTING); return false; }
static u8 rtl_phydm_read_txagc(struct rtl_priv *rtlpriv, enum radio_path rfpath, u8 hw_rate) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); enum odm_rf_radio_path odm_rfpath = (enum odm_rf_radio_path)rfpath; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_read_txagc_8822b(dm, odm_rfpath, hw_rate); return -1; }
static bool rtl_phydm_iq_calibrate(struct rtl_priv *rtlpriv) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); if (IS_HARDWARE_TYPE_8822B(rtlpriv)) phy_iq_calibrate_8822b(dm, false); else return false; return true; }
static bool rtl_phydm_write_txagc(struct rtl_priv *rtlpriv, u32 power_index, enum radio_path rfpath, u8 hw_rate) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); enum odm_rf_radio_path odm_rfpath = (enum odm_rf_radio_path)rfpath; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_write_txagc_8822b(dm, power_index, odm_rfpath, hw_rate); return false; }
static u32 rtl_phydm_read_rf_reg(struct rtl_priv *rtlpriv, enum radio_path rfpath, u32 addr, u32 mask) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); enum odm_rf_radio_path odm_rfpath = (enum odm_rf_radio_path)rfpath; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_read_rf_reg_8822b(dm, odm_rfpath, addr, mask); return -1; }
static bool rtl_phydm_write_rf_reg(struct rtl_priv *rtlpriv, enum radio_path rfpath, u32 addr, u32 mask, u32 data) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); enum odm_rf_radio_path odm_rfpath = (enum odm_rf_radio_path)rfpath; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_write_rf_reg_8822b(dm, odm_rfpath, addr, mask, data); return false; }
static bool rtl_phydm_switch_bandwidth(struct rtl_priv *rtlpriv, u8 primary_ch_idx, enum ht_channel_width bandwidth) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); enum odm_bw odm_bw = (enum odm_bw)bandwidth; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_switch_bandwidth_8822b(dm, primary_ch_idx, odm_bw); return false; }
static bool rtl_phydm_trx_mode(struct rtl_priv *rtlpriv, enum radio_mask tx_path, enum radio_mask rx_path, bool is_tx2_path) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); if (IS_HARDWARE_TYPE_8822B(rtlpriv)) return config_phydm_trx_mode_8822b(dm, (enum odm_rf_path)tx_path, (enum odm_rf_path)rx_path, is_tx2_path); return false; }
static bool rtl_phydm_load_txpower_limit(struct rtl_priv *rtlpriv) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); enum hal_status status; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) { odm_read_and_config_mp_8822b_txpwr_lmt(dm); } else { status = odm_config_rf_with_header_file(dm, CONFIG_RF_TXPWR_LMT, 0); if (status != HAL_STATUS_SUCCESS) return false; } return true; }
static int rtl_phydm_init_priv(struct rtl_priv *rtlpriv, struct rtl_phydm_params *params) { struct phy_dm_struct *dm = rtlpriv_to_phydm(rtlpriv); enum odm_ic_type ic; if (IS_HARDWARE_TYPE_8822B(rtlpriv)) ic = ODM_RTL8822B; else return 0; rtlpriv->phydm.internal = kzalloc(sizeof(struct phy_dm_struct), GFP_KERNEL); _rtl_phydm_init_com_info(rtlpriv, ic, params); odm_init_all_timers(dm); return 1; }
BOOLEAN HalComTxbf_Get( IN PADAPTER Adapter, IN u1Byte getType, OUT PVOID pOutBuf ) { PHAL_DATA_TYPE pHalData=GET_HAL_DATA(Adapter); PDM_ODM_T pDM_Odm = &pHalData->DM_OutSrc; PBOOLEAN pBoolean=(PBOOLEAN)pOutBuf; ps4Byte pS4Tmp=(ps4Byte)pOutBuf; pu4Byte pU4Tmp=(pu4Byte)pOutBuf; pu1Byte pU1Tmp=(pu1Byte)pOutBuf; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); if (getType == TXBF_GET_EXPLICIT_BEAMFORMEE) { if (IS_HARDWARE_TYPE_OLDER_THAN_8812A(Adapter)) *pBoolean = FALSE; else if (/*IS_HARDWARE_TYPE_8822B(Adapter) ||*/ IS_HARDWARE_TYPE_8821B(Adapter) || IS_HARDWARE_TYPE_8192E(Adapter) || IS_HARDWARE_TYPE_JAGUAR(Adapter) || IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) *pBoolean = TRUE; else *pBoolean = FALSE; } else if (getType == TXBF_GET_EXPLICIT_BEAMFORMER) { if (IS_HARDWARE_TYPE_OLDER_THAN_8812A(Adapter)) *pBoolean = FALSE; else if (/*IS_HARDWARE_TYPE_8822B(Adapter) ||*/ IS_HARDWARE_TYPE_8821B(Adapter) || IS_HARDWARE_TYPE_8192E(Adapter) || IS_HARDWARE_TYPE_JAGUAR(Adapter) || IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) { if(pHalData->RF_Type == RF_2T2R || pHalData->RF_Type == RF_3T3R) *pBoolean = TRUE; else *pBoolean = FALSE; } else *pBoolean = FALSE; } else if (getType == TXBF_GET_MU_MIMO_STA) { #if (RTL8822B_SUPPORT == 1) if (/*pDM_Odm->SupportICType & (ODM_RTL8822B)*/ IS_HARDWARE_TYPE_8822B(Adapter)) *pBoolean = TRUE; else #endif *pBoolean = FALSE; } else if (getType == TXBF_GET_MU_MIMO_AP) { #if (RTL8822B_SUPPORT == 1) if (/*pDM_Odm->SupportICType & (ODM_RTL8822B)*/ IS_HARDWARE_TYPE_8822B(Adapter)) *pBoolean = TRUE; else #endif *pBoolean = FALSE; } return TRUE; }