rtw88: 8723d: Set IG register for CCK rate
authorPing-Ke Shih <pkshih@realtek.com>
Mon, 4 May 2020 10:50:09 +0000 (18:50 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 6 May 2020 08:34:58 +0000 (11:34 +0300)
DIG sets only one IG register for most chips, but 8723D need to set
additional register for CCK rate.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200504105010.10780-8-yhchuang@realtek.com
drivers/net/wireless/realtek/rtw88/main.h
drivers/net/wireless/realtek/rtw88/phy.c
drivers/net/wireless/realtek/rtw88/rtw8723d.c
drivers/net/wireless/realtek/rtw88/rtw8822b.c
drivers/net/wireless/realtek/rtw88/rtw8822c.c

index ed9c7163fc4efd9c7135f19902238ed7f0f97f57..e0365a70c6f7e687274a07695731b08ab4dcc10d 100644 (file)
@@ -1101,6 +1101,7 @@ struct rtw_chip_info {
        const struct rtw_intf_phy_para_table *intf_table;
 
        const struct rtw_hw_reg *dig;
+       const struct rtw_hw_reg *dig_cck;
        u32 rf_base_addr[2];
        u32 rf_sipi_addr[2];
        const struct rtw_rf_sipi_addr *rf_sipi_read_addr;
index 8489abfdc12e488987665a28a07c788c5b4c64c9..72a16eff9db39f7fb1b8d51fe4a554ce1926f9ee 100644 (file)
@@ -140,9 +140,13 @@ void rtw_phy_dig_write(struct rtw_dev *rtwdev, u8 igi)
 {
        struct rtw_chip_info *chip = rtwdev->chip;
        struct rtw_hal *hal = &rtwdev->hal;
+       const struct rtw_hw_reg *dig_cck = &chip->dig_cck[0];
        u32 addr, mask;
        u8 path;
 
+       if (dig_cck)
+               rtw_write32_mask(rtwdev, dig_cck->addr, dig_cck->mask, igi >> 1);
+
        for (path = 0; path < hal->rf_path_num; path++) {
                addr = chip->dig[path].addr;
                mask = chip->dig[path].mask;
index 2f98e58396b08ff3c5eed0f69dfe5b51643cd3d4..b6266b2942cf23af0e90c5996e553dd5a98fa9c4 100644 (file)
@@ -1053,6 +1053,10 @@ static const struct rtw_hw_reg rtw8723d_dig[] = {
        [1] = { .addr = 0xc50, .mask = 0x7f },
 };
 
+static const struct rtw_hw_reg rtw8723d_dig_cck[] = {
+       [0] = { .addr = 0xa0c, .mask = 0x3f00 },
+};
+
 static const struct rtw_rf_sipi_addr rtw8723d_rf_sipi_addr[] = {
        [RF_PATH_A] = { .hssi_1 = 0x820, .lssi_read    = 0x8a0,
                        .hssi_2 = 0x824, .lssi_read_pi = 0x8b8},
@@ -1095,6 +1099,7 @@ struct rtw_chip_info rtw8723d_hw_spec = {
        .page_table = page_table_8723d,
        .rqpn_table = rqpn_table_8723d,
        .dig = rtw8723d_dig,
+       .dig_cck = rtw8723d_dig_cck,
        .rf_sipi_addr = {0x840, 0x844},
        .rf_sipi_read_addr = rtw8723d_rf_sipi_addr,
        .fix_rf_phy_num = 2,
index f1019e196918521cb58debd800cd63a1d1f4a3ee..45636382dafdfaff6bff9f1884c07af7c783f400 100644 (file)
@@ -2435,6 +2435,7 @@ struct rtw_chip_info rtw8822b_hw_spec = {
        .rqpn_table = rqpn_table_8822b,
        .intf_table = &phy_para_table_8822b,
        .dig = rtw8822b_dig,
+       .dig_cck = NULL,
        .rf_base_addr = {0x2800, 0x2c00},
        .rf_sipi_addr = {0xc90, 0xe90},
        .mac_tbl = &rtw8822b_mac_tbl,
index 9a9423e23e9d69341d286cb71cc19161980b851f..64b77a7cbffd09aeeb64f51c5d71d200d9026744 100644 (file)
@@ -4297,6 +4297,7 @@ struct rtw_chip_info rtw8822c_hw_spec = {
        .rqpn_table = rqpn_table_8822c,
        .intf_table = &phy_para_table_8822c,
        .dig = rtw8822c_dig,
+       .dig_cck = NULL,
        .rf_base_addr = {0x3c00, 0x4c00},
        .rf_sipi_addr = {0x1808, 0x4108},
        .mac_tbl = &rtw8822c_mac_tbl,