lkml.org 
[lkml]   [2019]   [May]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 1/2] Input: atmel_mxt_ts - add wakeup support
Date
Add wakeup support to the maxtouch driver.
The device can wake up the system from suspend,
mark the IRQ as wakeup capable, so that device
irq is not disabled during system suspend.

Signed-off-by: Stefano Manni <stefano.manni@gmail.com>
---
drivers/input/touchscreen/atmel_mxt_ts.c | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 5c63d25ce84e..2e0abc0b665d 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -3041,6 +3041,7 @@ static const struct dmi_system_id chromebook_T9_suspend_dmi[] = {
static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
struct mxt_data *data;
+ struct device_node *node = client->dev.of_node;
int error;

/*
@@ -3125,6 +3126,12 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
goto err_free_object;
}

+ if (node) {
+ if (of_property_read_bool(node, "wakeup-source") ||
+ of_property_read_bool(node, "linux,wakeup"))
+ device_init_wakeup(&client->dev, true);
+ }
+
return 0;

err_free_object:
@@ -3156,6 +3163,9 @@ static int __maybe_unused mxt_suspend(struct device *dev)

mutex_lock(&input_dev->mutex);

+ if (device_may_wakeup(&client->dev))
+ enable_irq_wake(client->irq);
+
if (input_dev->users)
mxt_stop(data);

@@ -3175,6 +3185,9 @@ static int __maybe_unused mxt_resume(struct device *dev)

mutex_lock(&input_dev->mutex);

+ if (device_may_wakeup(&client->dev))
+ disable_irq_wake(client->irq);
+
if (input_dev->users)
mxt_start(data);

--
2.20.1
\
 
 \ /
  Last update: 2019-05-17 23:18    [W:0.057 / U:9.208 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site