Re: [PATCH] input: eglx_ts, remove irq trigger flags

From: Markus Pargmann
Date: Tue Mar 24 2015 - 06:46:17 EST


On Wed, Mar 18, 2015 at 09:50:03AM -0700, Dmitry Torokhov wrote:
> On Fri, Mar 13, 2015 at 08:14:47AM +0100, Markus Pargmann wrote:
> > On Thu, Mar 12, 2015 at 09:28:13AM -0700, Dmitry Torokhov wrote:
> > > On Thu, Mar 12, 2015 at 04:37:01PM +0100, Markus Pargmann wrote:
> > > > Hi,
> > > >
> > > > On Thu, Mar 12, 2015 at 04:18:03PM +0100, Philipp Zabel wrote:
> > > > > Hi Markus,
> > > > >
> > > > > Am Donnerstag, den 12.03.2015, 15:50 +0100 schrieb Markus Pargmann:
> > > > > > The trigger settings for a given irq are parsed from DT. Defining them
> > > > > > as flag for devm_request_threaded_irq() overwrites these settings. This
> > > > > > results in wrong trigger settings for boards which have different irq
> > > > > > triggers.
> > > > > >
> > > > > > Signed-off-by: Markus Pargmann <mpa@xxxxxxxxxxxxxx>
> > > > > > ---
> > > > > > drivers/input/touchscreen/egalax_ts.c | 2 +-
> > > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > >
> > > > > > diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c
> > > > > > index 4c56299284ef..b0e6448b743c 100644
> > > > > > --- a/drivers/input/touchscreen/egalax_ts.c
> > > > > > +++ b/drivers/input/touchscreen/egalax_ts.c
> > > > > > @@ -218,7 +218,7 @@ static int egalax_ts_probe(struct i2c_client *client,
> > > > > >
> > > > > > error = devm_request_threaded_irq(&client->dev, client->irq, NULL,
> > > > > > egalax_ts_interrupt,
> > > > > > - IRQF_TRIGGER_LOW | IRQF_ONESHOT,
> > > > > > + IRQF_ONESHOT,
> > > > > > "egalax_ts", ts);
> > > > > > if (error < 0) {
> > > > > > dev_err(&client->dev, "Failed to register interrupt\n");
> > > > >
> > > > > There are three device trees which have eeti,egalax_ts nodes with
> > > > > interrupt flags 0:
> > > > >
> > > > > arch/arm/boot/dts/imx53-tx53-x13x.dts (twice),
> > > > > arch/arm/boot/dts/imx6dl-tx6u-811x.dts, and
> > > > > arch/arm/boot/dts/imx6q-tx6q-1110.dts.
> > > > >
> > > > > Will these still work after this change?
> > > >
> > > > Oh right, thanks, these should be fixed as well.
> > >
> > > If by fixing you mean changing DTS I do not think we can do that. Maybe
> > > the driver should check if there is non-empty trigger flags in the
> > > interrupt description and fall back to IRQF_TRIGGER_LOW if they are
> > > absent.
> >
> > I think this is more of a driver/dts bug. The devicetree binding
> > documentation for the egalax_ts [1] does not describe the interrupts
> > flags that should be set or that the flag should be 0. Even the example
> > shows the interrupt flags being '2'(trigger high-to-low edge). These
> > flags are described by the interrupt-controller. The generic
> > interrupt-controller bindings describe the second parameter for
> > interrupts as interrupt trigger flags [2].
> >
> > So I think having a '0' as second parameter in the 'interrupts' field is a
> > wrong representation of the actual hardware. This of course works as
> > long as the driver ignores the trigger settings from DT which is not
> > specified in the bindings.
>
> The point is that we should not break boards with existing DTS. Yes, DTS
> may be wrong, not optimal, whatever, but if it used to work we need to
> keep it working.

I don't really like this as this wrong behaviour is not defined in the
binding. However I will add a check for an empty interrupt trigger to
not break the old DTS files.

Best regards,

Markus

--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

Attachment: signature.asc
Description: Digital signature