lkml.org 
[lkml]   [2016]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] rtc: rv8803: broaden workaround
Date
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: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---
drivers/rtc/rtc-rv8803.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/rtc/rtc-rv8803.c b/drivers/rtc/rtc-rv8803.c
index 82ab41074156..533ca5bcaa96 100644
--- a/drivers/rtc/rtc-rv8803.c
+++ b/drivers/rtc/rtc-rv8803.c
@@ -68,7 +68,7 @@ static irqreturn_t rv8803_handle_irq(int irq, void *dev_id)
do {
flags = i2c_smbus_read_byte_data(client, RV8803_FLAG);
try++;
- } while ((flags == -ENXIO) && (try < 3));
+ } while (((flags == -ENXIO) || (flags == -EIO)) && (try < 4));
if (flags <= 0) {
spin_unlock(&rv8803->flags_lock);
return IRQ_NONE;
@@ -455,7 +455,7 @@ static int rv8803_probe(struct i2c_client *client,
do {
flags = i2c_smbus_read_byte_data(client, RV8803_FLAG);
try++;
- } while ((flags == -ENXIO) && (try < 3));
+ } while (((flags == -ENXIO) || (flags == -EIO)) && (try < 4));

if (flags < 0)
return flags;
@@ -496,7 +496,7 @@ static int rv8803_probe(struct i2c_client *client,
err = i2c_smbus_write_byte_data(rv8803->client, RV8803_EXT,
RV8803_EXT_WADA);
try++;
- } while ((err == -ENXIO) && (try < 3));
+ } while (((err == -ENXIO) || (flags == -EIO)) && (try < 4));
if (err)
return err;

--
2.8.1
\
 
 \ /
  Last update: 2016-06-07 21:01    [W:0.068 / U:0.484 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site