diff options
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/chips/ds1337.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/i2c/chips/ds1337.c b/drivers/i2c/chips/ds1337.c index 0967ec6d7947..c4762ac980a3 100644 --- a/drivers/i2c/chips/ds1337.c +++ b/drivers/i2c/chips/ds1337.c | |||
@@ -122,7 +122,7 @@ static int ds1337_get_datetime(struct i2c_client *client, struct rtc_time *dt) | |||
122 | __FUNCTION__, result, buf[0], buf[1], buf[2], buf[3], | 122 | __FUNCTION__, result, buf[0], buf[1], buf[2], buf[3], |
123 | buf[4], buf[5], buf[6]); | 123 | buf[4], buf[5], buf[6]); |
124 | 124 | ||
125 | if (result >= 0) { | 125 | if (result == 2) { |
126 | dt->tm_sec = BCD2BIN(buf[0]); | 126 | dt->tm_sec = BCD2BIN(buf[0]); |
127 | dt->tm_min = BCD2BIN(buf[1]); | 127 | dt->tm_min = BCD2BIN(buf[1]); |
128 | val = buf[2] & 0x3f; | 128 | val = buf[2] & 0x3f; |
@@ -140,12 +140,12 @@ static int ds1337_get_datetime(struct i2c_client *client, struct rtc_time *dt) | |||
140 | __FUNCTION__, dt->tm_sec, dt->tm_min, | 140 | __FUNCTION__, dt->tm_sec, dt->tm_min, |
141 | dt->tm_hour, dt->tm_mday, | 141 | dt->tm_hour, dt->tm_mday, |
142 | dt->tm_mon, dt->tm_year, dt->tm_wday); | 142 | dt->tm_mon, dt->tm_year, dt->tm_wday); |
143 | } else { | 143 | |
144 | dev_err(&client->dev, "error reading data! %d\n", result); | 144 | return 0; |
145 | result = -EIO; | ||
146 | } | 145 | } |
147 | 146 | ||
148 | return result; | 147 | dev_err(&client->dev, "error reading data! %d\n", result); |
148 | return -EIO; | ||
149 | } | 149 | } |
150 | 150 | ||
151 | static int ds1337_set_datetime(struct i2c_client *client, struct rtc_time *dt) | 151 | static int ds1337_set_datetime(struct i2c_client *client, struct rtc_time *dt) |
@@ -185,14 +185,11 @@ static int ds1337_set_datetime(struct i2c_client *client, struct rtc_time *dt) | |||
185 | msg[0].buf = &buf[0]; | 185 | msg[0].buf = &buf[0]; |
186 | 186 | ||
187 | result = i2c_transfer(client->adapter, msg, 1); | 187 | result = i2c_transfer(client->adapter, msg, 1); |
188 | if (result < 0) { | 188 | if (result == 1) |
189 | dev_err(&client->dev, "error writing data! %d\n", result); | 189 | return 0; |
190 | result = -EIO; | ||
191 | } else { | ||
192 | result = 0; | ||
193 | } | ||
194 | 190 | ||
195 | return result; | 191 | dev_err(&client->dev, "error writing data! %d\n", result); |
192 | return -EIO; | ||
196 | } | 193 | } |
197 | 194 | ||
198 | static int ds1337_command(struct i2c_client *client, unsigned int cmd, | 195 | static int ds1337_command(struct i2c_client *client, unsigned int cmd, |