i2c: acpi: Use ACPI wake capability bit to set wake_irq
authorRaul E Rangel <rrangel@chromium.org>
Thu, 29 Sep 2022 16:19:11 +0000 (10:19 -0600)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 4 Oct 2022 13:41:12 +0000 (15:41 +0200)
commitb38f2d5d9615cf991fb68626e70b042cb8b6dc3e
tree6bdfc74ccd20166fee0eb92898152c5338ca943f
parent5ff811604f93bdd2650beed80b48c2ca16c6fba6
i2c: acpi: Use ACPI wake capability bit to set wake_irq

Device tree already has a mechanism to pass the wake_irq. It does this
by looking for the wakeup-source property and setting the
I2C_CLIENT_WAKE flag. This CL adds the ACPI equivalent. It uses the
ACPI interrupt wake flag to determine if the interrupt can be used to
wake the system. Previously the i2c drivers had to make assumptions and
blindly enable the wake IRQ. This can cause spurious wake events. e.g.,
If there is a device with an Active Low interrupt and the device gets
powered off while suspending, the interrupt line will go low since it's
no longer powered and wakes the system. For this reason we should
respect the board designers wishes and honor the wake bit defined on the
interrupt.

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/i2c/i2c-core-acpi.c
drivers/i2c/i2c-core-base.c
drivers/i2c/i2c-core.h