diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/mac.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/mac.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c index 1968c67e3fab..9cf7a7d0e118 100644 --- a/drivers/net/wireless/ath/ath9k/mac.c +++ b/drivers/net/wireless/ath/ath9k/mac.c | |||
@@ -812,10 +812,14 @@ EXPORT_SYMBOL(ath9k_hw_disable_interrupts); | |||
812 | void ath9k_hw_enable_interrupts(struct ath_hw *ah) | 812 | void ath9k_hw_enable_interrupts(struct ath_hw *ah) |
813 | { | 813 | { |
814 | struct ath_common *common = ath9k_hw_common(ah); | 814 | struct ath_common *common = ath9k_hw_common(ah); |
815 | u32 sync_default = AR_INTR_SYNC_DEFAULT; | ||
815 | 816 | ||
816 | if (!(ah->imask & ATH9K_INT_GLOBAL)) | 817 | if (!(ah->imask & ATH9K_INT_GLOBAL)) |
817 | return; | 818 | return; |
818 | 819 | ||
820 | if (AR_SREV_9340(ah)) | ||
821 | sync_default &= ~AR_INTR_SYNC_HOST1_FATAL; | ||
822 | |||
819 | ath_dbg(common, ATH_DBG_INTERRUPT, "enable IER\n"); | 823 | ath_dbg(common, ATH_DBG_INTERRUPT, "enable IER\n"); |
820 | REG_WRITE(ah, AR_IER, AR_IER_ENABLE); | 824 | REG_WRITE(ah, AR_IER, AR_IER_ENABLE); |
821 | if (!AR_SREV_9100(ah)) { | 825 | if (!AR_SREV_9100(ah)) { |
@@ -824,10 +828,8 @@ void ath9k_hw_enable_interrupts(struct ath_hw *ah) | |||
824 | REG_WRITE(ah, AR_INTR_ASYNC_MASK, AR_INTR_MAC_IRQ); | 828 | REG_WRITE(ah, AR_INTR_ASYNC_MASK, AR_INTR_MAC_IRQ); |
825 | 829 | ||
826 | 830 | ||
827 | REG_WRITE(ah, AR_INTR_SYNC_ENABLE, | 831 | REG_WRITE(ah, AR_INTR_SYNC_ENABLE, sync_default); |
828 | AR_INTR_SYNC_DEFAULT); | 832 | REG_WRITE(ah, AR_INTR_SYNC_MASK, sync_default); |
829 | REG_WRITE(ah, AR_INTR_SYNC_MASK, | ||
830 | AR_INTR_SYNC_DEFAULT); | ||
831 | } | 833 | } |
832 | ath_dbg(common, ATH_DBG_INTERRUPT, "AR_IMR 0x%x IER 0x%x\n", | 834 | ath_dbg(common, ATH_DBG_INTERRUPT, "AR_IMR 0x%x IER 0x%x\n", |
833 | REG_READ(ah, AR_IMR), REG_READ(ah, AR_IER)); | 835 | REG_READ(ah, AR_IMR), REG_READ(ah, AR_IER)); |
@@ -883,6 +885,9 @@ void ath9k_hw_set_interrupts(struct ath_hw *ah, enum ath9k_int ints) | |||
883 | mask |= AR_IMR_GENTMR; | 885 | mask |= AR_IMR_GENTMR; |
884 | } | 886 | } |
885 | 887 | ||
888 | if (ints & ATH9K_INT_GENTIMER) | ||
889 | mask |= AR_IMR_GENTMR; | ||
890 | |||
886 | if (ints & (ATH9K_INT_BMISC)) { | 891 | if (ints & (ATH9K_INT_BMISC)) { |
887 | mask |= AR_IMR_BCNMISC; | 892 | mask |= AR_IMR_BCNMISC; |
888 | if (ints & ATH9K_INT_TIM) | 893 | if (ints & ATH9K_INT_TIM) |