Input: sh_keysc - switch to threaded IRQ handler
authorMagnus Damm <damm@opensource.se>
Thu, 28 Apr 2011 16:34:32 +0000 (09:34 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 28 Apr 2011 16:36:48 +0000 (09:36 -0700)
Update the KEYSC driver to make use of threaded IRQs with IRQF_ONESHOT
to improve interrupt latency. The driver is using udelay() in the ISR
to make sure the hardware has stabilized. Without using interrupt threads
this delay may affect the latency of the rest of the system.

Also pass dev_name() as string for /proc/interrupts.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/keyboard/sh_keysc.c

index 429ac2b7743854827cf7fd25c9c89780152eaa3f..66eea50fccf52eaeacf86711328c7577f3f4d2e8 100644 (file)
@@ -231,7 +231,8 @@ static int __devinit sh_keysc_probe(struct platform_device *pdev)
        input->keycodesize = sizeof(pdata->keycodes[0]);
        input->keycodemax = ARRAY_SIZE(pdata->keycodes);
 
-       error = request_irq(irq, sh_keysc_isr, 0, pdev->name, pdev);
+       error = request_threaded_irq(irq, NULL, sh_keysc_isr, IRQF_ONESHOT,
+                                    dev_name(&pdev->dev), pdev);
        if (error) {
                dev_err(&pdev->dev, "failed to request IRQ\n");
                goto err3;