return rc;
 }
+/* can't use wil_ioread32_and_clear because ICC value is not ser yet */
+static inline void wil_clear32(void __iomem *addr)
+{
+       u32 x = ioread32(addr);
+
+       iowrite32(x, addr);
+}
+
+void wil6210_clear_irq(struct wil6210_priv *wil)
+{
+       wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_RX_ICR) +
+                   offsetof(struct RGF_ICR, ICR));
+       wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_TX_ICR) +
+                   offsetof(struct RGF_ICR, ICR));
+       wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_MISC_ICR) +
+                   offsetof(struct RGF_ICR, ICR));
+}
 
 int wil6210_init_irq(struct wil6210_priv *wil, int irq)
 {
 
 int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_m, u32 *t_r);
 int wmi_disconnect_sta(struct wil6210_priv *wil, const u8 *mac, u16 reason);
 
+void wil6210_clear_irq(struct wil6210_priv *wil);
 int wil6210_init_irq(struct wil6210_priv *wil, int irq);
 void wil6210_fini_irq(struct wil6210_priv *wil, int irq);
 void wil6210_disable_irq(struct wil6210_priv *wil);