i2c_smbus_read_byte () devuelve un valor negativo cuando hay un error en la lectura de datos. Pero, ¿y si devuelve 0?
A continuación se muestra el código del controlador adt7316-i2c
static int adt7316_i2c_read(void *client, u8 reg, u8 *data)
{
struct i2c_client *cl = client;
int ret;
ret = i2c_smbus_write_byte(cl, reg);
if (ret < 0) {
dev_err(&cl->dev, "I2C fail to select reg\n");
return ret;
}
ret = i2c_smbus_read_byte(client);
if (ret < 0) {
dev_err(&cl->dev, "I2C read error\n");
return ret;
}
*data = ret;
return 0;
}
Incluso si i2c_smbus_read_byte () devuelve 0 aquí, entonces el controlador será exitoso sonda. Por lo tanto, mi principal preocupación es saber si la retención de 0 de i2c_smbus_read_byte () es un caso válido o no para que un controlador la pruebe.
No estoy seguro, pero tal vez significa que no hay ningún error y tampoco se han leído datos. Si este es el caso, ¿en qué situación ocurre esto?