From f1671189530c5afef732efaf0fa2d90b44fc0a16 Mon Sep 17 00:00:00 2001 From: Yao Xiao Date: Tue, 25 Sep 2018 11:34:28 +0800 Subject: [PATCH] net: wireless: rtl8723ds: fixed some issues 1. fix disconnection during suspend/resume 2. fix unable to wake during suspend Change-Id: I3e1d535e7cee536a253446dc482d85f54a612323 Signed-off-by: Yao Xiao --- .../wireless/rockchip_wlan/rtl8723ds/hal/hal_com.c | 5 +++++ .../rtl8723ds/hal/rtl8723d/sdio/sdio_halinit.c | 11 ++++++++++- .../rockchip_wlan/rtl8723ds/os_dep/linux/os_intfs.c | 3 ++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/hal_com.c b/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/hal_com.c index 10b2325d6252..c8987fa9a18c 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/hal_com.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/hal_com.c @@ -4451,6 +4451,11 @@ static u8 rtw_hal_set_wowlan_ctrl_cmd(_adapter *adapter, u8 enable, u8 change_un gpio_pulse_cnt = 0x04; } #endif + if (enable) { + RTW_INFO("gpio_pulse_en\n"); + gpio_pulse_en = 1; + gpio_pulse_cnt = 0x04; + } SET_H2CCMD_WOWLAN_FUNC_ENABLE(u1H2CWoWlanCtrlParm, enable); SET_H2CCMD_WOWLAN_PATTERN_MATCH_ENABLE(u1H2CWoWlanCtrlParm, enable); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/rtl8723d/sdio/sdio_halinit.c b/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/rtl8723d/sdio/sdio_halinit.c index e1fb78b8794c..fe80a43ec5f9 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/rtl8723d/sdio/sdio_halinit.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723ds/hal/rtl8723d/sdio/sdio_halinit.c @@ -1645,6 +1645,7 @@ u8 SetHwReg8723DS(PADAPTER padapter, u8 variable, u8 *val) } else if (enable == _FALSE) { RTW_INFO("%s: keep WLAN ctrl\n", __func__); } + // 0x66[4,8]=0 /*0x66 bit4*/ value = rtw_read8(padapter, REG_PAD_CTRL_1 + 2); if (enable && (value & BIT(4))) { @@ -1664,7 +1665,15 @@ u8 SetHwReg8723DS(PADAPTER padapter, u8 variable, u8 *val) value |= BIT(0); rtw_write8(padapter, REG_PAD_CTRL_1 + 3, value); } - RTW_INFO("%s: HW_SET_GPIO_WL_CTRL\n", __func__); + // 0x40[1:0] = 0 0x40[3] = 0 + rtw_write32(padapter, 0x40, rtw_read32(padapter, 0x40) & 0xFFFFFFF4); + //0x44[30] = 0 + rtw_write32(padapter, 0x44, rtw_read32(padapter, 0x44) & ~BIT(30)); + //0x64[27]=0 + rtw_write32(padapter, 0x64, rtw_read32(padapter, 0x64) & ~BIT(27)); + //0x70[18]=0 + rtw_write32(padapter, 0x70, rtw_read32(padapter, 0x70) & ~BIT(18)); + RTW_INFO("%s: HW_SET_GPIO_WL_CTRL pinmux\n", __func__); } break; #endif diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/os_intfs.c b/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/os_intfs.c index ea63df125c63..1c35c0b86c86 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/os_intfs.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/os_intfs.c @@ -4092,7 +4092,8 @@ int rtw_suspend_wow(_adapter *padapter) else { if (!(pwrpriv->wowlan_dis_lps)) { rtw_wow_lps_level_decide(padapter, _TRUE); - rtw_set_ps_mode(padapter, PS_MODE_MAX, 0, 0, "WOWLAN"); + RTW_INFO("[WIFIDBG] smart_ps = 2\n"); + rtw_set_ps_mode(padapter, PS_MODE_MAX, 2, 0, "WOWLAN"); } } #endif /* #ifdef CONFIG_LPS */