[PATCH 10/21] media: atmel: atmel-isc-base: report frame sizes as full supported range

Jacopo Mondi jacopo at jmondi.org
Fri Nov 5 02:52:54 PDT 2021


Hi Eugen

On Fri, Oct 22, 2021 at 10:52:36AM +0300, Eugen Hristev wrote:
> The ISC supports a full broad range of frame sizes.
> Until now, the subdevice was queried for possible frame sizes and these
> were reported to the user space.
> However, the ISC should not care about which frame sizes the subdev supports,
> as long as this frame size is supported.
> Thus, report a continuous range from smallest frame size up to the max
> resolution.
>
> Signed-off-by: Eugen Hristev <eugen.hristev at microchip.com>

Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>

Thanks
   j

> ---
>  drivers/media/platform/atmel/atmel-isc-base.c | 22 +++++++++----------
>  1 file changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/media/platform/atmel/atmel-isc-base.c b/drivers/media/platform/atmel/atmel-isc-base.c
> index 8537ad73d160..2dd2511c7be1 100644
> --- a/drivers/media/platform/atmel/atmel-isc-base.c
> +++ b/drivers/media/platform/atmel/atmel-isc-base.c
> @@ -1077,14 +1077,12 @@ static int isc_enum_framesizes(struct file *file, void *fh,
>  			       struct v4l2_frmsizeenum *fsize)
>  {
>  	struct isc_device *isc = video_drvdata(file);
> -	struct v4l2_subdev_frame_size_enum fse = {
> -		.code = isc->config.sd_format->mbus_code,
> -		.index = fsize->index,
> -		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
> -	};
>  	int ret = -EINVAL;
>  	int i;
>
> +	if (fsize->index)
> +		return -EINVAL;
> +
>  	for (i = 0; i < isc->num_user_formats; i++)
>  		if (isc->user_formats[i]->fourcc == fsize->pixel_format)
>  			ret = 0;
> @@ -1096,14 +1094,14 @@ static int isc_enum_framesizes(struct file *file, void *fh,
>  	if (ret)
>  		return ret;
>
> -	ret = v4l2_subdev_call(isc->current_subdev->sd, pad, enum_frame_size,
> -			       NULL, &fse);
> -	if (ret)
> -		return ret;
> +	fsize->type = V4L2_FRMSIZE_TYPE_CONTINUOUS;
>
> -	fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
> -	fsize->discrete.width = fse.max_width;
> -	fsize->discrete.height = fse.max_height;
> +	fsize->stepwise.min_width = 16;
> +	fsize->stepwise.max_width = isc->max_width;
> +	fsize->stepwise.min_height = 16;
> +	fsize->stepwise.max_height = isc->max_height;
> +	fsize->stepwise.step_width = 1;
> +	fsize->stepwise.step_height = 1;
>
>  	return 0;
>  }
> --
> 2.25.1
>



More information about the linux-arm-kernel mailing list