USB: twl6030-usb: pass IRQF_ONESHOT to request_threaded_irq
authorMing Lei <ming.lei@canonical.com>
Thu, 17 May 2012 03:38:24 +0000 (11:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 May 2012 16:49:23 +0000 (09:49 -0700)
The flag of IRQF_ONESHOT should be passed to request_threaded_irq,
otherwise the following failure message will be dumped because
hardware handler is defined as NULL:

[    2.271148] genirq: Threaded irq requested with handler=NULL and
!ONESHOT for irq 356
[    2.279541] twl6030_usb twl6030_usb: can't get IRQ 356, err -22
[    2.285919] twl6030_usb: probe of twl6030_usb failed with error -22

The patch fixes the twl6030-usb probe failure.

Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/otg/twl6030-usb.c

index e3fa387ca81ed76614cd397fcec70069f9585b4b..d2a9a8e691b9dd47ea6dbeca37c870e028d5dd1e 100644 (file)
@@ -455,7 +455,7 @@ static int __devinit twl6030_usb_probe(struct platform_device *pdev)
 
        twl->irq_enabled = true;
        status = request_threaded_irq(twl->irq1, NULL, twl6030_usbotg_irq,
-                       IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
+                       IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING | IRQF_ONESHOT,
                        "twl6030_usb", twl);
        if (status < 0) {
                dev_err(&pdev->dev, "can't get IRQ %d, err %d\n",
@@ -467,7 +467,7 @@ static int __devinit twl6030_usb_probe(struct platform_device *pdev)
        }
 
        status = request_threaded_irq(twl->irq2, NULL, twl6030_usb_irq,
-                       IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
+                       IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING | IRQF_ONESHOT,
                        "twl6030_usb", twl);
        if (status < 0) {
                dev_err(&pdev->dev, "can't get IRQ %d, err %d\n",