summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFiona Klute <fiona.klute@gmx.de>2024-03-11 11:37:12 +0100
committerKalle Valo <kvalo@kernel.org>2024-03-14 10:59:30 +0200
commit1f30e95b1646c1c5b0fa82b6762634505a81bb87 (patch)
tree73f72bba625528de70e0d8c4fffcc8e92efcc23a
parentc75065b1ebfc450249e13805f8fdd275e461cefe (diff)
wifi: rtw88: Reset 8703b firmware before download
Sometimes 8703b firmware is still active from previous use when the driver needs to download the firmware during MAC activation. Reset it in that case. Acked-by: Ping-Ke Shih <pkshih@realtek.com> Tested-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Fiona Klute <fiona.klute@gmx.de> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://msgid.link/20240311103735.615541-9-fiona.klute@gmx.de
-rw-r--r--drivers/net/wireless/realtek/rtw88/mac.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/realtek/rtw88/mac.c b/drivers/net/wireless/realtek/rtw88/mac.c
index 0c1c1ff31085..699ae3048c6b 100644
--- a/drivers/net/wireless/realtek/rtw88/mac.c
+++ b/drivers/net/wireless/realtek/rtw88/mac.c
@@ -943,6 +943,12 @@ static int __rtw_download_firmware_legacy(struct rtw_dev *rtwdev,
{
int ret = 0;
+ /* reset firmware if still present */
+ if (rtwdev->chip->id == RTW_CHIP_TYPE_8703B &&
+ rtw_read8_mask(rtwdev, REG_MCUFW_CTRL, BIT_RAM_DL_SEL)) {
+ rtw_write8(rtwdev, REG_MCUFW_CTRL, 0x00);
+ }
+
en_download_firmware_legacy(rtwdev, true);
ret = download_firmware_legacy(rtwdev, fw->firmware->data, fw->firmware->size);
en_download_firmware_legacy(rtwdev, false);