diff mbox

input: sh_keysc: Switch to threaded IRQ handler

Message ID 20110421133824.8698.22092.sendpatchset@t400s (mailing list archive)
State Accepted
Commit 2dfb9a85ecb86f00b085d6fca7d4bb8dc6764710
Headers show

Commit Message

Magnus Damm April 21, 2011, 1:38 p.m. UTC
From: Magnus Damm <damm@opensource.se>

Update the KEYSC driver to make use of threaded IRQs
with IRQF_ONESHOT.

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

Signed-off-by: Magnus Damm <damm@opensource.se>
---

 drivers/input/keyboard/sh_keysc.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Dmitry Torokhov April 28, 2011, 6:29 a.m. UTC | #1
On Thu, Apr 21, 2011 at 10:38:24PM +0900, Magnus Damm wrote:
> From: Magnus Damm <damm@opensource.se>
> 
> Update the KEYSC driver to make use of threaded IRQs
> with IRQF_ONESHOT.
> 

Explanation of why this is needed is missing.

Thanks.

> Also pass dev_name() as string for /proc/interrupts.
> 
> Signed-off-by: Magnus Damm <damm@opensource.se>
> ---
> 
>  drivers/input/keyboard/sh_keysc.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> --- 0011/drivers/input/keyboard/sh_keysc.c
> +++ work/drivers/input/keyboard/sh_keysc.c	2011-04-21 19:42:33.000000000 +0900
> @@ -231,7 +231,8 @@ static int __devinit sh_keysc_probe(stru
>  	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;
Magnus Damm April 28, 2011, 6:46 a.m. UTC | #2
On Thu, Apr 28, 2011 at 3:29 PM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Thu, Apr 21, 2011 at 10:38:24PM +0900, Magnus Damm wrote:
>> From: Magnus Damm <damm@opensource.se>
>>
>> Update the KEYSC driver to make use of threaded IRQs
>> with IRQF_ONESHOT.
>>
>
> Explanation of why this is needed is missing.
>
> Thanks.

Sorry for not giving you a more complete commit message.

The reason for this change is to improve interrupt latency. This
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.

Would you like me to resend a V2?

Thanks,

/ magnus
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov April 28, 2011, 7:03 a.m. UTC | #3
On Thu, Apr 28, 2011 at 03:46:16PM +0900, Magnus Damm wrote:
> On Thu, Apr 28, 2011 at 3:29 PM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > On Thu, Apr 21, 2011 at 10:38:24PM +0900, Magnus Damm wrote:
> >> From: Magnus Damm <damm@opensource.se>
> >>
> >> Update the KEYSC driver to make use of threaded IRQs
> >> with IRQF_ONESHOT.
> >>
> >
> > Explanation of why this is needed is missing.
> >
> > Thanks.
> 
> Sorry for not giving you a more complete commit message.
> 
> The reason for this change is to improve interrupt latency. This
> 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.
> 
> Would you like me to resend a V2?

No, I'll just put the above in.

Thanks.
diff mbox

Patch

--- 0011/drivers/input/keyboard/sh_keysc.c
+++ work/drivers/input/keyboard/sh_keysc.c	2011-04-21 19:42:33.000000000 +0900
@@ -231,7 +231,8 @@  static int __devinit sh_keysc_probe(stru
 	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;