summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/realtek/rtw89/mac_be.c
diff options
context:
space:
mode:
authorPing-Ke Shih <pkshih@realtek.com>2023-09-01 10:39:53 +0300
committerKalle Valo <kvalo@kernel.org>2023-09-07 08:57:16 +0300
commita712eef681ed998ca5d036a82df38c7efcd4416b (patch)
treee2303927f922a69b80043ba3a810a1350db137b1 /drivers/net/wireless/realtek/rtw89/mac_be.c
parentfa31a8c58d6e612ccaf19fd60eda64faaca35c62 (diff)
downloadlinux-a712eef681ed998ca5d036a82df38c7efcd4416b.tar.xz
wifi: rtw89: fw: propagate an argument include_bb for BB MCU firmware
Though WiFi 7 chips need BB MCU firmware, we don't download it in probe stage. Instead, only bring interface up under normal operation or WoWLAN mode. So, add an argument to assist download flow to setup download settings properly. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20230901073956.54203-6-pkshih@realtek.com
Diffstat (limited to 'drivers/net/wireless/realtek/rtw89/mac_be.c')
-rw-r--r--drivers/net/wireless/realtek/rtw89/mac_be.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/wireless/realtek/rtw89/mac_be.c b/drivers/net/wireless/realtek/rtw89/mac_be.c
index 2a80d8bb4758..8cdc594e5703 100644
--- a/drivers/net/wireless/realtek/rtw89/mac_be.c
+++ b/drivers/net/wireless/realtek/rtw89/mac_be.c
@@ -51,10 +51,13 @@ static void rtw89_mac_disable_cpu_be(struct rtw89_dev *rtwdev)
rtw89_write32(rtwdev, R_BE_UDM2, 0);
}
-static void set_cpu_en(struct rtw89_dev *rtwdev)
+static void set_cpu_en(struct rtw89_dev *rtwdev, bool include_bb)
{
u32 set = B_BE_WLANCPU_FWDL_EN;
+ if (include_bb)
+ set |= B_BE_BBMCU0_FWDL_EN;
+
rtw89_write32_set(rtwdev, R_BE_WCPU_FW_CTRL, set);
}
@@ -109,9 +112,10 @@ static int wcpu_on(struct rtw89_dev *rtwdev, u8 boot_reason, bool dlfw)
}
static int rtw89_mac_fwdl_enable_wcpu_be(struct rtw89_dev *rtwdev,
- u8 boot_reason, bool dlfw)
+ u8 boot_reason, bool dlfw,
+ bool include_bb)
{
- set_cpu_en(rtwdev);
+ set_cpu_en(rtwdev, include_bb);
return wcpu_on(rtwdev, boot_reason, dlfw);
}