ath9k_hw: Add a helper to get paprd scale factor
authorVasanthakumar Thiagarajan <vasanth@atheros.com>
Wed, 15 Dec 2010 15:30:51 +0000 (07:30 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 16 Dec 2010 20:22:30 +0000 (15:22 -0500)
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h

index 4149ffb6d54a846aa9133d52fb13fd68c71defa8..9fa5793abd271630ed608da62c2f1d8ec64f93cb 100644 (file)
@@ -4843,6 +4843,27 @@ u8 *ar9003_get_spur_chan_ptr(struct ath_hw *ah, bool is_2ghz)
                return eep->modalHeader5G.spurChans;
 }
 
+unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
+                                          struct ath9k_channel *chan)
+{
+       struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
+
+       if (IS_CHAN_2GHZ(chan))
+               return MS(le32_to_cpu(eep->modalHeader2G.papdRateMaskHt20),
+                         AR9300_PAPRD_SCALE_1);
+       else {
+               if (chan->channel >= 5700)
+               return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20),
+                         AR9300_PAPRD_SCALE_1);
+               else if (chan->channel >= 5400)
+                       return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40),
+                                  AR9300_PAPRD_SCALE_2);
+               else
+                       return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40),
+                                 AR9300_PAPRD_SCALE_1);
+       }
+}
+
 const struct eeprom_ops eep_ar9300_ops = {
        .check_eeprom = ath9k_hw_ar9300_check_eeprom,
        .get_eeprom = ath9k_hw_ar9300_get_eeprom,
index efb6a02be37760c8169aa6c1a416b2fd8350627d..afb0b5ee1865c3c10481b5d6a8fac4c932f97af2 100644 (file)
@@ -315,4 +315,7 @@ s32 ar9003_hw_get_tx_gain_idx(struct ath_hw *ah);
 s32 ar9003_hw_get_rx_gain_idx(struct ath_hw *ah);
 
 u8 *ar9003_get_spur_chan_ptr(struct ath_hw *ah, bool is_2ghz);
+
+unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
+                                          struct ath9k_channel *chan);
 #endif