ath9k: add functions to get paprd rate mask
authorWenli Looi <wlooi@ucalgary.ca>
Sun, 20 Mar 2022 23:30:10 +0000 (17:30 -0600)
committerKalle Valo <quic_kvalo@quicinc.com>
Fri, 25 Mar 2022 10:33:49 +0000 (12:33 +0200)
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
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
drivers/net/wireless/ath/ath9k/ar9003_paprd.c

index a109a44a19999adfcfbaa015db17d5d1af6092b0..abf12de0e3814cf738a8652df8069d8defbc884c 100644 (file)
@@ -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_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 target_power_val_t2_eep[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);
 
        if (ar9003_is_paprd_enabled(ah)) {
-               if (IS_CHAN_2GHZ(chan))
-                       modal_hdr = &eep->modalHeader2G;
-               else
-                       modal_hdr = &eep->modalHeader5G;
-
                ah->paprd_ratemask =
-                       le32_to_cpu(modal_hdr->papdRateMaskHt20) &
+                       ar9003_get_paprd_rate_mask_ht20(ah, IS_CHAN_2GHZ(chan)) &
                        AR9300_PAPRD_RATE_MASK;
 
                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;
 
                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;
 }
 
+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,
                                           struct ath9k_channel *chan)
 {
-       struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
+       bool is2ghz = IS_CHAN_2GHZ(chan);
 
-       if (IS_CHAN_2GHZ(chan))
-               return MS(le32_to_cpu(eep->modalHeader2G.papdRateMaskHt20),
+       if (is2ghz)
+               return MS(ar9003_get_paprd_rate_mask_ht20(ah, is2ghz),
                          AR9300_PAPRD_SCALE_1);
        else {
                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);
                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);
                else
-                       return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40),
+                       return MS(ar9003_get_paprd_rate_mask_ht40(ah, is2ghz),
                                  AR9300_PAPRD_SCALE_1);
        }
 }
index e8fda54acfe380188fbd87812a995e47dca1fd91..f8ae20318302f3b410ae7cbca82bcfca8dbb5124 100644 (file)
@@ -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);
 
+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,
                                           struct ath9k_channel *chan);
 
index 34e1009402846c854b22d9d32c4f70e21465b518..b2d53b6c0ffd20dcf1025b5c82d28d99c13fd627 100644 (file)
@@ -21,7 +21,7 @@
 void ar9003_paprd_enable(struct ath_hw *ah, bool val)
 {
        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
@@ -36,17 +36,17 @@ void ar9003_paprd_enable(struct ath_hw *ah, bool val)
         * -- disable PAPRD for lower band 5GHz
         */
 
-       if (IS_CHAN_5GHZ(chan)) {
+       if (!is2ghz) {
                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))
                                val = false;
                } 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))
                                val = false;
                } else {
-                       if (le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20)
+                       if (ar9003_get_paprd_rate_mask_ht20(ah, is2ghz)
                                                                  & BIT(28))
                                val = false;
                }