58 lines
1.9 KiB
Diff
58 lines
1.9 KiB
Diff
From a81a81f59a5ba85154a7150149c53449089b327b Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
|
|
Date: Mon, 18 Oct 2021 03:56:14 +0200
|
|
Subject: [PATCH 305/391] input: touchscreen: goodix: Respect IRQ flags from DT
|
|
when asked to
|
|
|
|
Sometimes the IRQ flags determined from toucschreen config don't
|
|
work well.
|
|
|
|
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
|
---
|
|
drivers/input/touchscreen/goodix.c | 7 ++++++-
|
|
drivers/input/touchscreen/goodix.h | 1 +
|
|
2 files changed, 7 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
|
|
index c6eef0180..57f2e4ca9 100644
|
|
--- a/drivers/input/touchscreen/goodix.c
|
|
+++ b/drivers/input/touchscreen/goodix.c
|
|
@@ -513,9 +513,13 @@ static void goodix_free_irq(struct goodix_ts_data *ts)
|
|
|
|
static int goodix_request_irq(struct goodix_ts_data *ts)
|
|
{
|
|
+ unsigned long irq_flags = ts->irq_flags;
|
|
+ if (ts->use_dt_irqflags)
|
|
+ irq_flags = IRQF_ONESHOT;
|
|
+
|
|
return devm_request_threaded_irq(&ts->client->dev, ts->client->irq,
|
|
NULL, goodix_ts_irq_handler,
|
|
- ts->irq_flags, ts->client->name, ts);
|
|
+ irq_flags, ts->client->name, ts);
|
|
}
|
|
|
|
static int goodix_check_cfg_8(struct goodix_ts_data *ts, const u8 *cfg, int len)
|
|
@@ -1315,6 +1319,7 @@ static int goodix_ts_probe(struct i2c_client *client)
|
|
if (!ts)
|
|
return -ENOMEM;
|
|
|
|
+ ts->use_dt_irqflags = of_property_read_bool(np, "use-dt-irq-flags");
|
|
ts->client = client;
|
|
i2c_set_clientdata(client, ts);
|
|
init_completion(&ts->firmware_loading_complete);
|
|
diff --git a/drivers/input/touchscreen/goodix.h b/drivers/input/touchscreen/goodix.h
|
|
index db9f03149..62999908c 100644
|
|
--- a/drivers/input/touchscreen/goodix.h
|
|
+++ b/drivers/input/touchscreen/goodix.h
|
|
@@ -81,6 +81,7 @@ struct goodix_ts_data {
|
|
const char *firmware_name;
|
|
struct touchscreen_properties prop;
|
|
unsigned int max_touch_num;
|
|
+ bool use_dt_irqflags;
|
|
unsigned int int_trigger_type;
|
|
struct regulator *avdd28;
|
|
struct regulator *vddio;
|
|
--
|
|
2.35.3
|
|
|