
On Thu, Mar 24, 2022 at 8:59 AM Fabio Estevam festevam@gmail.com wrote:
Hi Tim,
On Thu, Mar 24, 2022 at 12:32 PM Tim Harvey tharvey@gateworks.com wrote:
commit 7c84319af9c7 ("dm: gpio: Correct use of -ENODEV in drivers") changed the return code for an I2C NAK from -ENODEV to -EREMOTEIO.
I think we should be consistent with Linux and return -ENXIO for the NACK case: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Docu...
"ENXIO Returned by I2C adapters to indicate that the address phase of a transfer didn't get an ACK. While it might just mean an I2C device was temporarily not responding, usually it means there's nothing listening at that address."
Fabio,
I share your sentiment however if I go and change this in drivers/i2c/mxc_i2c.c (or others) how do I know I don't cause the same breakage that Simon's patch did? I can't easily tell if anyone is depending on EREMOTEIO (or ENODEV as it was) to mean NAK.
For reference there are about 48 i2c drivers in drivers/i2c and only 3 currently return -ENXIO (designware_i2c.c,i2c-microchip.c,sun8i_rsb.c)
Honestly I would love to just implement retries on NAK in mxc_i2c.c but that approach was not accepted in the Linux driver when I attempted to do it there.
Best Regards,
Tim