mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 01:51:34 +00:00
rtw88: Use secondary channel offset enumeration
The hardware value of secondary channel offset isn't very intuitive. This commit adds enumeration, so we can easier to check the logic with the suffix of enumeration name, likes _UPPER or _LOWER. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com> Reviewed-by: Chris Chiu <chiu@endlessm.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
bafbc6f0b5
commit
40fb04b22f
@ -17,10 +17,10 @@ void rtw_set_channel_mac(struct rtw_dev *rtwdev, u8 channel, u8 bw,
|
||||
|
||||
txsc20 = primary_ch_idx;
|
||||
if (bw == RTW_CHANNEL_WIDTH_80) {
|
||||
if (txsc20 == 1 || txsc20 == 3)
|
||||
txsc40 = 9;
|
||||
if (txsc20 == RTW_SC_20_UPPER || txsc20 == RTW_SC_20_UPMOST)
|
||||
txsc40 = RTW_SC_40_UPPER;
|
||||
else
|
||||
txsc40 = 10;
|
||||
txsc40 = RTW_SC_40_LOWER;
|
||||
}
|
||||
rtw_write8(rtwdev, REG_DATA_SC,
|
||||
BIT_TXSC_20M(txsc20) | BIT_TXSC_40M(txsc40));
|
||||
|
@ -317,15 +317,15 @@ void rtw_get_channel_params(struct cfg80211_chan_def *chandef,
|
||||
case NL80211_CHAN_WIDTH_20_NOHT:
|
||||
case NL80211_CHAN_WIDTH_20:
|
||||
bandwidth = RTW_CHANNEL_WIDTH_20;
|
||||
primary_chan_idx = 0;
|
||||
primary_chan_idx = RTW_SC_DONT_CARE;
|
||||
break;
|
||||
case NL80211_CHAN_WIDTH_40:
|
||||
bandwidth = RTW_CHANNEL_WIDTH_40;
|
||||
if (primary_freq > center_freq) {
|
||||
primary_chan_idx = 1;
|
||||
primary_chan_idx = RTW_SC_20_UPPER;
|
||||
center_chan -= 2;
|
||||
} else {
|
||||
primary_chan_idx = 2;
|
||||
primary_chan_idx = RTW_SC_20_LOWER;
|
||||
center_chan += 2;
|
||||
}
|
||||
break;
|
||||
@ -333,10 +333,10 @@ void rtw_get_channel_params(struct cfg80211_chan_def *chandef,
|
||||
bandwidth = RTW_CHANNEL_WIDTH_80;
|
||||
if (primary_freq > center_freq) {
|
||||
if (primary_freq - center_freq == 10) {
|
||||
primary_chan_idx = 1;
|
||||
primary_chan_idx = RTW_SC_20_UPPER;
|
||||
center_chan -= 2;
|
||||
} else {
|
||||
primary_chan_idx = 3;
|
||||
primary_chan_idx = RTW_SC_20_UPMOST;
|
||||
center_chan -= 6;
|
||||
}
|
||||
/* assign the center channel used
|
||||
@ -345,10 +345,10 @@ void rtw_get_channel_params(struct cfg80211_chan_def *chandef,
|
||||
cch_by_bw[RTW_CHANNEL_WIDTH_40] = center_chan + 4;
|
||||
} else {
|
||||
if (center_freq - primary_freq == 10) {
|
||||
primary_chan_idx = 2;
|
||||
primary_chan_idx = RTW_SC_20_LOWER;
|
||||
center_chan += 2;
|
||||
} else {
|
||||
primary_chan_idx = 4;
|
||||
primary_chan_idx = RTW_SC_20_LOWEST;
|
||||
center_chan += 6;
|
||||
}
|
||||
/* assign the center channel used
|
||||
|
@ -99,6 +99,16 @@ enum rtw_bandwidth {
|
||||
RTW_CHANNEL_WIDTH_10 = 6,
|
||||
};
|
||||
|
||||
enum rtw_sc_offset {
|
||||
RTW_SC_DONT_CARE = 0,
|
||||
RTW_SC_20_UPPER = 1,
|
||||
RTW_SC_20_LOWER = 2,
|
||||
RTW_SC_20_UPMOST = 3,
|
||||
RTW_SC_20_LOWEST = 4,
|
||||
RTW_SC_40_UPPER = 9,
|
||||
RTW_SC_40_LOWER = 10,
|
||||
};
|
||||
|
||||
enum rtw_net_type {
|
||||
RTW_NET_NO_LINK = 0,
|
||||
RTW_NET_AD_HOC = 1,
|
||||
|
@ -645,7 +645,7 @@ static void rtw8822b_set_channel_bb(struct rtw_dev *rtwdev, u8 channel, u8 bw,
|
||||
rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1);
|
||||
break;
|
||||
case RTW_CHANNEL_WIDTH_40:
|
||||
if (primary_ch_idx == 1)
|
||||
if (primary_ch_idx == RTW_SC_20_UPPER)
|
||||
rtw_write32_set(rtwdev, REG_RXSB, BIT(4));
|
||||
else
|
||||
rtw_write32_clr(rtwdev, REG_RXSB, BIT(4));
|
||||
|
@ -1482,7 +1482,7 @@ static void rtw8822c_set_channel_bb(struct rtw_dev *rtwdev, u8 channel, u8 bw,
|
||||
break;
|
||||
case RTW_CHANNEL_WIDTH_40:
|
||||
rtw_write32_mask(rtwdev, REG_CCKSB, BIT(4),
|
||||
(primary_ch_idx == 1 ? 1 : 0));
|
||||
(primary_ch_idx == RTW_SC_20_UPPER ? 1 : 0));
|
||||
rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xf, 0x5);
|
||||
rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xc0, 0x0);
|
||||
rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xff00,
|
||||
|
Loading…
Reference in New Issue
Block a user