wifi: rtw89: 8851b: add support WoWLAN to 8851B
authorChih-Kang Chang <gary.chang@realtek.com>
Fri, 21 Apr 2023 02:45:50 +0000 (10:45 +0800)
committerKalle Valo <kvalo@kernel.org>
Fri, 5 May 2023 12:00:15 +0000 (15:00 +0300)
Add WoWLAN stub to 8851B, and decalre this chip can support magic packet
and disconnect wakeup.

Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230421024551.29994-8-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/rtw8851b.c
drivers/net/wireless/realtek/rtw89/wow.c

index 5ed699a..ce5c7a8 100644 (file)
@@ -31,6 +31,15 @@ static const struct rtw89_chip_ops rtw8851b_chip_ops = {
        .h2c_dctl_sec_cam       = NULL,
 };
 
+#ifdef CONFIG_PM
+static const struct wiphy_wowlan_support rtw_wowlan_stub_8851b = {
+       .flags = WIPHY_WOWLAN_MAGIC_PKT | WIPHY_WOWLAN_DISCONNECT,
+       .n_patterns = RTW89_MAX_PATTERN_NUM,
+       .pattern_max_len = RTW89_MAX_PATTERN_SIZE,
+       .pattern_min_len = 1,
+};
+#endif
+
 const struct rtw89_chip_info rtw8851b_chip_info = {
        .chip_id                = RTL8851B,
        .ops                    = &rtw8851b_chip_ops,
@@ -101,6 +110,9 @@ const struct rtw89_chip_info rtw8851b_chip_info = {
                                  BIT(RTW89_DMA_ACH6) | BIT(RTW89_DMA_ACH7) |
                                  BIT(RTW89_DMA_B1MG) | BIT(RTW89_DMA_B1HI),
        .edcca_lvl_reg          = R_SEG0R_EDCCA_LVL_V1,
+#ifdef CONFIG_PM
+       .wowlan_stub            = &rtw_wowlan_stub_8851b,
+#endif
        .xtal_info              = &rtw8851b_xtal_info,
 };
 EXPORT_SYMBOL(rtw8851b_chip_info);
index 2ca8abb..364e546 100644 (file)
@@ -91,7 +91,7 @@ static void rtw89_wow_show_wakeup_reason(struct rtw89_dev *rtwdev)
        u32 wow_reason_reg;
        u8 reason;
 
-       if (chip_id == RTL8852A || chip_id == RTL8852B)
+       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;