Commit cde0fe2a authored by Alexandre Belloni's avatar Alexandre Belloni

rtc: rv8803: broaden workaround

The previous workaround may still fail as there are actually 4 retries to
be done to ensure the communication succeed. Also, some I2C adapter drivers
may return -EIO instead of -ENXIO.
Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
parent d6faca40
...@@ -68,7 +68,7 @@ static irqreturn_t rv8803_handle_irq(int irq, void *dev_id) ...@@ -68,7 +68,7 @@ static irqreturn_t rv8803_handle_irq(int irq, void *dev_id)
do { do {
flags = i2c_smbus_read_byte_data(client, RV8803_FLAG); flags = i2c_smbus_read_byte_data(client, RV8803_FLAG);
try++; try++;
} while ((flags == -ENXIO) && (try < 3)); } while (((flags == -ENXIO) || (flags == -EIO)) && (try < 4));
if (flags <= 0) { if (flags <= 0) {
mutex_unlock(&rv8803->flags_lock); mutex_unlock(&rv8803->flags_lock);
return IRQ_NONE; return IRQ_NONE;
...@@ -452,7 +452,7 @@ static int rv8803_probe(struct i2c_client *client, ...@@ -452,7 +452,7 @@ static int rv8803_probe(struct i2c_client *client,
do { do {
flags = i2c_smbus_read_byte_data(client, RV8803_FLAG); flags = i2c_smbus_read_byte_data(client, RV8803_FLAG);
try++; try++;
} while ((flags == -ENXIO) && (try < 3)); } while (((flags == -ENXIO) || (flags == -EIO)) && (try < 4));
if (flags < 0) if (flags < 0)
return flags; return flags;
...@@ -493,7 +493,7 @@ static int rv8803_probe(struct i2c_client *client, ...@@ -493,7 +493,7 @@ static int rv8803_probe(struct i2c_client *client,
err = i2c_smbus_write_byte_data(rv8803->client, RV8803_EXT, err = i2c_smbus_write_byte_data(rv8803->client, RV8803_EXT,
RV8803_EXT_WADA); RV8803_EXT_WADA);
try++; try++;
} while ((err == -ENXIO) && (try < 3)); } while (((err == -ENXIO) || (flags == -EIO)) && (try < 4));
if (err) if (err)
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment