Author: adrian
Date: Fri May 13 10:36:38 2011
New Revision: 221834
URL: http://svn.freebsd.org/changeset/base/221834

Log:
  Remove duplicate code - add a function which calculates the ratesArray[]
  table which contains the per-rate target TX power.
  
  This code is shared between the v14 eeprom board setup (AR5416, AR9160,
  AR9280) and will also be used by the upcoming Kite (AR9287) support.

Modified:
  head/sys/dev/ath/ath_hal/ar5416/ar5416.h
  head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
  head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c

Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416.h    Fri May 13 09:57:12 2011        
(r221833)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416.h    Fri May 13 10:36:38 2011        
(r221834)
@@ -237,6 +237,15 @@ extern     HAL_BOOL ar5416GetChipPowerLimits
                struct ieee80211_channel *chan);
 extern void ar5416GetChannelCenters(struct ath_hal *,
                const struct ieee80211_channel *chan, CHAN_CENTERS *centers);
+extern void ar5416SetRatesArrayFromTargetPower(struct ath_hal *ah,
+               const struct ieee80211_channel *chan,
+               int16_t *ratesArray,
+               const CAL_TARGET_POWER_LEG *targetPowerCck,
+               const CAL_TARGET_POWER_LEG *targetPowerCckExt,
+               const CAL_TARGET_POWER_LEG *targetPowerOfdm,
+               const CAL_TARGET_POWER_LEG *targetPowerOfdmExt,
+               const CAL_TARGET_POWER_HT *targetPowerHt20,
+               const CAL_TARGET_POWER_HT *targetPowerHt40);
 extern void ar5416GetTargetPowers(struct ath_hal *ah, 
                const struct ieee80211_channel *chan,
                CAL_TARGET_POWER_HT *powInfo,

Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c      Fri May 13 09:57:12 
2011        (r221833)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c      Fri May 13 10:36:38 
2011        (r221834)
@@ -1635,6 +1635,63 @@ ar5416SetBoardValues(struct ath_hal *ah,
  */
 
 /*
+ * Set the target power array "ratesArray" from the
+ * given set of target powers.
+ *
+ * This is used by the various chipset/EEPROM TX power
+ * setup routines.
+ */ 
+void
+ar5416SetRatesArrayFromTargetPower(struct ath_hal *ah,
+    const struct ieee80211_channel *chan,
+    int16_t *ratesArray,
+    const CAL_TARGET_POWER_LEG *targetPowerCck,
+    const CAL_TARGET_POWER_LEG *targetPowerCckExt,
+    const CAL_TARGET_POWER_LEG *targetPowerOfdm,
+    const CAL_TARGET_POWER_LEG *targetPowerOfdmExt,
+    const CAL_TARGET_POWER_HT *targetPowerHt20,
+    const CAL_TARGET_POWER_HT *targetPowerHt40)
+{
+#define        N(a)    (sizeof(a)/sizeof(a[0]))
+       int i;
+
+       /* Blank the rates array, to be consistent */
+       for (i = 0; i < Ar5416RateSize; i++)
+               ratesArray[i] = 0;
+
+       /* Set rates Array from collected data */
+       ratesArray[rate6mb] = ratesArray[rate9mb] = ratesArray[rate12mb] =
+           ratesArray[rate18mb] = ratesArray[rate24mb] = 
targetPowerOfdm->tPow2x[0];
+       ratesArray[rate36mb] = targetPowerOfdm->tPow2x[1];
+       ratesArray[rate48mb] = targetPowerOfdm->tPow2x[2];
+       ratesArray[rate54mb] = targetPowerOfdm->tPow2x[3];
+       ratesArray[rateXr] = targetPowerOfdm->tPow2x[0];
+
+       for (i = 0; i < N(targetPowerHt20->tPow2x); i++) {
+               ratesArray[rateHt20_0 + i] = targetPowerHt20->tPow2x[i];
+       }
+
+       if (IEEE80211_IS_CHAN_2GHZ(chan)) {
+               ratesArray[rate1l]  = targetPowerCck->tPow2x[0];
+               ratesArray[rate2s] = ratesArray[rate2l]  = 
targetPowerCck->tPow2x[1];
+               ratesArray[rate5_5s] = ratesArray[rate5_5l] = 
targetPowerCck->tPow2x[2];
+               ratesArray[rate11s] = ratesArray[rate11l] = 
targetPowerCck->tPow2x[3];
+       }
+       if (IEEE80211_IS_CHAN_HT40(chan)) {
+               for (i = 0; i < N(targetPowerHt40->tPow2x); i++) {
+                       ratesArray[rateHt40_0 + i] = targetPowerHt40->tPow2x[i];
+               }
+               ratesArray[rateDupOfdm] = targetPowerHt40->tPow2x[0];
+               ratesArray[rateDupCck]  = targetPowerHt40->tPow2x[0];
+               ratesArray[rateExtOfdm] = targetPowerOfdmExt->tPow2x[0];
+               if (IEEE80211_IS_CHAN_2GHZ(chan)) {
+                       ratesArray[rateExtCck]  = targetPowerCckExt->tPow2x[0];
+               }
+       }
+#undef N
+}
+
+/*
  * ar5416SetPowerPerRateTable
  *
  * Sets the transmit power in the baseband for the given
@@ -1855,33 +1912,13 @@ ar5416SetPowerPerRateTable(struct ath_ha
        } /* end ctl mode checking */
 
        /* Set rates Array from collected data */
-       ratesArray[rate6mb] = ratesArray[rate9mb] = ratesArray[rate12mb] = 
ratesArray[rate18mb] = ratesArray[rate24mb] = targetPowerOfdm.tPow2x[0];
-       ratesArray[rate36mb] = targetPowerOfdm.tPow2x[1];
-       ratesArray[rate48mb] = targetPowerOfdm.tPow2x[2];
-       ratesArray[rate54mb] = targetPowerOfdm.tPow2x[3];
-       ratesArray[rateXr] = targetPowerOfdm.tPow2x[0];
-
-       for (i = 0; i < N(targetPowerHt20.tPow2x); i++) {
-               ratesArray[rateHt20_0 + i] = targetPowerHt20.tPow2x[i];
-       }
-
-       if (IEEE80211_IS_CHAN_2GHZ(chan)) {
-               ratesArray[rate1l]  = targetPowerCck.tPow2x[0];
-               ratesArray[rate2s] = ratesArray[rate2l]  = 
targetPowerCck.tPow2x[1];
-               ratesArray[rate5_5s] = ratesArray[rate5_5l] = 
targetPowerCck.tPow2x[2];
-               ratesArray[rate11s] = ratesArray[rate11l] = 
targetPowerCck.tPow2x[3];
-       }
-       if (IEEE80211_IS_CHAN_HT40(chan)) {
-               for (i = 0; i < N(targetPowerHt40.tPow2x); i++) {
-                       ratesArray[rateHt40_0 + i] = targetPowerHt40.tPow2x[i];
-               }
-               ratesArray[rateDupOfdm] = targetPowerHt40.tPow2x[0];
-               ratesArray[rateDupCck]  = targetPowerHt40.tPow2x[0];
-               ratesArray[rateExtOfdm] = targetPowerOfdmExt.tPow2x[0];
-               if (IEEE80211_IS_CHAN_2GHZ(chan)) {
-                       ratesArray[rateExtCck]  = targetPowerCckExt.tPow2x[0];
-               }
-       }
+       ar5416SetRatesArrayFromTargetPower(ah, chan, ratesArray,
+           &targetPowerCck,
+           &targetPowerCckExt,
+           &targetPowerOfdm,
+           &targetPowerOfdmExt,
+           &targetPowerHt20,
+           &targetPowerHt40);
        return AH_TRUE;
 #undef EXT_ADDITIVE
 #undef CTL_11A_EXT

Modified: head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c      Fri May 13 09:57:12 
2011        (r221833)
+++ head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c      Fri May 13 10:36:38 
2011        (r221834)
@@ -533,32 +533,15 @@ ar9285SetPowerPerRateTable(struct ath_ha
                }
        } /* end ctl mode checking */
 
-       /* Set rates Array from collected data */
-       ratesArray[rate6mb] = ratesArray[rate9mb] = ratesArray[rate12mb] = 
ratesArray[rate18mb] = ratesArray[rate24mb] = targetPowerOfdm.tPow2x[0];
-       ratesArray[rate36mb] = targetPowerOfdm.tPow2x[1];
-       ratesArray[rate48mb] = targetPowerOfdm.tPow2x[2];
-       ratesArray[rate54mb] = targetPowerOfdm.tPow2x[3];
-       ratesArray[rateXr] = targetPowerOfdm.tPow2x[0];
-
-       for (i = 0; i < N(targetPowerHt20.tPow2x); i++) {
-               ratesArray[rateHt20_0 + i] = targetPowerHt20.tPow2x[i];
-       }
-
-       ratesArray[rate1l]  = targetPowerCck.tPow2x[0];
-       ratesArray[rate2s] = ratesArray[rate2l]  = targetPowerCck.tPow2x[1];
-       ratesArray[rate5_5s] = ratesArray[rate5_5l] = targetPowerCck.tPow2x[2];
-       ratesArray[rate11s] = ratesArray[rate11l] = targetPowerCck.tPow2x[3];
-       if (IEEE80211_IS_CHAN_HT40(chan)) {
-               for (i = 0; i < N(targetPowerHt40.tPow2x); i++) {
-                       ratesArray[rateHt40_0 + i] = targetPowerHt40.tPow2x[i];
-               }
-               ratesArray[rateDupOfdm] = targetPowerHt40.tPow2x[0];
-               ratesArray[rateDupCck]  = targetPowerHt40.tPow2x[0];
-               ratesArray[rateExtOfdm] = targetPowerOfdmExt.tPow2x[0];
-               if (IEEE80211_IS_CHAN_2GHZ(chan)) {
-                       ratesArray[rateExtCck]  = targetPowerCckExt.tPow2x[0];
-               }
-       }
+        /* Set rates Array from collected data */
+       ar5416SetRatesArrayFromTargetPower(ah, chan, ratesArray,
+           &targetPowerCck,
+           &targetPowerCckExt,
+           &targetPowerOfdm,
+           &targetPowerOfdmExt,
+           &targetPowerHt20,
+           &targetPowerHt40);
+
        return AH_TRUE;
 #undef EXT_ADDITIVE
 #undef CTL_11G_EXT
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to