From: Zhou weixin Date: Wed, 28 Dec 2016 06:28:54 +0000 (+0800) Subject: HID: i2c-hid: do not reset hid if device support wakeup when resume X-Git-Tag: firefly_0821_release~961 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=73475ee2024394acc2c1cd71c5f556f0ad018769;p=firefly-linux-kernel-4.4.55.git 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 --- 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);