diff mbox series

[v6,8/8] i2c: i2c-smbus: fwnode_irq_get_byname() return value fix

Message ID 1c77cca2bb4a61133ebfc6833516981c98fb48b4.1685082026.git.mazziesaccount@gmail.com
State Superseded
Headers show
Series fix fwnode_irq_get[_byname()] returnvalue | expand

Commit Message

Matti Vaittinen May 26, 2023, 6:39 a.m. UTC
The fwnode_irq_get_byname() was changed to not return 0 upon failure so
return value check can be adjusted to reflect the change.

Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>

---
Revision history:
v5 =>:
 - No changes
v4 => v5:
 - Added back after this was accidentally dropped at v4.

Depends on the mentioned return value change which is in patch 1/2. The
return value change does also cause a functional change here. Eg. when
IRQ mapping fails, the fwnode_irq_get_byname() no longer returns zero.
This will cause also the probe here to return nonzero failure. I guess
this is desired behaviour - but I would appreciate any confirmation.

Please, see also previous discussion here:
https://lore.kernel.org/all/fbd52f5f5253b382b8d7b3e8046134de29f965b8.1666710197.git.mazziesaccount@gmail.com/

Another suggestion has been to drop the check altogether. I am slightly
reluctant on doing that unless it gets confirmed that is the "right
thing to do".
---
 drivers/i2c/i2c-smbus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jonathan Cameron May 28, 2023, 5:09 p.m. UTC | #1
On Fri, 26 May 2023 09:39:37 +0300
Matti Vaittinen <mazziesaccount@gmail.com> wrote:

> The fwnode_irq_get_byname() was changed to not return 0 upon failure so
> return value check can be adjusted to reflect the change.
> 
> Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
> 

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Comments follow though...
> ---
> Revision history:
> v5 =>:
>  - No changes
> v4 => v5:
>  - Added back after this was accidentally dropped at v4.
> 
> Depends on the mentioned return value change which is in patch 1/2. The

1/8?  Or just use 1/N and you never have to update it.

> return value change does also cause a functional change here. Eg. when
> IRQ mapping fails, the fwnode_irq_get_byname() no longer returns zero.
> This will cause also the probe here to return nonzero failure. I guess
> this is desired behaviour - but I would appreciate any confirmation.
> 
> Please, see also previous discussion here:
> https://lore.kernel.org/all/fbd52f5f5253b382b8d7b3e8046134de29f965b8.1666710197.git.mazziesaccount@gmail.com/
> 
> Another suggestion has been to drop the check altogether. I am slightly
> reluctant on doing that unless it gets confirmed that is the "right
> thing to do".

I'd be more inclined to also fail in the setup->irq < 0 path and drop the later check
on basis I can't see the driver doing anything useful wtihout an interrupt.

> ---
>  drivers/i2c/i2c-smbus.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/i2c-smbus.c b/drivers/i2c/i2c-smbus.c
> index 138c3f5e0093..893fe7cd3e41 100644
> --- a/drivers/i2c/i2c-smbus.c
> +++ b/drivers/i2c/i2c-smbus.c
> @@ -129,7 +129,7 @@ static int smbalert_probe(struct i2c_client *ara)
>  	} else {
>  		irq = fwnode_irq_get_byname(dev_fwnode(adapter->dev.parent),
>  					    "smbus_alert");
> -		if (irq <= 0)
> +		if (irq < 0)
>  			return irq;
>  	}
>
diff mbox series

Patch

diff --git a/drivers/i2c/i2c-smbus.c b/drivers/i2c/i2c-smbus.c
index 138c3f5e0093..893fe7cd3e41 100644
--- a/drivers/i2c/i2c-smbus.c
+++ b/drivers/i2c/i2c-smbus.c
@@ -129,7 +129,7 @@  static int smbalert_probe(struct i2c_client *ara)
 	} else {
 		irq = fwnode_irq_get_byname(dev_fwnode(adapter->dev.parent),
 					    "smbus_alert");
-		if (irq <= 0)
+		if (irq < 0)
 			return irq;
 	}