]> rtime.felk.cvut.cz Git - lisovros/linux_canprio.git/blobdiff - drivers/net/wireless/ath/ath9k/ar9002_hw.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
[lisovros/linux_canprio.git] / drivers / net / wireless / ath / ath9k / ar9002_hw.c
index d48f5fe8af7faac760b332a713728fc9c1a3eec6..e3f268900763a02374440717ba4490c2ebdca7c1 100644 (file)
@@ -141,6 +141,25 @@ static void ar9002_hw_init_mode_regs(struct ath_hw *ah)
                        INIT_INI_ARRAY(&ah->iniBank6TPC, ar5416Bank6TPC_9100,
                                       ARRAY_SIZE(ar5416Bank6TPC_9100), 3);
        }
+
+       /* iniAddac needs to be modified for these chips */
+       if (AR_SREV_9160(ah) || !AR_SREV_5416_22_OR_LATER(ah)) {
+               struct ar5416IniArray *addac = &ah->iniAddac;
+               u32 size = sizeof(u32) * addac->ia_rows * addac->ia_columns;
+               u32 *data;
+
+               data = kmalloc(size, GFP_KERNEL);
+               if (!data)
+                       return;
+
+               memcpy(data, addac->ia_array, size);
+               addac->ia_array = data;
+
+               if (!AR_SREV_5416_22_OR_LATER(ah)) {
+                       /* override CLKDRV value */
+                       INI_RA(addac, 31,1) = 0;
+               }
+       }
 }
 
 /* Support for Japan ch.14 (2484) spread */