diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/hw.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 3384ca164562..5250c8dc83e1 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -387,6 +387,9 @@ static void ath9k_hw_init_config(struct ath_hw *ah) | |||
387 | else | 387 | else |
388 | ah->config.ht_enable = 0; | 388 | ah->config.ht_enable = 0; |
389 | 389 | ||
390 | /* PAPRD needs some more work to be enabled */ | ||
391 | ah->config.paprd_disable = 1; | ||
392 | |||
390 | ah->config.rx_intr_mitigation = true; | 393 | ah->config.rx_intr_mitigation = true; |
391 | ah->config.pcieSerDesWrite = true; | 394 | ah->config.pcieSerDesWrite = true; |
392 | 395 | ||
@@ -486,6 +489,7 @@ static int ath9k_hw_post_init(struct ath_hw *ah) | |||
486 | ath_print(ath9k_hw_common(ah), ATH_DBG_FATAL, | 489 | ath_print(ath9k_hw_common(ah), ATH_DBG_FATAL, |
487 | "Failed allocating banks for " | 490 | "Failed allocating banks for " |
488 | "external radio\n"); | 491 | "external radio\n"); |
492 | ath9k_hw_rf_free_ext_banks(ah); | ||
489 | return ecode; | 493 | return ecode; |
490 | } | 494 | } |
491 | 495 | ||
@@ -2263,7 +2267,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah) | |||
2263 | pCap->rx_status_len = sizeof(struct ar9003_rxs); | 2267 | pCap->rx_status_len = sizeof(struct ar9003_rxs); |
2264 | pCap->tx_desc_len = sizeof(struct ar9003_txc); | 2268 | pCap->tx_desc_len = sizeof(struct ar9003_txc); |
2265 | pCap->txs_len = sizeof(struct ar9003_txs); | 2269 | pCap->txs_len = sizeof(struct ar9003_txs); |
2266 | if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD)) | 2270 | if (!ah->config.paprd_disable && |
2271 | ah->eep_ops->get_eeprom(ah, EEP_PAPRD)) | ||
2267 | pCap->hw_caps |= ATH9K_HW_CAP_PAPRD; | 2272 | pCap->hw_caps |= ATH9K_HW_CAP_PAPRD; |
2268 | } else { | 2273 | } else { |
2269 | pCap->tx_desc_len = sizeof(struct ath_desc); | 2274 | pCap->tx_desc_len = sizeof(struct ath_desc); |
@@ -2350,7 +2355,8 @@ u32 ath9k_hw_gpio_get(struct ath_hw *ah, u32 gpio) | |||
2350 | val = REG_READ(ah, AR7010_GPIO_IN); | 2355 | val = REG_READ(ah, AR7010_GPIO_IN); |
2351 | return (MS(val, AR7010_GPIO_IN_VAL) & AR_GPIO_BIT(gpio)) == 0; | 2356 | return (MS(val, AR7010_GPIO_IN_VAL) & AR_GPIO_BIT(gpio)) == 0; |
2352 | } else if (AR_SREV_9300_20_OR_LATER(ah)) | 2357 | } else if (AR_SREV_9300_20_OR_LATER(ah)) |
2353 | return MS_REG_READ(AR9300, gpio) != 0; | 2358 | return (MS(REG_READ(ah, AR_GPIO_IN), AR9300_GPIO_IN_VAL) & |
2359 | AR_GPIO_BIT(gpio)) != 0; | ||
2354 | else if (AR_SREV_9271(ah)) | 2360 | else if (AR_SREV_9271(ah)) |
2355 | return MS_REG_READ(AR9271, gpio) != 0; | 2361 | return MS_REG_READ(AR9271, gpio) != 0; |
2356 | else if (AR_SREV_9287_10_OR_LATER(ah)) | 2362 | else if (AR_SREV_9287_10_OR_LATER(ah)) |