diff options
Diffstat (limited to 'drivers/net/wireless/ath/wil6210/interrupt.c')
-rw-r--r-- | drivers/net/wireless/ath/wil6210/interrupt.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/wil6210/interrupt.c b/drivers/net/wireless/ath/wil6210/interrupt.c index 10919f95a83c..52c40e1d593a 100644 --- a/drivers/net/wireless/ath/wil6210/interrupt.c +++ b/drivers/net/wireless/ath/wil6210/interrupt.c | |||
@@ -493,6 +493,23 @@ free0: | |||
493 | 493 | ||
494 | return rc; | 494 | return rc; |
495 | } | 495 | } |
496 | /* can't use wil_ioread32_and_clear because ICC value is not ser yet */ | ||
497 | static inline void wil_clear32(void __iomem *addr) | ||
498 | { | ||
499 | u32 x = ioread32(addr); | ||
500 | |||
501 | iowrite32(x, addr); | ||
502 | } | ||
503 | |||
504 | void wil6210_clear_irq(struct wil6210_priv *wil) | ||
505 | { | ||
506 | wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_RX_ICR) + | ||
507 | offsetof(struct RGF_ICR, ICR)); | ||
508 | wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_TX_ICR) + | ||
509 | offsetof(struct RGF_ICR, ICR)); | ||
510 | wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_MISC_ICR) + | ||
511 | offsetof(struct RGF_ICR, ICR)); | ||
512 | } | ||
496 | 513 | ||
497 | int wil6210_init_irq(struct wil6210_priv *wil, int irq) | 514 | int wil6210_init_irq(struct wil6210_priv *wil, int irq) |
498 | { | 515 | { |