To avoid kernel "Unbalanced IRQ # wake disable" WARNING, only disable
irq wake on resume if irq wake was successfully enabled on suspend.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
BUG=chrome-os-partner:7652
TEST=Using lumpy with cyapa trackpad driver configured with
.flags = I2C_CLIENT_WAKE, and power/wakeup == enabled.
Notice no "Unbalanced IRQ # wake disable" WARNING in /var/log/messages
after suspend/resume
Change-Id: I2ff559bc2b5b73a43e28923eae49932df6115d4f
Reviewed-on: https://gerrit.chromium.org/gerrit/16121
Commit-Ready: Daniel Kurtz <djkurtz@chromium.org>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Tested-by: Daniel Kurtz <djkurtz@chromium.org>
struct input_dev *input;
int irq;
u8 adapter_func;
+ bool irq_wake; /* irq wake is enabled */
bool smbus;
/* read from query data region. */
dev_err(dev, "set power mode failed, %d\n", ret);
if (device_may_wakeup(dev))
- enable_irq_wake(cyapa->irq);
+ cyapa->irq_wake = (enable_irq_wake(cyapa->irq) == 0);
disable_irq(cyapa->irq);
return 0;
struct cyapa *cyapa = dev_get_drvdata(dev);
enable_irq(cyapa->irq);
- if (device_may_wakeup(dev))
+ if (device_may_wakeup(dev) && cyapa->irq_wake)
disable_irq_wake(cyapa->irq);
cyapa_detect(cyapa);