RE: [RFC/PATCH 2/4] input: misc: twl4030: move torequest_threaded_irq

From: Shilimkar, Santosh
Date: Mon Dec 14 2009 - 06:31:52 EST


Felipe,
> -----Original Message-----
> From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap-owner@xxxxxxxxxxxxxxx] On Behalf Of Felipe
> Balbi
> Sent: Monday, December 14, 2009 4:01 PM
> To: linux-kernel@xxxxxxxxxxxxxxx
> Cc: Linux OMAP Mailing List; Tony Lindgren; Aaro Koskinen; David Brownell; Linux USB Mailing List;
> Anton Vorontsov; Grazvydas Ignotas; Chikkature Rajashekar, Madhusudhan; Greg Kroah-Hartman; Mark
> Brown; Samuel Ortiz; Felipe Balbi
> Subject: [RFC/PATCH 2/4] input: misc: twl4030: move to request_threaded_irq
>
> move to request_threaded_irq() on twl4030 children.
>
> Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxx>
> ---
> drivers/input/misc/twl4030-pwrbutton.c | 12 +-----------
> 1 files changed, 1 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
> index f5fc997..cd47d9e 100644
> --- a/drivers/input/misc/twl4030-pwrbutton.c
> +++ b/drivers/input/misc/twl4030-pwrbutton.c
> @@ -39,16 +39,6 @@ static irqreturn_t powerbutton_irq(int irq, void *_pwr)
> int err;
> u8 value;
>
> -#ifdef CONFIG_LOCKDEP
> - /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
> - * we don't want and can't tolerate since this is a threaded
> - * IRQ and can sleep due to the i2c reads it has to issue.
> - * Although it might be friendlier not to borrow this thread
> - * context...
> - */
> - local_irq_enable();
> -#endif
> -
> err = twl4030_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &value,
> STS_HW_CONDITIONS);
> if (!err) {
> @@ -80,7 +70,7 @@ static int __devinit twl4030_pwrbutton_probe(struct platform_device *pdev)
> pwr->phys = "twl4030_pwrbutton/input0";
> pwr->dev.parent = &pdev->dev;
>
> - err = request_irq(irq, powerbutton_irq,
> + err = request_threaded_irq(irq, NULL, powerbutton_irq,
> IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
> "twl4030_pwrbutton", pwr);
> if (err < 0) {
In whole of the series the ISR you have converted to threads using threaded_irq are very
small in size. They are like quick_change_handlers. So only advantage is the particular
interrupt is masked for bit longer than with you change.

I might be wrong here but it might introduce the spurious IRQ's because of bit of delay in the processing.What is the motive for this change ? Are we using this API as it suppose to be ?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/