wifi: rtw89: pci: update LTR settings
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 16 Sep 2022 03:38:07 +0000 (11:38 +0800)
committerKalle Valo <kvalo@kernel.org>
Mon, 19 Sep 2022 10:04:44 +0000 (13:04 +0300)
Modify PCI LTR control flow and LTR idle latency to improve power save
efficiency.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220916033811.13862-4-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/pci.c
drivers/net/wireless/realtek/rtw89/reg.h

index ff33962747fa0e8d6a1b9e6652009fa4b2a7cbc0..3e8e477d32f79f808005ba152e22adb722b51f37 100644 (file)
@@ -2513,15 +2513,15 @@ int rtw89_pci_ltr_set(struct rtw89_dev *rtwdev, bool en)
        if (rtw89_pci_ltr_is_err_reg_val(val))
                return -EINVAL;
 
-       rtw89_write32_clr(rtwdev, R_AX_LTR_CTRL_0, B_AX_LTR_HW_EN);
-       rtw89_write32_set(rtwdev, R_AX_LTR_CTRL_0, B_AX_LTR_EN);
+       rtw89_write32_set(rtwdev, R_AX_LTR_CTRL_0, B_AX_LTR_HW_EN | B_AX_LTR_EN |
+                                                  B_AX_LTR_WD_NOEMP_CHK);
        rtw89_write32_mask(rtwdev, R_AX_LTR_CTRL_0, B_AX_LTR_SPACE_IDX_MASK,
                           PCI_LTR_SPC_500US);
        rtw89_write32_mask(rtwdev, R_AX_LTR_CTRL_0, B_AX_LTR_IDLE_TIMER_IDX_MASK,
-                          PCI_LTR_IDLE_TIMER_800US);
+                          PCI_LTR_IDLE_TIMER_3_2MS);
        rtw89_write32_mask(rtwdev, R_AX_LTR_CTRL_1, B_AX_LTR_RX0_TH_MASK, 0x28);
        rtw89_write32_mask(rtwdev, R_AX_LTR_CTRL_1, B_AX_LTR_RX1_TH_MASK, 0x28);
-       rtw89_write32(rtwdev, R_AX_LTR_IDLE_LATENCY, 0x88e088e0);
+       rtw89_write32(rtwdev, R_AX_LTR_IDLE_LATENCY, 0x90039003);
        rtw89_write32(rtwdev, R_AX_LTR_ACTIVE_LATENCY, 0x880b880b);
 
        return 0;
index 51187524de1eaf5cec8efe995775bcdc1da949f0..9426b53e663bbb294e7dacb403a7536714d0c3d7 100644 (file)
 #define R_AX_LTR_CTRL_0 0x8410
 #define B_AX_LTR_SPACE_IDX_MASK GENMASK(13, 12)
 #define B_AX_LTR_IDLE_TIMER_IDX_MASK GENMASK(10, 8)
+#define B_AX_LTR_WD_NOEMP_CHK BIT(6)
 #define B_AX_APP_LTR_ACT BIT(5)
 #define B_AX_APP_LTR_IDLE BIT(4)
 #define B_AX_LTR_EN BIT(1)