This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: atomisp: Make atomisp_init_sensor() check if the sensor 
supports binning
Author:  Hans de Goede <[email protected]>
Date:    Mon May 29 11:37:37 2023 +0100

Make atomisp_init_sensor() check if the sensor supports binning.

This is a preparation patch for using the selection / crop support
to determine the padding values to use with a specific sensor.

Link: https://lore.kernel.org/r/[email protected]

Signed-off-by: Hans de Goede <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 .../staging/media/atomisp/pci/atomisp_internal.h   |  1 +
 drivers/staging/media/atomisp/pci/atomisp_v4l2.c   | 30 +++++++++++++++++++---
 2 files changed, 28 insertions(+), 3 deletions(-)

---

diff --git a/drivers/staging/media/atomisp/pci/atomisp_internal.h 
b/drivers/staging/media/atomisp/pci/atomisp_internal.h
index 9fded17a2c71..f7b4bee9574b 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_internal.h
+++ b/drivers/staging/media/atomisp/pci/atomisp_internal.h
@@ -126,6 +126,7 @@ struct atomisp_input_subdev {
        unsigned int type;
        enum atomisp_camera_port port;
        u32 code; /* MEDIA_BUS_FMT_* */
+       bool binning_support;
        bool crop_support;
        struct v4l2_subdev *camera;
        /* Sensor rects for sensors which support crop */
diff --git a/drivers/staging/media/atomisp/pci/atomisp_v4l2.c 
b/drivers/staging/media/atomisp/pci/atomisp_v4l2.c
index 3a2e15605919..c43b916a006e 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_v4l2.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_v4l2.c
@@ -934,11 +934,12 @@ v4l2_device_failed:
 static void atomisp_init_sensor(struct atomisp_input_subdev *input)
 {
        struct v4l2_subdev_mbus_code_enum mbus_code_enum = { };
+       struct v4l2_subdev_frame_size_enum fse = { };
        struct v4l2_subdev_state sd_state = {
                .pads = &input->pad_cfg,
        };
        struct v4l2_subdev_selection sel = { };
-       int err;
+       int i, err;
 
        mbus_code_enum.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        err = v4l2_subdev_call(input->camera, pad, enum_mbus_code, NULL, 
&mbus_code_enum);
@@ -961,6 +962,28 @@ static void atomisp_init_sensor(struct 
atomisp_input_subdev *input)
 
        input->active_rect = sel.r;
 
+       /*
+        * Check for a framesize with half active_rect width and height,
+        * if found assume the sensor supports binning.
+        * Do this before changing the crop-rect since that may influence
+        * enum_frame_size results.
+        */
+       for (i = 0; ; i++) {
+               fse.index = i;
+               fse.code = input->code;
+               fse.which = V4L2_SUBDEV_FORMAT_ACTIVE;
+
+               err = v4l2_subdev_call(input->camera, pad, enum_frame_size, 
NULL, &fse);
+               if (err)
+                       break;
+
+               if (fse.min_width <= (input->active_rect.width / 2) &&
+                   fse.min_height <= (input->active_rect.height / 2)) {
+                       input->binning_support = true;
+                       break;
+               }
+       }
+
        /*
         * The ISP also wants the non-active pixels at the border of the sensor
         * for padding, set the crop rect to cover the entire sensor instead
@@ -983,9 +1006,10 @@ static void atomisp_init_sensor(struct 
atomisp_input_subdev *input)
        if (err)
                return;
 
-       dev_info(input->camera->dev, "Supports crop native %dx%d active 
%dx%d\n",
+       dev_info(input->camera->dev, "Supports crop native %dx%d active %dx%d 
binning %d\n",
                 input->native_rect.width, input->native_rect.height,
-                input->active_rect.width, input->active_rect.height);
+                input->active_rect.width, input->active_rect.height,
+                input->binning_support);
 
        input->crop_support = true;
 }

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to