Re: [PATCH 2/2] i2c: Clear client->irq in i2c_device_remove

From: Wolfram Sang
Date: Sun Oct 28 2018 - 18:35:58 EST


On Fri, Oct 19, 2018 at 09:59:58AM +0100, Charles Keepax wrote:
> The IRQ will be mapped in i2c_device_probe only if client->irq is zero and
> i2c_device_remove does not clear this. When rebinding an I2C device,
> whos IRQ provider has also been rebound this means that an IRQ mapping
> will never be created, causing the I2C device to fail to acquire its
> IRQ. Fix this issue by clearing client->irq in i2c_device_remove,
> forcing i2c_device_probe to lookup the mapping again.
>
> Signed-off-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>

Adding Benjamin here again. Also, should there be a Fixes: tag?

> ---
> drivers/i2c/i2c-core-base.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
> index 656f0a6fe3adf..28460f6a60cc1 100644
> --- a/drivers/i2c/i2c-core-base.c
> +++ b/drivers/i2c/i2c-core-base.c
> @@ -430,6 +430,8 @@ static int i2c_device_remove(struct device *dev)
> dev_pm_clear_wake_irq(&client->dev);
> device_init_wakeup(&client->dev, false);
>
> + client->irq = 0;
> +
> return status;
> }
>
> --
> 2.11.0
>

Attachment: signature.asc
Description: PGP signature