Message ID | 20230328-tsc2007-sleep-v5-1-fc55e76d0ced@skidata.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 1661f60adc3b7e6864b4cb6790d579b468bd243f |
Headers | show |
Series | [v5] Input: tsc2007 - enable cansleep pendown GPIO | expand |
On Sun, Apr 02, 2023 at 10:00:14AM +0200, Benjamin Bara wrote: > From: Benjamin Bara <benjamin.bara@skidata.com> > > When a hard IRQ is triggered, the soft IRQ, which decides if an actual > pen down happened, should always be triggered. This enables the usage of > "can_sleep" GPIO chips as "pen down" GPIO, as the value is not read > during the hard IRQ anymore. This might be the case if the GPIO chip is > an expander behind i2c. > > Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com> > Signed-off-by: Richard Leitner <richard.leitner@skidata.com> Applied, thank you.
diff --git a/drivers/input/touchscreen/tsc2007_core.c b/drivers/input/touchscreen/tsc2007_core.c index 3c793fb70a0e..21916a30fb76 100644 --- a/drivers/input/touchscreen/tsc2007_core.c +++ b/drivers/input/touchscreen/tsc2007_core.c @@ -172,19 +172,6 @@ static irqreturn_t tsc2007_soft_irq(int irq, void *handle) return IRQ_HANDLED; } -static irqreturn_t tsc2007_hard_irq(int irq, void *handle) -{ - struct tsc2007 *ts = handle; - - if (tsc2007_is_pen_down(ts)) - return IRQ_WAKE_THREAD; - - if (ts->clear_penirq) - ts->clear_penirq(); - - return IRQ_HANDLED; -} - static void tsc2007_stop(struct tsc2007 *ts) { ts->stopped = true; @@ -226,7 +213,7 @@ static int tsc2007_get_pendown_state_gpio(struct device *dev) struct i2c_client *client = to_i2c_client(dev); struct tsc2007 *ts = i2c_get_clientdata(client); - return gpiod_get_value(ts->gpiod); + return gpiod_get_value_cansleep(ts->gpiod); } static int tsc2007_probe_properties(struct device *dev, struct tsc2007 *ts) @@ -376,7 +363,7 @@ static int tsc2007_probe(struct i2c_client *client) } err = devm_request_threaded_irq(&client->dev, ts->irq, - tsc2007_hard_irq, tsc2007_soft_irq, + NULL, tsc2007_soft_irq, IRQF_ONESHOT, client->dev.driver->name, ts); if (err) {