rtw88: fix error handling when setup efuse info

commit f4268729eb upstream.

Disable efuse if the efuse is enabled when we failed to setup the efuse
information, otherwise the hardware will not turn off.

Fixes: e3037485c6 ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Ping-Ke Shih 2019-10-02 14:35:31 +08:00 committed by Greg Kroah-Hartman
parent 6b6d5f5338
commit f88ed5cf0d

View file

@ -1048,19 +1048,19 @@ static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev)
/* power on mac to read efuse */
ret = rtw_chip_efuse_enable(rtwdev);
if (ret)
goto out;
goto out_unlock;
ret = rtw_parse_efuse_map(rtwdev);
if (ret)
goto out;
goto out_disable;
ret = rtw_dump_hw_feature(rtwdev);
if (ret)
goto out;
goto out_disable;
ret = rtw_check_supported_rfe(rtwdev);
if (ret)
goto out;
goto out_disable;
if (efuse->crystal_cap == 0xff)
efuse->crystal_cap = 0;
@ -1087,9 +1087,10 @@ static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev)
efuse->ext_pa_5g = efuse->pa_type_5g & BIT(0) ? 1 : 0;
efuse->ext_lna_2g = efuse->lna_type_5g & BIT(3) ? 1 : 0;
out_disable:
rtw_chip_efuse_disable(rtwdev);
out:
out_unlock:
mutex_unlock(&rtwdev->mutex);
return ret;
}