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

From: Jacopo Mondi
Date: Fri Nov 05 2021 - 05:52:13 EST


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@xxxxxxxxxxxxx>

Reviewed-by: Jacopo Mondi <jacopo@xxxxxxxxxx>

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
>