linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] Input: atmel_mxt_ts - Get IRQ edge/level flags on DT booting
@ 2014-08-07  0:48 Javier Martinez Canillas
  2014-08-07  0:48 ` [PATCH 2/2] Input: atmel_mxt_ts - Add keycodes array example Javier Martinez Canillas
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Javier Martinez Canillas @ 2014-08-07  0:48 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Nick Dyer, Stephen Warren, Yufeng Shen, Benson Leung,
	Doug Anderson, Olof Johansson, linux-input, devicetree,
	linux-samsung-soc, linux-kernel, Javier Martinez Canillas

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@collabora.co.uk>
---
 drivers/input/touchscreen/atmel_mxt_ts.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 03b8571..0fb56c9 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>
@@ -2130,6 +2131,7 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	struct mxt_data *data;
 	const struct mxt_platform_data *pdata;
 	int error;
+	unsigned long irqflags;
 
 	pdata = dev_get_platdata(&client->dev);
 	if (!pdata) {
@@ -2156,8 +2158,13 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	init_completion(&data->reset_completion);
 	init_completion(&data->crc_completion);
 
+	if (client->dev.of_node)
+		irqflags = irq_get_trigger_type(client->irq);
+	else
+		irqflags = pdata->irqflags;
+
 	error = request_threaded_irq(client->irq, NULL, mxt_interrupt,
-				     pdata->irqflags | IRQF_ONESHOT,
+				     irqflags | IRQF_ONESHOT,
 				     client->name, data);
 	if (error) {
 		dev_err(&client->dev, "Failed to register interrupt\n");
-- 
2.0.0.rc2

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2014-09-11 17:33 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-07  0:48 [PATCH 1/2] Input: atmel_mxt_ts - Get IRQ edge/level flags on DT booting Javier Martinez Canillas
2014-08-07  0:48 ` [PATCH 2/2] Input: atmel_mxt_ts - Add keycodes array example Javier Martinez Canillas
2014-08-07 12:38   ` Nick Dyer
2014-08-08 14:52     ` Javier Martinez Canillas
2014-08-15 12:01       ` Javier Martinez Canillas
2014-08-15 16:08         ` Nick Dyer
2014-08-15 16:13           ` Stephen Warren
2014-09-11 14:52             ` [PATCH] Input: atmel_mxt_ts - fix merge in DT documentation Nick Dyer
2014-09-11 17:32               ` Dmitry Torokhov
2014-08-18 13:20           ` [PATCH 2/2] Input: atmel_mxt_ts - Add keycodes array example Javier Martinez Canillas
2014-08-07  1:14 ` [PATCH 1/2] Input: atmel_mxt_ts - Get IRQ edge/level flags on DT booting Tomasz Figa
2014-08-07  1:47   ` Javier Martinez Canillas
2014-08-07  6:09     ` Dmitry Torokhov
2014-08-07  7:49       ` Javier Martinez Canillas
2014-08-07 16:47         ` Dmitry Torokhov
2014-08-08 13:24           ` Javier Martinez Canillas
2014-08-08 16:25             ` Tomasz Figa
2014-08-07 12:20 ` Nick Dyer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).