Commit 037e291c authored by Jean Delvare's avatar Jean Delvare Committed by Linus Torvalds

rtc-pcf8583: Don't abuse I2C_M_NOSTART

The rtc-pcf8583 driver is using the I2C_M_NOSTART flag but shouldn't.  This
flag is only meant for broken chips and the PCF8583 RTC chip is not one of
these.
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarAlessandro Zummo <a.zummo@towertech.it>
Cc: David Brownell <david-b@pacbell.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 09b6bdb3
......@@ -163,27 +163,17 @@ static int pcf8583_read_mem(struct i2c_client *client, struct rtc_mem *mem)
static int pcf8583_write_mem(struct i2c_client *client, struct rtc_mem *mem)
{
unsigned char addr[1];
struct i2c_msg msgs[2] = {
{
.addr = client->addr,
.flags = 0,
.len = 1,
.buf = addr,
}, {
.addr = client->addr,
.flags = I2C_M_NOSTART,
.len = mem->nr,
.buf = mem->data,
}
};
unsigned char buf[9];
int ret;
if (mem->loc < 8)
if (mem->loc < 8 || mem->nr > 8)
return -EINVAL;
addr[0] = mem->loc;
buf[0] = mem->loc;
memcpy(buf + 1, mem->data, mem->nr);
return i2c_transfer(client->adapter, msgs, 2) == 2 ? 0 : -EIO;
ret = i2c_master_send(client, buf, mem->nr + 1);
return ret == mem->nr + 1 ? 0 : -EIO;
}
static int pcf8583_rtc_read_time(struct device *dev, struct rtc_time *tm)
......
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