Remove the HW_VAR_H2C_FW_PWRMODE case from SetHwReg8188EU() and move its functionality to a new function in rtw_pwrctrl.c. This is part of the ongoing effort to get rid of the unwanted hal layer. Signed-off-by: Michael Straube <straube.linux@xxxxxxxxx> --- drivers/staging/r8188eu/core/rtw_p2p.c | 4 ++-- drivers/staging/r8188eu/core/rtw_pwrctrl.c | 19 +++++++++++++++---- drivers/staging/r8188eu/hal/usb_halinit.c | 11 ----------- drivers/staging/r8188eu/include/hal_intf.h | 1 - drivers/staging/r8188eu/include/rtw_pwrctrl.h | 1 + 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/staging/r8188eu/core/rtw_p2p.c b/drivers/staging/r8188eu/core/rtw_p2p.c index 80305d128ccd..dcf828a57179 100644 --- a/drivers/staging/r8188eu/core/rtw_p2p.c +++ b/drivers/staging/r8188eu/core/rtw_p2p.c @@ -1612,7 +1612,7 @@ void p2p_ps_wk_hdl(struct adapter *padapter, u8 p2p_ps_state) if (padapter->pwrctrlpriv.bFwCurrentInPSMode) { if (pwrpriv->smart_ps == 0) { pwrpriv->smart_ps = 2; - SetHwReg8188EU(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&padapter->pwrctrlpriv.pwr_mode)); + rtw_set_firmware_ps_mode(padapter, pwrpriv->pwr_mode); } } break; @@ -1623,7 +1623,7 @@ void p2p_ps_wk_hdl(struct adapter *padapter, u8 p2p_ps_state) if (pwdinfo->ctwindow > 0) { if (pwrpriv->smart_ps != 0) { pwrpriv->smart_ps = 0; - SetHwReg8188EU(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&padapter->pwrctrlpriv.pwr_mode)); + rtw_set_firmware_ps_mode(padapter, pwrpriv->pwr_mode); } } rtl8188e_set_p2p_ps_offload_cmd(padapter, p2p_ps_state); diff --git a/drivers/staging/r8188eu/core/rtw_pwrctrl.c b/drivers/staging/r8188eu/core/rtw_pwrctrl.c index efdc7de49d49..f13bd5cdaa23 100644 --- a/drivers/staging/r8188eu/core/rtw_pwrctrl.c +++ b/drivers/staging/r8188eu/core/rtw_pwrctrl.c @@ -176,6 +176,19 @@ static bool PS_RDY_CHECK(struct adapter *padapter) return true; } +void rtw_set_firmware_ps_mode(struct adapter *adapter, u8 mode) +{ + struct hal_data_8188e *haldata = &adapter->haldata; + struct odm_dm_struct *odmpriv = &haldata->odmpriv; + + /* Force leave RF low power mode for 1T1R to prevent + * conflicting setting in firmware power saving sequence. + */ + if (mode != PS_MODE_ACTIVE) + ODM_RF_Saving(odmpriv, true); + rtl8188e_set_FwPwrMode_cmd(adapter, mode); +} + void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode) { struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; @@ -193,11 +206,10 @@ void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_a return; } - /* if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) */ if (ps_mode == PS_MODE_ACTIVE) { if (pwdinfo->opp_ps == 0) { pwrpriv->pwr_mode = ps_mode; - SetHwReg8188EU(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); + rtw_set_firmware_ps_mode(padapter, ps_mode); pwrpriv->bFwCurrentInPSMode = false; } } else { @@ -206,14 +218,13 @@ void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_a pwrpriv->pwr_mode = ps_mode; pwrpriv->smart_ps = smart_ps; pwrpriv->bcn_ant_mode = bcn_ant_mode; - SetHwReg8188EU(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); + rtw_set_firmware_ps_mode(padapter, ps_mode); /* Set CTWindow after LPS */ if (pwdinfo->opp_ps == 1) p2p_ps_wk_cmd(padapter, P2P_PS_ENABLE, 0); } } - } static bool lps_rf_on(struct adapter *adapter) diff --git a/drivers/staging/r8188eu/hal/usb_halinit.c b/drivers/staging/r8188eu/hal/usb_halinit.c index 62ada1790d0d..b62ebd011886 100644 --- a/drivers/staging/r8188eu/hal/usb_halinit.c +++ b/drivers/staging/r8188eu/hal/usb_halinit.c @@ -1105,17 +1105,6 @@ void SetHwReg8188EU(struct adapter *Adapter, u8 variable, u8 *val) } } break; - case HW_VAR_H2C_FW_PWRMODE: - { - u8 psmode = (*(u8 *)val); - - /* Forece leave RF low power mode for 1T1R to prevent conficting setting in Fw power */ - /* saving sequence. 2010.06.07. Added by tynli. Suggested by SD3 yschang. */ - if (psmode != PS_MODE_ACTIVE) - ODM_RF_Saving(podmpriv, true); - rtl8188e_set_FwPwrMode_cmd(Adapter, psmode); - } - break; case HW_VAR_H2C_MEDIA_STATUS_RPT: rtl8188e_set_FwMediaStatus_cmd(Adapter, (*(__le16 *)val)); break; diff --git a/drivers/staging/r8188eu/include/hal_intf.h b/drivers/staging/r8188eu/include/hal_intf.h index bbbdcfa253f8..26dd395c239f 100644 --- a/drivers/staging/r8188eu/include/hal_intf.h +++ b/drivers/staging/r8188eu/include/hal_intf.h @@ -20,7 +20,6 @@ enum hw_variables { HW_VAR_DM_FUNC_CLR, HW_VAR_AC_PARAM_BE, HW_VAR_AMPDU_FACTOR, - HW_VAR_H2C_FW_PWRMODE, HW_VAR_H2C_MEDIA_STATUS_RPT, }; diff --git a/drivers/staging/r8188eu/include/rtw_pwrctrl.h b/drivers/staging/r8188eu/include/rtw_pwrctrl.h index 1d7dba853c40..affaf4ca5495 100644 --- a/drivers/staging/r8188eu/include/rtw_pwrctrl.h +++ b/drivers/staging/r8188eu/include/rtw_pwrctrl.h @@ -95,6 +95,7 @@ struct pwrctrl_priv { void rtw_init_pwrctrl_priv(struct adapter *adapter); +void rtw_set_firmware_ps_mode(struct adapter *adapter, u8 mode); void rtw_set_ps_mode(struct adapter *adapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode); void LeaveAllPowerSaveMode(struct adapter *adapter); -- 2.35.1