Re: [PATCH] media: video-i2c: add mlx90640 subpage data to output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux