Commit f0bef75c authored by Dmitry Torokhov's avatar Dmitry Torokhov

Input: edt-ft5x06 - do not hardcode interrupt trigger type

Instead of hardcoding IRQ trigger type to IRQF_TRIGGER_FALLING, let's
respect settings specified in device tree. To be compatible with older
DTSes, if trigger type is not set up in DTS we'll set it to default
(falling edge).
Tested-by: default avatarFranklin S Cooper Jr <fcooper@ti.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 2e23b7a9
...@@ -49,7 +49,7 @@ Example: ...@@ -49,7 +49,7 @@ Example:
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&edt_ft5x06_pins>; pinctrl-0 = <&edt_ft5x06_pins>;
interrupt-parent = <&gpio2>; interrupt-parent = <&gpio2>;
interrupts = <5 0>; interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>; wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
}; };
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/ratelimit.h> #include <linux/ratelimit.h>
#include <linux/irq.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/i2c.h> #include <linux/i2c.h>
...@@ -874,6 +875,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client, ...@@ -874,6 +875,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
{ {
struct edt_ft5x06_ts_data *tsdata; struct edt_ft5x06_ts_data *tsdata;
struct input_dev *input; struct input_dev *input;
unsigned long irq_flags;
int error; int error;
char fw_version[EDT_NAME_LEN]; char fw_version[EDT_NAME_LEN];
...@@ -959,9 +961,13 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client, ...@@ -959,9 +961,13 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
input_set_drvdata(input, tsdata); input_set_drvdata(input, tsdata);
i2c_set_clientdata(client, tsdata); i2c_set_clientdata(client, tsdata);
error = devm_request_threaded_irq(&client->dev, client->irq, NULL, irq_flags = irq_get_trigger_type(client->irq);
edt_ft5x06_ts_isr, if (irq_flags == IRQF_TRIGGER_NONE)
IRQF_TRIGGER_FALLING | IRQF_ONESHOT, irq_flags = IRQF_TRIGGER_FALLING;
irq_flags |= IRQF_ONESHOT;
error = devm_request_threaded_irq(&client->dev, client->irq,
NULL, edt_ft5x06_ts_isr, irq_flags,
client->name, tsdata); client->name, tsdata);
if (error) { if (error) {
dev_err(&client->dev, "Unable to request touchscreen IRQ.\n"); dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment