ath9k_hw: dynamically choose the SERDES array for low power
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Mon, 21 Jun 2010 22:38:50 +0000 (18:38 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 23 Jun 2010 19:14:03 +0000 (15:14 -0400)
The array we use will vary depending on whether or not we are
to go to lower power or not. The default values (iniPcieSerdes)
are a copy or what go into the registers through the INI files.

Cc: Aeolus Yang <aeolus.yang@atheros.com>
Cc: Madhan Jaganathan <madhan.jaganathan@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ar9003_hw.c

index 99bde5f96a83e3c483dc0da0e8002ec35d8b919b..064168909108005531e90e9ea657f51a43866794 100644 (file)
@@ -305,11 +305,15 @@ static void ar9003_hw_configpcipowersave(struct ath_hw *ah,
         */
        if (ah->config.pcieSerDesWrite) {
                unsigned int i;
+               struct ar5416IniArray *array;
 
-               for (i = 0; i < ah->iniPcieSerdesLowPower.ia_rows; i++) {
+               array = power_off ? &ah->iniPcieSerdes :
+                                   &ah->iniPcieSerdesLowPower;
+
+               for (i = 0; i < array->ia_rows; i++) {
                        REG_WRITE(ah,
-                                 INI_RA(&ah->iniPcieSerdesLowPower, i, 0),
-                                 INI_RA(&ah->iniPcieSerdesLowPower, i, 1));
+                                 INI_RA(array, i, 0),
+                                 INI_RA(array, i, 1));
                }
        }
 }