wifi: rtw89: wow: update WoWLAN status register for different generation
authorChin-Yen Lee <timlee@realtek.com>
Sat, 2 Mar 2024 00:58:23 +0000 (08:58 +0800)
committerKalle Valo <kvalo@kernel.org>
Tue, 5 Mar 2024 18:56:42 +0000 (20:56 +0200)
The statue register is for driver to check if WoWLAN mode works or stops
successfully. It is changed for new generation, so update it.

Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://msgid.link/20240302005828.13666-3-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h
drivers/net/wireless/realtek/rtw89/mac_be.c
drivers/net/wireless/realtek/rtw89/reg.h
drivers/net/wireless/realtek/rtw89/wow.c

index 288383ee6d1e2d70d09db9c649cd4ed104b5356e..67adb005f1215375544d879ea7909206a63b70b7 100644 (file)
@@ -6308,6 +6308,7 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_ax = {
                .addr = R_AX_RXTRIG_TEST_USER_2,
                .mask = B_AX_RXTRIG_RU26_DIS,
        },
+       .wow_ctrl = {.addr = R_AX_WOW_CTRL, .mask = B_AX_WOW_WOWEN,},
 
        .check_mac_en = rtw89_mac_check_mac_en_ax,
        .sys_init = sys_init_ax,
index c55b7e4918eb49a507e6fa8f527c5fdaf22d454d..3e9a65125054f81f72c12c8384bd1c3eea2e5628 100644 (file)
@@ -913,6 +913,7 @@ struct rtw89_mac_gen_def {
        struct rtw89_reg_def muedca_ctrl;
        struct rtw89_reg_def bfee_ctrl;
        struct rtw89_reg_def narrow_bw_ru_dis;
+       struct rtw89_reg_def wow_ctrl;
 
        int (*check_mac_en)(struct rtw89_dev *rtwdev, u8 band,
                            enum rtw89_mac_hwmod_sel sel);
index 7ca94b70a9cb38c10f41851375653640bfbf6e8a..1d03197529ce19230f20b4c1d93a85f643fabfd4 100644 (file)
@@ -2520,6 +2520,7 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_be = {
                .addr = R_BE_RXTRIG_TEST_USER_2,
                .mask = B_BE_RXTRIG_RU26_DIS,
        },
+       .wow_ctrl = {.addr = R_BE_WOW_CTRL, .mask = B_BE_WOW_WOWEN,},
 
        .check_mac_en = rtw89_mac_check_mac_en_be,
        .sys_init = sys_init_be,
index 12568eec32ab6ff48013685ad40a264a33d1631b..3a8117b666bf18a17ae6d6595167e0889061c374 100644 (file)
 #define B_BE_CUT_AMSDU_CHKLEN_L_TH_MASK GENMASK(23, 16)
 #define B_BE_CUT_AMSDU_CHKLEN_H_TH_MASK GENMASK(15, 0)
 
+#define R_BE_WOW_CTRL 0x9CB8
+#define B_BE_WOW_HCI BIT(5)
+#define B_BE_WOW_DROP BIT(2)
+#define B_BE_WOW_WOWEN BIT(1)
+#define B_BE_WOW_FORCE_WAKEUP BIT(0)
+
 #define R_BE_RX_HDRTRNS 0x9CC0
 #define B_BE_RX_MGN_MLD_ADDR_EN BIT(6)
 #define B_BE_HDR_INFO_MASK GENMASK(5, 4)
index a3d93503717b6376f8836a67d31f53a17d0fc870..852f8a7794be5637cc5d669bfbfd04740f7827ae 100644 (file)
@@ -463,13 +463,14 @@ static int rtw89_wow_cfg_wake(struct rtw89_dev *rtwdev, bool wow)
 
 static int rtw89_wow_check_fw_status(struct rtw89_dev *rtwdev, bool wow_enable)
 {
+       const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
        u8 polling;
        int ret;
 
        ret = read_poll_timeout_atomic(rtw89_read8_mask, polling,
                                       wow_enable == !!polling,
                                       50, 50000, false, rtwdev,
-                                      R_AX_WOW_CTRL, B_AX_WOW_WOWEN);
+                                      mac->wow_ctrl.addr, mac->wow_ctrl.mask);
        if (ret)
                rtw89_err(rtwdev, "failed to check wow status %s\n",
                          wow_enable ? "enabled" : "disabled");