Skip to content

Commit e102ff4

Browse files
Ping-Ke ShihKalle Valo
authored andcommitted
wifi: rtw89: 8852c: read RX gain offset from efuse for 6GHz channels
Read calibration values of RX gain offset from efuse, and set them to registers to normalize RX gain for all hardware modules. Then, PHY dynamic mechanism can get expected values to adjust hardware parameters to yield expected performance. Signed-off-by: Ping-Ke Shih <[email protected]> Signed-off-by: Kalle Valo <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent f28eab6 commit e102ff4

File tree

4 files changed

+66
-2
lines changed

4 files changed

+66
-2
lines changed

drivers/net/wireless/realtek/rtw89/core.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,14 @@ enum rtw89_gain_offset {
104104
RTW89_GAIN_OFFSET_5G_LOW,
105105
RTW89_GAIN_OFFSET_5G_MID,
106106
RTW89_GAIN_OFFSET_5G_HIGH,
107+
RTW89_GAIN_OFFSET_6G_L0,
108+
RTW89_GAIN_OFFSET_6G_L1,
109+
RTW89_GAIN_OFFSET_6G_M0,
110+
RTW89_GAIN_OFFSET_6G_M1,
111+
RTW89_GAIN_OFFSET_6G_H0,
112+
RTW89_GAIN_OFFSET_6G_H1,
113+
RTW89_GAIN_OFFSET_6G_UH0,
114+
RTW89_GAIN_OFFSET_6G_UH1,
107115

108116
RTW89_GAIN_OFFSET_NR,
109117
};

drivers/net/wireless/realtek/rtw89/phy.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,22 @@ enum rtw89_gain_offset rtw89_subband_to_gain_offset_band_of_ofdm(enum rtw89_subb
591591
return RTW89_GAIN_OFFSET_5G_MID;
592592
case RTW89_CH_5G_BAND_4:
593593
return RTW89_GAIN_OFFSET_5G_HIGH;
594+
case RTW89_CH_6G_BAND_IDX0:
595+
return RTW89_GAIN_OFFSET_6G_L0;
596+
case RTW89_CH_6G_BAND_IDX1:
597+
return RTW89_GAIN_OFFSET_6G_L1;
598+
case RTW89_CH_6G_BAND_IDX2:
599+
return RTW89_GAIN_OFFSET_6G_M0;
600+
case RTW89_CH_6G_BAND_IDX3:
601+
return RTW89_GAIN_OFFSET_6G_M1;
602+
case RTW89_CH_6G_BAND_IDX4:
603+
return RTW89_GAIN_OFFSET_6G_H0;
604+
case RTW89_CH_6G_BAND_IDX5:
605+
return RTW89_GAIN_OFFSET_6G_H1;
606+
case RTW89_CH_6G_BAND_IDX6:
607+
return RTW89_GAIN_OFFSET_6G_UH0;
608+
case RTW89_CH_6G_BAND_IDX7:
609+
return RTW89_GAIN_OFFSET_6G_UH1;
594610
}
595611
}
596612

drivers/net/wireless/realtek/rtw89/rtw8852c.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,30 @@ static void rtw8852c_efuse_parsing_gain_offset(struct rtw89_dev *rtwdev,
426426
valid |= _decode_efuse_gain(map->rx_gain_5g_high,
427427
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_5G_HIGH],
428428
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_5G_HIGH]);
429+
valid |= _decode_efuse_gain(map->rx_gain_6g_l0,
430+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_L0],
431+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_L0]);
432+
valid |= _decode_efuse_gain(map->rx_gain_6g_l1,
433+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_L1],
434+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_L1]);
435+
valid |= _decode_efuse_gain(map->rx_gain_6g_m0,
436+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_M0],
437+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_M0]);
438+
valid |= _decode_efuse_gain(map->rx_gain_6g_m1,
439+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_M1],
440+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_M1]);
441+
valid |= _decode_efuse_gain(map->rx_gain_6g_h0,
442+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_H0],
443+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_H0]);
444+
valid |= _decode_efuse_gain(map->rx_gain_6g_h1,
445+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_H1],
446+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_H1]);
447+
valid |= _decode_efuse_gain(map->rx_gain_6g_uh0,
448+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_UH0],
449+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_UH0]);
450+
valid |= _decode_efuse_gain(map->rx_gain_6g_uh1,
451+
&gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_UH1],
452+
&gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_UH1]);
429453

430454
gain->offset_valid = valid;
431455
}

drivers/net/wireless/realtek/rtw89/rtw8852c.h

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,25 @@ struct rtw8852c_efuse {
7373
u8 bw40_1s_tssi_6g_a[TSSI_MCS_6G_CH_GROUP_NUM];
7474
u8 rsvd14[10];
7575
u8 bw40_1s_tssi_6g_b[TSSI_MCS_6G_CH_GROUP_NUM];
76-
u8 rsvd15[110];
76+
u8 rsvd15[94];
77+
u8 rx_gain_6g_l0;
78+
u8 rsvd16;
79+
u8 rx_gain_6g_l1;
80+
u8 rsvd17;
81+
u8 rx_gain_6g_m0;
82+
u8 rsvd18;
83+
u8 rx_gain_6g_m1;
84+
u8 rsvd19;
85+
u8 rx_gain_6g_h0;
86+
u8 rsvd20;
87+
u8 rx_gain_6g_h1;
88+
u8 rsvd21;
89+
u8 rx_gain_6g_uh0;
90+
u8 rsvd22;
91+
u8 rx_gain_6g_uh1;
92+
u8 rsvd23;
7793
u8 channel_plan_6g;
78-
u8 rsvd16[71];
94+
u8 rsvd24[71];
7995
union {
8096
struct rtw8852c_u_efuse u;
8197
struct rtw8852c_e_efuse e;

0 commit comments

Comments
 (0)