Commit 1d87951c authored by Nicolas Boullis's avatar Nicolas Boullis Committed by Alexandre Belloni

rtc: ds1307: fix ds1307_native_smbus_read_block_data function

The i2c_smbus_read_i2c_block_data function returns 0 on success, not the
number of bytes written.

Hence, when there are 32 bytes or less to send, the
ds1307_native_smbus_write_block_data function returns 0 on success,
while it returns the number of bytes when there are more than 32.

The ds1307_write_block_data always returns the number of bytes on
success.
Signed-off-by: default avatarNicolas Boullis <nboullis@debian.org>
Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
parent ef50f86e
...@@ -275,9 +275,13 @@ static s32 ds1307_native_smbus_write_block_data(const struct i2c_client *client, ...@@ -275,9 +275,13 @@ static s32 ds1307_native_smbus_write_block_data(const struct i2c_client *client,
{ {
u8 suboffset = 0; u8 suboffset = 0;
if (length <= I2C_SMBUS_BLOCK_MAX) if (length <= I2C_SMBUS_BLOCK_MAX) {
return i2c_smbus_write_i2c_block_data(client, s32 retval = i2c_smbus_write_i2c_block_data(client,
command, length, values); command, length, values);
if (retval < 0)
return retval;
return length;
}
while (suboffset < length) { while (suboffset < length) {
s32 retval = i2c_smbus_write_i2c_block_data(client, s32 retval = i2c_smbus_write_i2c_block_data(client,
......
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