On Fri, May 25, 2018 at 05:55:35PM +0800, bingbu.cao@xxxxxxxxx wrote: > +static int ak7375_i2c_write(struct ak7375_device *ak7375, > + u8 addr, u16 data, int size) > +{ > + struct i2c_client *client = v4l2_get_subdevdata(&ak7375->sd); > + int ret; > + u8 buf[3]; > + > + if (size != 1 && size != 2) > + return -EINVAL; > + buf[0] = addr; > + buf[2] = data & 0xff; > + if (size == 2) > + buf[1] = data >> 8; > + ret = i2c_master_send(client, (const char *)buf, size + 1); I don't have a data datasheet for this thing, but it looks like buf[1] will be undefined for writes the size of which is 1. And this what appears to be written to the device as well... > + if (ret < 0) > + return ret; > + if (ret != size + 1) > + return -EIO; > + return 0; > +} -- Sakari Ailus sakari.ailus@xxxxxxxxxxxxxxx