From 73475ee2024394acc2c1cd71c5f556f0ad018769 Mon Sep 17 00:00:00 2001 From: Zhou weixin Date: Wed, 28 Dec 2016 14:28:54 +0800 Subject: [PATCH] HID: i2c-hid: do not reset hid if device support wakeup when resume The host will trigger the hid interrupt to after reset hid, then send wakeup key to light up screen,so any wakeupirq source will light up screen due to reset hid in resume, and hid hwreset is not necessary. Change-Id: I920239eeb4b57b0f594cc67cb8f4c1649c5125bd Signed-off-by: Zhou weixin --- drivers/hid/i2c-hid/i2c-hid.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c index 6c37c4a039f0..ba096a4d1060 100644 --- a/drivers/hid/i2c-hid/i2c-hid.c +++ b/drivers/hid/i2c-hid/i2c-hid.c @@ -462,7 +462,7 @@ static irqreturn_t i2c_hid_irq(int irq, void *dev_id) i2c_hid_get_input(ihid); - if (ihid->is_suspend == 1) + if (device_may_wakeup(&ihid->client->dev) && ihid->is_suspend == 1) rk_send_wakeup_key(); return IRQ_HANDLED; @@ -1176,9 +1176,11 @@ static int i2c_hid_resume(struct device *dev) int wake_status; enable_irq(ihid->irq); - ret = i2c_hid_hwreset(client); - if (ret) - return ret; + if (!device_may_wakeup(&client->dev)) { + ret = i2c_hid_hwreset(client); + if (ret) + return ret; + } if (device_may_wakeup(&client->dev) && ihid->irq_wake_enabled) { wake_status = disable_irq_wake(ihid->irq); -- 2.34.1