[PATCH] media: i2c: ov02e10: Add get_selection support

Marcel Berger posted 1 patch 1 month, 3 weeks ago
drivers/media/i2c/ov02e10.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
[PATCH] media: i2c: ov02e10: Add get_selection support
Posted by Marcel Berger 1 month, 3 weeks ago
Signed-off-by: Marcel Berger <marbe@gmx.de>
---
 drivers/media/i2c/ov02e10.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/media/i2c/ov02e10.c b/drivers/media/i2c/ov02e10.c
index 4a64cba..097188f 100644
--- a/drivers/media/i2c/ov02e10.c
+++ b/drivers/media/i2c/ov02e10.c
@@ -655,6 +655,30 @@ static int ov02e10_get_format(struct v4l2_subdev *sd,
 	return 0;
 }
 
+static int ov02e10_get_selection(struct v4l2_subdev *sd,
+				 struct v4l2_subdev_state *sd_state,
+				 struct v4l2_subdev_selection *sel)
+{
+	struct ov02e10 *ov02e10 = to_ov02e10(sd);
+
+	if (sel->pad != 0)
+		return -EINVAL;
+
+	switch (sel->target) {
+	case V4L2_SEL_TGT_CROP:
+	case V4L2_SEL_TGT_CROP_DEFAULT:
+	case V4L2_SEL_TGT_CROP_BOUNDS:
+	case V4L2_SEL_TGT_NATIVE_SIZE:
+		sel->r.left = 0;
+		sel->r.top = 0;
+		sel->r.width = ov02e10->cur_mode->width;
+		sel->r.height = ov02e10->cur_mode->height;
+		return 0;
+	default:
+		return -EINVAL;
+	}
+}
+
 static int ov02e10_enum_mbus_code(struct v4l2_subdev *sd,
 				  struct v4l2_subdev_state *sd_state,
 				  struct v4l2_subdev_mbus_code_enum *code)
@@ -703,6 +727,7 @@ static const struct v4l2_subdev_pad_ops ov02e10_pad_ops = {
 	.get_fmt = ov02e10_get_format,
 	.enum_mbus_code = ov02e10_enum_mbus_code,
 	.enum_frame_size = ov02e10_enum_frame_size,
+	.get_selection = ov02e10_get_selection,
 	.enable_streams = ov02e10_enable_streams,
 	.disable_streams = ov02e10_disable_streams,
 };
-- 
2.53.0
Re: [PATCH] media: i2c: ov02e10: Add get_selection support
Posted by Kieran Bingham 1 month, 2 weeks ago
Quoting Marcel Berger (2026-04-26 21:01:43)

Usually we'd try to add a bit more detail to the commit message here
please. Even if it's simple.

> Signed-off-by: Marcel Berger <marbe@gmx.de>
> ---
>  drivers/media/i2c/ov02e10.c | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/drivers/media/i2c/ov02e10.c b/drivers/media/i2c/ov02e10.c
> index 4a64cba..097188f 100644
> --- a/drivers/media/i2c/ov02e10.c
> +++ b/drivers/media/i2c/ov02e10.c
> @@ -655,6 +655,30 @@ static int ov02e10_get_format(struct v4l2_subdev *sd,
>         return 0;
>  }
>  
> +static int ov02e10_get_selection(struct v4l2_subdev *sd,
> +                                struct v4l2_subdev_state *sd_state,
> +                                struct v4l2_subdev_selection *sel)
> +{
> +       struct ov02e10 *ov02e10 = to_ov02e10(sd);
> +
> +       if (sel->pad != 0)
> +               return -EINVAL;
> +
> +       switch (sel->target) {
> +       case V4L2_SEL_TGT_CROP:
> +       case V4L2_SEL_TGT_CROP_DEFAULT:
> +       case V4L2_SEL_TGT_CROP_BOUNDS:
> +       case V4L2_SEL_TGT_NATIVE_SIZE:
> +               sel->r.left = 0;
> +               sel->r.top = 0;
> +               sel->r.width = ov02e10->cur_mode->width;
> +               sel->r.height = ov02e10->cur_mode->height;

I'm afraid this looks wrong, or perhaps insufficient ?

These should report the correct properties of the camera, so I'd expect
somewhere for this to report the full resolution of the camera active
area - not just always pass through the current active mode.

--
Kieran


> +               return 0;
> +       default:
> +               return -EINVAL;
> +       }
> +}
> +
>  static int ov02e10_enum_mbus_code(struct v4l2_subdev *sd,
>                                   struct v4l2_subdev_state *sd_state,
>                                   struct v4l2_subdev_mbus_code_enum *code)
> @@ -703,6 +727,7 @@ static const struct v4l2_subdev_pad_ops ov02e10_pad_ops = {
>         .get_fmt = ov02e10_get_format,
>         .enum_mbus_code = ov02e10_enum_mbus_code,
>         .enum_frame_size = ov02e10_enum_frame_size,
> +       .get_selection = ov02e10_get_selection,
>         .enable_streams = ov02e10_enable_streams,
>         .disable_streams = ov02e10_disable_streams,
>  };
> -- 
> 2.53.0
>