summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/keyboard/adp5589-keys.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/input/keyboard/adp5589-keys.c b/drivers/input/keyboard/adp5589-keys.c
index d76b0e4e67c4..654e0476406b 100644
--- a/drivers/input/keyboard/adp5589-keys.c
+++ b/drivers/input/keyboard/adp5589-keys.c
@@ -14,6 +14,7 @@
#include <linux/workqueue.h>
#include <linux/errno.h>
#include <linux/pm.h>
+#include <linux/pm_wakeirq.h>
#include <linux/platform_device.h>
#include <linux/input.h>
#include <linux/i2c.h>
@@ -1017,32 +1018,22 @@ static int adp5589_probe(struct i2c_client *client,
static int __maybe_unused adp5589_suspend(struct device *dev)
{
- struct adp5589_kpad *kpad = dev_get_drvdata(dev);
- struct i2c_client *client = kpad->client;
-
- if (!kpad->input)
- return 0;
-
- disable_irq(client->irq);
+ struct i2c_client *client = to_i2c_client(dev);
+ struct adp5589_kpad *kpad = i2c_get_clientdata(client);
- if (device_may_wakeup(&client->dev))
- enable_irq_wake(client->irq);
+ if (kpad->input)
+ disable_irq(client->irq);
return 0;
}
static int __maybe_unused adp5589_resume(struct device *dev)
{
- struct adp5589_kpad *kpad = dev_get_drvdata(dev);
- struct i2c_client *client = kpad->client;
-
- if (!kpad->input)
- return 0;
-
- if (device_may_wakeup(&client->dev))
- disable_irq_wake(client->irq);
+ struct i2c_client *client = to_i2c_client(dev);
+ struct adp5589_kpad *kpad = i2c_get_clientdata(client);
- enable_irq(client->irq);
+ if (kpad->input)
+ enable_irq(client->irq);
return 0;
}