Re: [PATCH v6 11/28] media: iris: implement g_selection ioctl
From: Hans Verkuil
Date: Fri Dec 06 2024 - 04:54:58 EST
On 20/11/2024 15:46, Dikshita Agarwal wrote:
> From: Vedang Nagar <quic_vnagar@xxxxxxxxxxx>
>
> Implement g_selection ioctl in the driver with necessary hooks.
>
> Signed-off-by: Vedang Nagar <quic_vnagar@xxxxxxxxxxx>
> Signed-off-by: Dikshita Agarwal <quic_dikshita@xxxxxxxxxxx>
Reviewed-by: Hans Verkuil <hverkuil@xxxxxxxxx>
Regards,
Hans
> ---
> drivers/media/platform/qcom/iris/iris_vidc.c | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/platform/qcom/iris/iris_vidc.c
> index 6707eb9917fe..6a32fd8d6123 100644
> --- a/drivers/media/platform/qcom/iris/iris_vidc.c
> +++ b/drivers/media/platform/qcom/iris/iris_vidc.c
> @@ -259,6 +259,33 @@ static int iris_g_fmt_vid_mplane(struct file *filp, void *fh, struct v4l2_format
> return ret;
> }
>
> +static int iris_g_selection(struct file *filp, void *fh, struct v4l2_selection *s)
> +{
> + struct iris_inst *inst = iris_get_inst(filp, NULL);
> +
> + if (s->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
> + return -EINVAL;
> +
> + switch (s->target) {
> + case V4L2_SEL_TGT_CROP_BOUNDS:
> + case V4L2_SEL_TGT_CROP_DEFAULT:
> + case V4L2_SEL_TGT_CROP:
> + case V4L2_SEL_TGT_COMPOSE_BOUNDS:
> + case V4L2_SEL_TGT_COMPOSE_PADDED:
> + case V4L2_SEL_TGT_COMPOSE_DEFAULT:
> + case V4L2_SEL_TGT_COMPOSE:
> + s->r.left = inst->crop.left;
> + s->r.top = inst->crop.top;
> + s->r.width = inst->crop.width;
> + s->r.height = inst->crop.height;
> + break;
> + default:
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> static struct v4l2_file_operations iris_v4l2_file_ops = {
> .owner = THIS_MODULE,
> .open = iris_open,
> @@ -280,6 +307,7 @@ static const struct v4l2_ioctl_ops iris_v4l2_ioctl_ops = {
> .vidioc_g_fmt_vid_cap_mplane = iris_g_fmt_vid_mplane,
> .vidioc_g_fmt_vid_out_mplane = iris_g_fmt_vid_mplane,
> .vidioc_reqbufs = v4l2_m2m_ioctl_reqbufs,
> + .vidioc_g_selection = iris_g_selection,
> };
>
> void iris_init_ops(struct iris_core *core)
>