Thread (29 messages) 29 messages, 4 authors, 2022-09-14

Re: [PATCH v2 07/13] i2c: acpi: Use ACPI wake capability bit to set wake_irq

From: Raul Rangel <hidden>
Date: 2022-09-13 19:01:51
Also in: linux-acpi, linux-i2c, lkml

On Tue, Sep 13, 2022 at 12:33 PM Andy Shevchenko
[off-list ref] wrote:
On Tue, Sep 13, 2022 at 12:07:53PM -0600, Raul Rangel wrote:
quoted
On Tue, Sep 13, 2022 at 11:26 AM Andy Shevchenko
[off-list ref] wrote:
quoted
On Mon, Sep 12, 2022 at 04:13:11PM -0600, Raul E Rangel wrote:
quoted
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.
quoted
quoted
+                     if (irq > 0 && acpi_wake_capable)
+                             client->flags |= I2C_CLIENT_WAKE;
Why do we need a parameter and can't simply set this flag inside the callee?
Are you suggesting `i2c_acpi_get_irq` modify the `client->flags`? IMO
that's a little surprising since the I wouldn't expect a `get`
function to modify it's parameters. I'm fine implementing it if others
agree though.
This is similar to what of_i2c_get_board_info() does, no?
Note: _get_ there.
`*info` is an out parameter in that case. Ideally I would have
`i2c_acpi_get_irq`, `acpi_dev_gpio_irq_get_wake`,
`platform_get_irq_optional`, and `i2c_dev_irq_from_resources` all
return a `struct irq_info {int irq; bool wake_capable;}`. This would
be a larger change though.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help