rtw88: fix error handling when setup efuse info

commit f4268729eb1eefe23f6746849c1b5626d9030532 upstream.

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

Fixes: e3037485c68e ("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;
}