rtw88: coex: fixed some wrong register definition and setting
authorChing-Te Ku <ku920601@realtek.com>
Mon, 9 Nov 2020 08:58:59 +0000 (16:58 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 10 Nov 2020 18:58:08 +0000 (20:58 +0200)
Some register definition and bit definition were incorrect.
e.g. REG_BT_COEX_V2 should be word alignment to meet the coding style.
e.g. set REG_BT_TDMA_TIME[5:0]=0x5,
But the original is to set REG_BT_TDMA_TIME[7:0]=0x5.
This will cause unexpected hardware behavior.

Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201109085909.9143-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw88/reg.h
drivers/net/wireless/realtek/rtw88/rtw8723d.c
drivers/net/wireless/realtek/rtw88/rtw8821c.c
drivers/net/wireless/realtek/rtw88/rtw8821c.h
drivers/net/wireless/realtek/rtw88/rtw8822b.c
drivers/net/wireless/realtek/rtw88/rtw8822c.c

index 86b94c008a272ad3eabb9af492283b8013e49138..b3df09ff01b302dd8339a692cf80c160ad189b5a 100644 (file)
@@ -60,7 +60,7 @@
 #define REG_GPIO_MUXCFG                0x0040
 #define BIT_FSPI_EN            BIT(19)
 #define BIT_EN_SIC             BIT(12)
-#define BIT_BT_AOD_GPIO3       BIT(9)
+
 #define BIT_PO_BT_PTA_PINS     BIT(9)
 #define BIT_BT_PTA_EN          BIT(5)
 #define BIT_WLRFE_4_5_EN       BIT(2)
 #define REG_BT_COEX_TABLE_H3   0x06CF
 #define REG_BBPSF_CTRL         0x06DC
 
-#define REG_BT_COEX_V2         0x0763
-#define BIT_GNT_BT_POLARITY    BIT(4)
+#define REG_BT_COEX_V2         0x0762
+#define BIT_GNT_BT_POLARITY    BIT(12)
 #define BIT_LTE_COEX_EN                BIT(7)
 #define REG_BT_STAT_CTRL       0x0778
 #define REG_BT_TDMA_TIME       0x0790
+#define BIT_MASK_SAMPLE_RATE   GENMASK(5, 0)
 #define REG_LTR_IDLE_LATENCY   0x0798
 #define REG_LTR_ACTIVE_LATENCY 0x079C
 #define REG_LTR_CTRL_BASIC     0x07A4
index 832dc8e98bee995d8d253affc7a7b010b76ca00a..84d66b5c273389280d5eb64a35d9e345a70295de 100644 (file)
@@ -1506,14 +1506,14 @@ static void rtw8723d_coex_cfg_init(struct rtw_dev *rtwdev)
 
        /* BT report packet sample rate  */
        /* 0x790[5:0]=0x5 */
-       rtw_write8_set(rtwdev, REG_BT_TDMA_TIME, 0x05);
+       rtw_write8_mask(rtwdev, REG_BT_TDMA_TIME, BIT_MASK_SAMPLE_RATE, 0x5);
 
        /* enable BT counter statistics */
        rtw_write8(rtwdev, REG_BT_STAT_CTRL, 0x1);
 
        /* enable PTA (3-wire function form BT side) */
        rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_PTA_EN);
-       rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_AOD_GPIO3);
+       rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_PO_BT_PTA_PINS);
 
        /* enable PTA (tx/rx signal form WiFi side) */
        rtw_write8_set(rtwdev, REG_QUEUE_CTRL, BIT_PTA_WL_TX_EN);
index da2e7415be8fefd00ce0428705d312fc6436cfa7..64b14f9ea4a94d45b31dab3618f84e09232f4fcd 100644 (file)
@@ -656,8 +656,7 @@ static void rtw8821c_coex_cfg_init(struct rtw_dev *rtwdev)
        rtw_write8_set(rtwdev, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION);
 
        /* BT report packet sample rate */
-       rtw_write8_mask(rtwdev, REG_BT_TDMA_TIME, SAMPLE_RATE_MASK,
-                       SAMPLE_RATE);
+       rtw_write8_mask(rtwdev, REG_BT_TDMA_TIME, BIT_MASK_SAMPLE_RATE, 0x5);
 
        /* enable BT counter statistics */
        rtw_write8(rtwdev, REG_BT_STAT_CTRL, BT_CNT_ENABLE);
index bd01e82b6bcd0bf6c2c3bd9d6c0b38f091dfbd5a..e11e3fc41c959589afa2b997b8bd38e40d1aae8d 100644 (file)
@@ -231,8 +231,6 @@ _rtw_write32s_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data)
 #define REG_IQKFAILMSK 0x1bf0
 #define BIT_MASK_R_RFE_SEL_15  GENMASK(31, 28)
 #define BIT_SDIO_INT BIT(18)
-#define SAMPLE_RATE_MASK GENMASK(5, 0)
-#define SAMPLE_RATE    0x5
 #define BT_CNT_ENABLE  0x1
 #define BIT_BCN_QUEUE  BIT(3)
 #define BCN_PRI_EN     0x1
index ffcb580e8dce5bb72d15cee51a7853629a53064f..d562f7324e6a131bfd36562aebade99601bdd139 100644 (file)
@@ -1120,21 +1120,21 @@ static void rtw8822b_coex_cfg_init(struct rtw_dev *rtwdev)
 
        /* BT report packet sample rate */
        /* 0x790[5:0]=0x5 */
-       rtw_write8_set(rtwdev, REG_BT_TDMA_TIME, 0x05);
+       rtw_write8_mask(rtwdev, REG_BT_TDMA_TIME, BIT_MASK_SAMPLE_RATE, 0x5);
 
        /* enable BT counter statistics */
        rtw_write8(rtwdev, REG_BT_STAT_CTRL, 0x1);
 
        /* enable PTA (3-wire function form BT side) */
        rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_PTA_EN);
-       rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_AOD_GPIO3);
+       rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_PO_BT_PTA_PINS);
 
        /* enable PTA (tx/rx signal form WiFi side) */
        rtw_write8_set(rtwdev, REG_QUEUE_CTRL, BIT_PTA_WL_TX_EN);
        /* wl tx signal to PTA not case EDCCA */
        rtw_write8_clr(rtwdev, REG_QUEUE_CTRL, BIT_PTA_EDCCA_EN);
        /* GNT_BT=1 while select both */
-       rtw_write8_set(rtwdev, REG_BT_COEX_V2, BIT_GNT_BT_POLARITY);
+       rtw_write16_set(rtwdev, REG_BT_COEX_V2, BIT_GNT_BT_POLARITY);
 }
 
 static void rtw8822b_coex_cfg_ant_switch(struct rtw_dev *rtwdev,
index f58722a49ec64405d1304ac18d74209066540362..56c403d628fd76e26db7e405d1664a31eb9c6e80 100644 (file)
@@ -2132,24 +2132,24 @@ static void rtw8822c_coex_cfg_init(struct rtw_dev *rtwdev)
        /* enable TBTT nterrupt */
        rtw_write8_set(rtwdev, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION);
 
-       /* BT report packet sample rate  */
+       /* BT report packet sample rate */
        /* 0x790[5:0]=0x5 */
-       rtw_write8_set(rtwdev, REG_BT_TDMA_TIME, 0x05);
+       rtw_write8_mask(rtwdev, REG_BT_TDMA_TIME, BIT_MASK_SAMPLE_RATE, 0x5);
 
        /* enable BT counter statistics */
        rtw_write8(rtwdev, REG_BT_STAT_CTRL, 0x1);
 
        /* enable PTA (3-wire function form BT side) */
        rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_PTA_EN);
-       rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_AOD_GPIO3);
+       rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_PO_BT_PTA_PINS);
 
        /* enable PTA (tx/rx signal form WiFi side) */
        rtw_write8_set(rtwdev, REG_QUEUE_CTRL, BIT_PTA_WL_TX_EN);
        /* wl tx signal to PTA not case EDCCA */
        rtw_write8_clr(rtwdev, REG_QUEUE_CTRL, BIT_PTA_EDCCA_EN);
        /* GNT_BT=1 while select both */
-       rtw_write8_set(rtwdev, REG_BT_COEX_V2, BIT_GNT_BT_POLARITY);
-       /* BT_CCA = ~GNT_WL_BB, (not or GNT_BT_BB, LTE_Rx */
+       rtw_write16_set(rtwdev, REG_BT_COEX_V2, BIT_GNT_BT_POLARITY);
+       /* BT_CCA = ~GNT_WL_BB, not or GNT_BT_BB, LTE_Rx */
        rtw_write8_clr(rtwdev, REG_DUMMY_PAGE4_V1, BIT_BTCCA_CTRL);
 
        /* to avoid RF parameter error */