Re: [PATCH v2 1/1] Input: atmel_mxt_ts - Get IRQ edge/level flags on DT booting

From: Nick Dyer
Date: Fri Aug 08 2014 - 10:07:44 EST


On 07/08/14 08:44, Javier Martinez Canillas wrote:
> The Atmel maXTouch driver assumed that the IRQ type flags will
> always be passed using platform data but this is not true when
> booting using Device Trees. In these setups the interrupt type
> was ignored by the driver when requesting an IRQ.
>
> This means that it will fail if a machine specified other type
> than IRQ_TYPE_NONE. The right approach is to get the IRQ flags
> that was parsed by OF from the "interrupt" Device Tree propery.
>
> Signed-off-by: Javier Martinez Canillas <javier.martinez@xxxxxxxxxxxxxxx>

I'm happy for this to go in if Dmitry will accept it. It does seem to be a
quirk of some platforms that it is necessary, but it's only one line.

Thanks for spending so much time debugging this.

Signed-off-by: Nick Dyer <nick.dyer@xxxxxxxxxxx>

> ---
>
> This patch was first sent as a part of a two part series along
> with [PATCH 2/2] Input: atmel_mxt_ts - Add keycodes array example.
>
> But there are no dependencies between these two patches so there
> is no need to resend that one with no changes for v2.
>
> Changes since v1:
> - Assign flags to pdata->irqflags in mxt_parse_dt() instead of probe().
> Suggested by Tomasz Figa.
>
> drivers/input/touchscreen/atmel_mxt_ts.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
> index 03b8571..5c8cbd3 100644
> --- a/drivers/input/touchscreen/atmel_mxt_ts.c
> +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
> @@ -22,6 +22,7 @@
> #include <linux/i2c.h>
> #include <linux/i2c/atmel_mxt_ts.h>
> #include <linux/input/mt.h>
> +#include <linux/irq.h>
> #include <linux/interrupt.h>
> #include <linux/of.h>
> #include <linux/slab.h>
> @@ -2093,6 +2094,8 @@ static struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client)
> if (!pdata)
> return ERR_PTR(-ENOMEM);
>
> + pdata->irqflags = irq_get_trigger_type(client->irq);
> +
> if (of_find_property(client->dev.of_node, "linux,gpio-keymap",
> &proplen)) {
> pdata->t19_num_keys = proplen / sizeof(u32);
>
--
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/