|
@@ -3189,6 +3189,8 @@ static int __devinit sky2_test_msi(struct sky2_hw *hw)
|
|
|
struct pci_dev *pdev = hw->pdev;
|
|
|
int err;
|
|
|
|
|
|
+ init_waitqueue_head (&hw->msi_wait);
|
|
|
+
|
|
|
sky2_write32(hw, B0_IMSK, Y2_IS_IRQ_SW);
|
|
|
|
|
|
err = request_irq(pdev->irq, sky2_test_intr, IRQF_SHARED, DRV_NAME, hw);
|
|
@@ -3198,10 +3200,8 @@ static int __devinit sky2_test_msi(struct sky2_hw *hw)
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
- init_waitqueue_head (&hw->msi_wait);
|
|
|
-
|
|
|
sky2_write8(hw, B0_CTST, CS_ST_SW_IRQ);
|
|
|
- wmb();
|
|
|
+ sky2_read8(hw, B0_CTST);
|
|
|
|
|
|
wait_event_timeout(hw->msi_wait, hw->msi_detected, HZ/10);
|
|
|
|