aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/mac.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/mac.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/mac.c13
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);
812void ath9k_hw_enable_interrupts(struct ath_hw *ah) 812void 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)