wifi: rtw89: wow: update WoWLAN reason register for different chips
authorChin-Yen Lee <timlee@realtek.com>
Sat, 2 Mar 2024 00:58:22 +0000 (08:58 +0800)
committerKalle Valo <kvalo@kernel.org>
Tue, 5 Mar 2024 18:56:42 +0000 (20:56 +0200)
The WoWLAN reason register is used for driver to get the wakeup reason
for reporting to cfg80211, and it is different from chips. So put it
into chip information.

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-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.h
drivers/net/wireless/realtek/rtw89/rtw8851b.c
drivers/net/wireless/realtek/rtw89/rtw8852a.c
drivers/net/wireless/realtek/rtw89/rtw8852b.c
drivers/net/wireless/realtek/rtw89/rtw8852c.c
drivers/net/wireless/realtek/rtw89/rtw8922a.c
drivers/net/wireless/realtek/rtw89/wow.c

index cbebfbf1d64acf02c6aebcafca34c64be0e1a020..fb590f51f4f1d4705124af500b482e6080414fb4 100644 (file)
@@ -3954,6 +3954,7 @@ struct rtw89_chip_info {
        const u32 *c2h_regs;
        struct rtw89_reg_def c2h_counter_reg;
        const struct rtw89_page_regs *page_regs;
+       u32 wow_reason_reg;
        bool cfo_src_fd;
        bool cfo_hw_comp;
        const struct rtw89_reg_def *dcfo_comp;
index d1f9cb427f55148811e75e20380b414e663a3af7..51d3e61eaa1d42c2ffafaed4e2de80235ad477dc 100644 (file)
@@ -2506,6 +2506,7 @@ const struct rtw89_chip_info rtw8851b_chip_info = {
        .c2h_counter_reg        = {R_AX_UDM1 + 1, B_AX_UDM1_HALMAC_C2H_ENQ_CNT_MASK >> 8},
        .c2h_regs               = rtw8851b_c2h_regs,
        .page_regs              = &rtw8851b_page_regs,
+       .wow_reason_reg         = R_AX_C2HREG_DATA3 + 3,
        .cfo_src_fd             = true,
        .cfo_hw_comp            = true,
        .dcfo_comp              = &rtw8851b_dcfo_comp,
index ade8604bacb80b96d25d55085137e8413e0c1b14..2deadec715cf7a91297e6f733c1ef1a2dce5b4f8 100644 (file)
@@ -2223,6 +2223,7 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
        .c2h_regs               = rtw8852a_c2h_regs,
        .c2h_counter_reg        = {R_AX_UDM1 + 1, B_AX_UDM1_HALMAC_C2H_ENQ_CNT_MASK >> 8},
        .page_regs              = &rtw8852a_page_regs,
+       .wow_reason_reg         = R_AX_C2HREG_DATA3 + 3,
        .cfo_src_fd             = false,
        .cfo_hw_comp            = false,
        .dcfo_comp              = &rtw8852a_dcfo_comp,
index 5b8c3460e35a9db1f31109e2a2ba406c4365f8d5..d025c4135e1c8c696f81a90fd0e674d64c512cb7 100644 (file)
@@ -2657,6 +2657,7 @@ const struct rtw89_chip_info rtw8852b_chip_info = {
        .c2h_counter_reg        = {R_AX_UDM1 + 1, B_AX_UDM1_HALMAC_C2H_ENQ_CNT_MASK >> 8},
        .c2h_regs               = rtw8852b_c2h_regs,
        .page_regs              = &rtw8852b_page_regs,
+       .wow_reason_reg         = R_AX_C2HREG_DATA3 + 3,
        .cfo_src_fd             = true,
        .cfo_hw_comp            = true,
        .dcfo_comp              = &rtw8852b_dcfo_comp,
index 84ee7483acda078a8b55f72c29a45d6d85a14b44..17e6164855fa128e9cfab7116b085a49571a44fd 100644 (file)
@@ -2997,6 +2997,7 @@ const struct rtw89_chip_info rtw8852c_chip_info = {
        .c2h_counter_reg        = {R_AX_UDM1 + 1, B_AX_UDM1_HALMAC_C2H_ENQ_CNT_MASK >> 8},
        .c2h_regs               = rtw8852c_c2h_regs,
        .page_regs              = &rtw8852c_page_regs,
+       .wow_reason_reg         = R_AX_C2HREG_DATA3_V1 + 3,
        .cfo_src_fd             = false,
        .cfo_hw_comp            = false,
        .dcfo_comp              = &rtw8852c_dcfo_comp,
index ca7babf62f8a8335993940b43c1d8817c7247e39..367459bd1345742f00e600773e3613abf7e7066c 100644 (file)
@@ -2453,6 +2453,7 @@ const struct rtw89_chip_info rtw8922a_chip_info = {
        .c2h_counter_reg        = {R_BE_UDM1 + 1, B_BE_UDM1_HALMAC_C2H_ENQ_CNT_MASK >> 8},
        .c2h_regs               = rtw8922a_c2h_regs,
        .page_regs              = &rtw8922a_page_regs,
+       .wow_reason_reg         = R_AX_C2HREG_DATA3_V1 + 3,
        .cfo_src_fd             = true,
        .cfo_hw_comp            = true,
        .dcfo_comp              = NULL,
index 4c17936795b6f14a74bb34302ea32471b2c6ab15..a3d93503717b6376f8836a67d31f53a17d0fc870 100644 (file)
@@ -85,21 +85,14 @@ static void rtw89_wow_set_rx_filter(struct rtw89_dev *rtwdev, bool enable)
 
 static void rtw89_wow_show_wakeup_reason(struct rtw89_dev *rtwdev)
 {
-       enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
+       u32 wow_reason_reg = rtwdev->chip->wow_reason_reg;
        struct cfg80211_wowlan_nd_info nd_info;
        struct cfg80211_wowlan_wakeup wakeup = {
                .pattern_idx = -1,
        };
-       u32 wow_reason_reg;
        u8 reason;
 
-       if (chip_id == RTL8852A || chip_id == RTL8852B || chip_id == RTL8851B)
-               wow_reason_reg = R_AX_C2HREG_DATA3 + 3;
-       else
-               wow_reason_reg = R_AX_C2HREG_DATA3_V1 + 3;
-
        reason = rtw89_read8(rtwdev, wow_reason_reg);
-
        switch (reason) {
        case RTW89_WOW_RSN_RX_DEAUTH:
                wakeup.disconnect = true;