forked from luck/tmp_suning_uos_patched
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: Nicolas Boullis <nboullis@debian.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
This commit is contained in:
parent
ef50f86e15
commit
1d87951c39
@ -275,9 +275,13 @@ static s32 ds1307_native_smbus_write_block_data(const struct i2c_client *client,
|
||||
{
|
||||
u8 suboffset = 0;
|
||||
|
||||
if (length <= I2C_SMBUS_BLOCK_MAX)
|
||||
return i2c_smbus_write_i2c_block_data(client,
|
||||
if (length <= I2C_SMBUS_BLOCK_MAX) {
|
||||
s32 retval = i2c_smbus_write_i2c_block_data(client,
|
||||
command, length, values);
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
return length;
|
||||
}
|
||||
|
||||
while (suboffset < length) {
|
||||
s32 retval = i2c_smbus_write_i2c_block_data(client,
|
||||
|
Loading…
Reference in New Issue
Block a user