|
@@ -537,9 +537,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
|
|
mdelay(1);
|
|
mdelay(1);
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Write some more initial register settings
|
|
|
|
|
|
+ * Write some more initial register settings for revised chips
|
|
*/
|
|
*/
|
|
- if (ah->ah_version == AR5K_AR5212) {
|
|
|
|
|
|
+ if (ah->ah_version == AR5K_AR5212 &&
|
|
|
|
+ ah->ah_phy_revision > 0x41) {
|
|
ath5k_hw_reg_write(ah, 0x0002a002, 0x982c);
|
|
ath5k_hw_reg_write(ah, 0x0002a002, 0x982c);
|
|
|
|
|
|
if (channel->hw_value == CHANNEL_G)
|
|
if (channel->hw_value == CHANNEL_G)
|
|
@@ -558,19 +559,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
|
|
else
|
|
else
|
|
ath5k_hw_reg_write(ah, 0x00000000, 0x994c);
|
|
ath5k_hw_reg_write(ah, 0x00000000, 0x994c);
|
|
|
|
|
|
- /* Some bits are disabled here, we know nothing about
|
|
|
|
- * register 0xa228 yet, most of the times this ends up
|
|
|
|
- * with a value 0x9b5 -haven't seen any dump with
|
|
|
|
- * a different value- */
|
|
|
|
- /* Got this from decompiling binary HAL */
|
|
|
|
- data = ath5k_hw_reg_read(ah, 0xa228);
|
|
|
|
- data &= 0xfffffdff;
|
|
|
|
- ath5k_hw_reg_write(ah, data, 0xa228);
|
|
|
|
-
|
|
|
|
- data = ath5k_hw_reg_read(ah, 0xa228);
|
|
|
|
- data &= 0xfffe03ff;
|
|
|
|
- ath5k_hw_reg_write(ah, data, 0xa228);
|
|
|
|
- data = 0;
|
|
|
|
|
|
+ /* Got this from legacy-hal */
|
|
|
|
+ AR5K_REG_DISABLE_BITS(ah, 0xa228, 0x200);
|
|
|
|
+
|
|
|
|
+ AR5K_REG_MASKED_BITS(ah, 0xa228, 0x800, 0xfffe03ff);
|
|
|
|
|
|
/* Just write 0x9b5 ? */
|
|
/* Just write 0x9b5 ? */
|
|
/* ath5k_hw_reg_write(ah, 0x000009b5, 0xa228); */
|
|
/* ath5k_hw_reg_write(ah, 0x000009b5, 0xa228); */
|