ath9k: add functions to get paprd rate mask
This removes some code duplication with le32_to_cpu. This may also be required for QCN550x support, to provide an abstraction over the underlying EEPROM format. Signed-off-by: Wenli Looi <wlooi@ucalgary.ca> Acked-by: Toke Høiland-Jørgensen <toke@toke.dk> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Link: https://lore.kernel.org/r/20220320233010.123106-7-wlooi@ucalgary.ca
This commit is contained in:
@@ -5449,8 +5449,6 @@ static void ath9k_hw_ar9300_set_txpower(struct ath_hw *ah,
|
|||||||
{
|
{
|
||||||
struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
|
struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
|
||||||
struct ath_common *common = ath9k_hw_common(ah);
|
struct ath_common *common = ath9k_hw_common(ah);
|
||||||
struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
|
|
||||||
struct ar9300_modal_eep_header *modal_hdr;
|
|
||||||
u8 targetPowerValT2[ar9300RateSize];
|
u8 targetPowerValT2[ar9300RateSize];
|
||||||
u8 target_power_val_t2_eep[ar9300RateSize];
|
u8 target_power_val_t2_eep[ar9300RateSize];
|
||||||
u8 targetPowerValT2_tpc[ar9300RateSize];
|
u8 targetPowerValT2_tpc[ar9300RateSize];
|
||||||
@@ -5465,17 +5463,12 @@ static void ath9k_hw_ar9300_set_txpower(struct ath_hw *ah,
|
|||||||
ar9003_hw_get_target_power_eeprom(ah, chan, targetPowerValT2);
|
ar9003_hw_get_target_power_eeprom(ah, chan, targetPowerValT2);
|
||||||
|
|
||||||
if (ar9003_is_paprd_enabled(ah)) {
|
if (ar9003_is_paprd_enabled(ah)) {
|
||||||
if (IS_CHAN_2GHZ(chan))
|
|
||||||
modal_hdr = &eep->modalHeader2G;
|
|
||||||
else
|
|
||||||
modal_hdr = &eep->modalHeader5G;
|
|
||||||
|
|
||||||
ah->paprd_ratemask =
|
ah->paprd_ratemask =
|
||||||
le32_to_cpu(modal_hdr->papdRateMaskHt20) &
|
ar9003_get_paprd_rate_mask_ht20(ah, IS_CHAN_2GHZ(chan)) &
|
||||||
AR9300_PAPRD_RATE_MASK;
|
AR9300_PAPRD_RATE_MASK;
|
||||||
|
|
||||||
ah->paprd_ratemask_ht40 =
|
ah->paprd_ratemask_ht40 =
|
||||||
le32_to_cpu(modal_hdr->papdRateMaskHt40) &
|
ar9003_get_paprd_rate_mask_ht40(ah, IS_CHAN_2GHZ(chan)) &
|
||||||
AR9300_PAPRD_RATE_MASK;
|
AR9300_PAPRD_RATE_MASK;
|
||||||
|
|
||||||
paprd_scale_factor = ar9003_get_paprd_scale_factor(ah, chan);
|
paprd_scale_factor = ar9003_get_paprd_scale_factor(ah, chan);
|
||||||
@@ -5592,23 +5585,33 @@ u8 *ar9003_get_spur_chan_ptr(struct ath_hw *ah, bool is2ghz)
|
|||||||
return ar9003_modal_header(ah, is2ghz)->spurChans;
|
return ar9003_modal_header(ah, is2ghz)->spurChans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 ar9003_get_paprd_rate_mask_ht20(struct ath_hw *ah, bool is2ghz)
|
||||||
|
{
|
||||||
|
return le32_to_cpu(ar9003_modal_header(ah, is2ghz)->papdRateMaskHt20);
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 ar9003_get_paprd_rate_mask_ht40(struct ath_hw *ah, bool is2ghz)
|
||||||
|
{
|
||||||
|
return le32_to_cpu(ar9003_modal_header(ah, is2ghz)->papdRateMaskHt40);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
|
unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
|
||||||
struct ath9k_channel *chan)
|
struct ath9k_channel *chan)
|
||||||
{
|
{
|
||||||
struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
|
bool is2ghz = IS_CHAN_2GHZ(chan);
|
||||||
|
|
||||||
if (IS_CHAN_2GHZ(chan))
|
if (is2ghz)
|
||||||
return MS(le32_to_cpu(eep->modalHeader2G.papdRateMaskHt20),
|
return MS(ar9003_get_paprd_rate_mask_ht20(ah, is2ghz),
|
||||||
AR9300_PAPRD_SCALE_1);
|
AR9300_PAPRD_SCALE_1);
|
||||||
else {
|
else {
|
||||||
if (chan->channel >= 5700)
|
if (chan->channel >= 5700)
|
||||||
return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20),
|
return MS(ar9003_get_paprd_rate_mask_ht20(ah, is2ghz),
|
||||||
AR9300_PAPRD_SCALE_1);
|
AR9300_PAPRD_SCALE_1);
|
||||||
else if (chan->channel >= 5400)
|
else if (chan->channel >= 5400)
|
||||||
return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40),
|
return MS(ar9003_get_paprd_rate_mask_ht40(ah, is2ghz),
|
||||||
AR9300_PAPRD_SCALE_2);
|
AR9300_PAPRD_SCALE_2);
|
||||||
else
|
else
|
||||||
return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40),
|
return MS(ar9003_get_paprd_rate_mask_ht40(ah, is2ghz),
|
||||||
AR9300_PAPRD_SCALE_1);
|
AR9300_PAPRD_SCALE_1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -363,6 +363,8 @@ u32 ar9003_hw_ant_ctrl_common_2_get(struct ath_hw *ah, bool is2ghz);
|
|||||||
|
|
||||||
u8 *ar9003_get_spur_chan_ptr(struct ath_hw *ah, bool is_2ghz);
|
u8 *ar9003_get_spur_chan_ptr(struct ath_hw *ah, bool is_2ghz);
|
||||||
|
|
||||||
|
u32 ar9003_get_paprd_rate_mask_ht20(struct ath_hw *ah, bool is2ghz);
|
||||||
|
u32 ar9003_get_paprd_rate_mask_ht40(struct ath_hw *ah, bool is2ghz);
|
||||||
unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
|
unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
|
||||||
struct ath9k_channel *chan);
|
struct ath9k_channel *chan);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
void ar9003_paprd_enable(struct ath_hw *ah, bool val)
|
void ar9003_paprd_enable(struct ath_hw *ah, bool val)
|
||||||
{
|
{
|
||||||
struct ath9k_channel *chan = ah->curchan;
|
struct ath9k_channel *chan = ah->curchan;
|
||||||
struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
|
bool is2ghz = IS_CHAN_2GHZ(chan);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 3 bits for modalHeader5G.papdRateMaskHt20
|
* 3 bits for modalHeader5G.papdRateMaskHt20
|
||||||
@@ -36,17 +36,17 @@ void ar9003_paprd_enable(struct ath_hw *ah, bool val)
|
|||||||
* -- disable PAPRD for lower band 5GHz
|
* -- disable PAPRD for lower band 5GHz
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (IS_CHAN_5GHZ(chan)) {
|
if (!is2ghz) {
|
||||||
if (chan->channel >= UPPER_5G_SUB_BAND_START) {
|
if (chan->channel >= UPPER_5G_SUB_BAND_START) {
|
||||||
if (le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20)
|
if (ar9003_get_paprd_rate_mask_ht20(ah, is2ghz)
|
||||||
& BIT(30))
|
& BIT(30))
|
||||||
val = false;
|
val = false;
|
||||||
} else if (chan->channel >= MID_5G_SUB_BAND_START) {
|
} else if (chan->channel >= MID_5G_SUB_BAND_START) {
|
||||||
if (le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20)
|
if (ar9003_get_paprd_rate_mask_ht20(ah, is2ghz)
|
||||||
& BIT(29))
|
& BIT(29))
|
||||||
val = false;
|
val = false;
|
||||||
} else {
|
} else {
|
||||||
if (le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20)
|
if (ar9003_get_paprd_rate_mask_ht20(ah, is2ghz)
|
||||||
& BIT(28))
|
& BIT(28))
|
||||||
val = false;
|
val = false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user