aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2011-04-28 12:34:32 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-04-28 12:36:48 -0400
commit2dfb9a85ecb86f00b085d6fca7d4bb8dc6764710 (patch)
tree70faa39293e4c02d4baf9951c0f9d83a35e88b2b
parentb6d2a3e6ff6a7019b4a240b6bc4a4d74ce82d533 (diff)
Input: sh_keysc - switch to threaded IRQ handler
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>
-rw-r--r--drivers/input/keyboard/sh_keysc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/input/keyboard/sh_keysc.c b/drivers/input/keyboard/sh_keysc.c
index 429ac2b77438..66eea50fccf5 100644
--- a/drivers/input/keyboard/sh_keysc.c
+++ b/drivers/input/keyboard/sh_keysc.c
@@ -231,7 +231,8 @@ static int __devinit sh_keysc_probe(struct platform_device *pdev)
231 input->keycodesize = sizeof(pdata->keycodes[0]); 231 input->keycodesize = sizeof(pdata->keycodes[0]);
232 input->keycodemax = ARRAY_SIZE(pdata->keycodes); 232 input->keycodemax = ARRAY_SIZE(pdata->keycodes);
233 233
234 error = request_irq(irq, sh_keysc_isr, 0, pdev->name, pdev); 234 error = request_threaded_irq(irq, NULL, sh_keysc_isr, IRQF_ONESHOT,
235 dev_name(&pdev->dev), pdev);
235 if (error) { 236 if (error) {
236 dev_err(&pdev->dev, "failed to request IRQ\n"); 237 dev_err(&pdev->dev, "failed to request IRQ\n");
237 goto err3; 238 goto err3;