From: Eric Huang RTL8922D fills the PHY-1 rpt_b entry with the address of rpt_a. The report select of RTL8922A and RTL8922D has a per-PHY instance, but it was written without the PHY index, so PHY-1 read its report registers through the select of PHY-0. Write it with rtw89_phy_write32_idx() instead. Signed-off-by: Eric Huang Signed-off-by: Ping-Ke Shih --- drivers/net/wireless/realtek/rtw89/phy.c | 12 ++++++------ drivers/net/wireless/realtek/rtw89/rtw8922d.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c index c33b888bc0e3..074865665b16 100644 --- a/drivers/net/wireless/realtek/rtw89/phy.c +++ b/drivers/net/wireless/realtek/rtw89/phy.c @@ -8712,8 +8712,8 @@ static void rtw89_phy_edcca_log(struct rtw89_dev *rtwdev, struct rtw89_bb_ctx *b rtw89_phy_write32_mask(rtwdev, edcca_p_regs->rpt_sel, edcca_p_regs->rpt_sel_mask, 0); if (rtwdev->chip->chip_id == RTL8922A || rtwdev->chip->chip_id == RTL8922D) { - rtw89_phy_write32_mask(rtwdev, edcca_regs->rpt_sel_be, - edcca_regs->rpt_sel_be_mask, 0); + rtw89_phy_write32_idx(rtwdev, edcca_regs->rpt_sel_be, + edcca_regs->rpt_sel_be_mask, 0, bb->phy_idx); per20_bitmap = rtw89_phy_read32_mask(rtwdev, edcca_p_regs->rpt_a, MASKBYTE0); } @@ -8738,16 +8738,16 @@ static void rtw89_phy_edcca_log(struct rtw89_dev *rtwdev, struct rtw89_bb_ctx *b pwdb_s40 = u32_get_bits(tmp, MASKBYTE2); if (rtwdev->chip->chip_id == RTL8922A || rtwdev->chip->chip_id == RTL8922D) { - rtw89_phy_write32_mask(rtwdev, edcca_regs->rpt_sel_be, - edcca_regs->rpt_sel_be_mask, 4); + rtw89_phy_write32_idx(rtwdev, edcca_regs->rpt_sel_be, + edcca_regs->rpt_sel_be_mask, 4, bb->phy_idx); tmp = rtw89_phy_read32(rtwdev, edcca_p_regs->rpt_b); pwdb[0] = u32_get_bits(tmp, MASKBYTE3); pwdb[1] = u32_get_bits(tmp, MASKBYTE2); pwdb[2] = u32_get_bits(tmp, MASKBYTE1); pwdb[3] = u32_get_bits(tmp, MASKBYTE0); - rtw89_phy_write32_mask(rtwdev, edcca_regs->rpt_sel_be, - edcca_regs->rpt_sel_be_mask, 5); + rtw89_phy_write32_idx(rtwdev, edcca_regs->rpt_sel_be, + edcca_regs->rpt_sel_be_mask, 5, bb->phy_idx); tmp = rtw89_phy_read32(rtwdev, edcca_p_regs->rpt_b); pwdb[4] = u32_get_bits(tmp, MASKBYTE3); pwdb[5] = u32_get_bits(tmp, MASKBYTE2); diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922d.c b/drivers/net/wireless/realtek/rtw89/rtw8922d.c index 2325e646c487..41e2aa1c8f78 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922d.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8922d.c @@ -271,7 +271,7 @@ static const struct rtw89_edcca_regs rtw8922d_edcca_regs = { .rpt_sel_mask = B_EDCCA_RPT_SEL_BE4_MSK, }, { .rpt_a = R_EDCCA_RPT_A_BE4_C1, - .rpt_b = R_EDCCA_RPT_A_BE4_C1, + .rpt_b = R_EDCCA_RPT_B_BE4_C1, .rpt_sel = R_EDCCA_RPT_SEL_BE4_C1, .rpt_sel_mask = B_EDCCA_RPT_SEL_BE4_MSK, }}, -- 2.25.1