cw1200: Use a threaded oneshot irq handler for cw1200_spi
authorSolomon Peachy <pizza@shaftnet.org>
Mon, 23 Sep 2013 20:00:04 +0000 (16:00 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 26 Sep 2013 18:02:31 +0000 (14:02 -0400)
This supercedes the older patch ("cw1200: Don't perform SPI transfers in
interrupt context") that badly attempted to fix this problem.

This is a far simpler solution, which has the added benefit of
actually working.

Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/cw1200/cw1200_spi.c

index 5a64ac9630091f7e88f768a94ff789de55fcb8f1..899cad34ccd3aa1649029d90294fe21c30608d14 100644 (file)
@@ -250,9 +250,10 @@ static int cw1200_spi_irq_subscribe(struct hwbus_priv *self)
 
        pr_debug("SW IRQ subscribe\n");
 
-       ret = request_any_context_irq(self->func->irq, cw1200_spi_irq_handler,
-                                     IRQF_TRIGGER_HIGH,
-                                     "cw1200_wlan_irq", self);
+       ret = request_threaded_irq(self->func->irq, NULL,
+                                  cw1200_spi_irq_handler,
+                                  IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
+                                  "cw1200_wlan_irq", self);
        if (WARN_ON(ret < 0))
                goto exit;