Hi Matt, On 8/11/19 9:10 AM, Matt Ranostay wrote: > Add current subpage data via the status register to the video > frame in the last word of data, which seems to be unused > undocumented reserved data. I don't really understand from this description what is going on here. mlx90640_xfer() reads the buffer data from the i2c device, but that data is split over two different addresses? Or does 0x8000 contain something else with a different meaning compared to what is read from 0x400? > > Signed-off-by: Matt Ranostay <matt.ranostay@xxxxxxxxxxxx> > --- > drivers/media/i2c/video-i2c.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video-i2c.c > index 078141712c88..8bc7b228ba40 100644 > --- a/drivers/media/i2c/video-i2c.c > +++ b/drivers/media/i2c/video-i2c.c > @@ -168,8 +168,16 @@ static int amg88xx_xfer(struct video_i2c_data *data, char *buf) > > static int mlx90640_xfer(struct video_i2c_data *data, char *buf) > { > - return regmap_bulk_read(data->regmap, 0x400, buf, > - data->chip->buffer_size); > + int ret = regmap_bulk_read(data->regmap, 0x400, buf, > + data->chip->buffer_size); Shouldn't this be data->chip->buffer_size - size, since the last 'size' bytes will be overwritten anyway? > + int size = data->chip->bpp / 8; > + > + if (ret) > + return ret; > + > + /* read status register, which contains subpage that is read */ > + return regmap_bulk_read(data->regmap, 0x8000, > + &buf[data->chip->buffer_size - size], size); > } > > static int amg88xx_setup(struct video_i2c_data *data) > Regards, Hans