mwl8k: interrupt handling changes
authorNishant Sarmukadam <nishants@marvell.com>
Fri, 8 Apr 2011 09:08:27 +0000 (14:38 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 13 Apr 2011 19:19:08 +0000 (15:19 -0400)
We do not need to enable all the interrupts in mwl8k_probe_hw.
We need to enable only MWL8K_A2H_INT_OPC_DONE interrupt for sending
commands to the firmware. Keep the other interrupts masked in
mwl8k_probe_hw. Also, in mwl8k_start, where we expect other interrupts,
enable only those interrupts we are interested in.

Signed-off-by: Nishant Sarmukadam <nishants@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwl8k.c

index fb472f4..d241670 100644 (file)
@@ -4284,6 +4284,8 @@ static int mwl8k_start(struct ieee80211_hw *hw)
 
        /* Enable interrupts */
        iowrite32(MWL8K_A2H_EVENTS, priv->regs + MWL8K_HIU_A2H_INTERRUPT_MASK);
+       iowrite32(MWL8K_A2H_EVENTS,
+                 priv->regs + MWL8K_HIU_A2H_INTERRUPT_STATUS_MASK);
 
        rc = mwl8k_fw_lock(hw);
        if (!rc) {
@@ -5282,7 +5284,8 @@ static int mwl8k_probe_hw(struct ieee80211_hw *hw)
        iowrite32(MWL8K_A2H_INT_TX_DONE|MWL8K_A2H_INT_RX_READY|
                  MWL8K_A2H_INT_BA_WATCHDOG,
                  priv->regs + MWL8K_HIU_A2H_INTERRUPT_CLEAR_SEL);
-       iowrite32(0xffffffff, priv->regs + MWL8K_HIU_A2H_INTERRUPT_STATUS_MASK);
+       iowrite32(MWL8K_A2H_INT_OPC_DONE,
+                 priv->regs + MWL8K_HIU_A2H_INTERRUPT_STATUS_MASK);
 
        rc = request_irq(priv->pdev->irq, mwl8k_interrupt,
                         IRQF_SHARED, MWL8K_NAME, hw);