On Fri, May 25, 2018 at 05:55:35PM +0800, bingbu....@intel.com 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.ai...@linux.intel.com

Reply via email to