media: atomisp: Remove custom V4L2_CID_FMT_AUTO control
authorHans de Goede <hdegoede@redhat.com>
Sun, 5 Mar 2023 17:57:45 +0000 (17:57 +0000)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sat, 15 Apr 2023 09:39:14 +0000 (10:39 +0100)
The custom V4L2_CID_FMT_AUTO control, which defaults to true
controls whether the atomisp driver will automatically configure
the sensor and ISP settings to match.

This is necessary to make normal v4l2 apps to work. We do eventually
want to add libcamera support, but even then moving this to userspace
does not give any added value, while breaking classic v4l2 apps.

Moreover we really don't know all the exact pipeline constraints,
so moving this to userspace/libcamera will be tricky thus it is best
to keep the current in kernel code for this and make the kernel
unconditionally do this.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/atomisp/include/linux/atomisp.h
drivers/staging/media/atomisp/pci/atomisp_cmd.c
drivers/staging/media/atomisp/pci/atomisp_fops.c
drivers/staging/media/atomisp/pci/atomisp_subdev.c
drivers/staging/media/atomisp/pci/atomisp_subdev.h

index b3cceea570cab4b670b983e7a6e9f0c99d0f562b..c7ec56a1c06404a0981c9f56f0cede08c7797fea 100644 (file)
@@ -1056,8 +1056,6 @@ struct atomisp_sensor_ae_bracketing_lut {
 #define V4L2_2A_STATUS_AE_READY            BIT(0)
 #define V4L2_2A_STATUS_AWB_READY           BIT(1)
 
-#define V4L2_CID_FMT_AUTO                      (V4L2_CID_CAMERA_LASTP1 + 19)
-
 #define V4L2_CID_RUN_MODE                      (V4L2_CID_CAMERA_LASTP1 + 20)
 #define ATOMISP_RUN_MODE_VIDEO                 1
 #define ATOMISP_RUN_MODE_STILL_CAPTURE         2
index 9cb3c0948914e4ba843acb14e23d4e821e3fce6d..70790eb55d63b7c6ab3c89a42dd7a38a8354774b 100644 (file)
@@ -4280,8 +4280,7 @@ static int atomisp_set_fmt_to_isp(struct video_device *vdev,
         * Configure viewfinder also when vfpp is disabled: the
         * CSS still requires viewfinder configuration.
         */
-       if (asd->fmt_auto->val ||
-           asd->vfpp->val != ATOMISP_VFPP_ENABLE) {
+       {
                struct v4l2_rect vf_size = {0};
                struct v4l2_mbus_framefmt vf_ffmt = {0};
 
@@ -4630,10 +4629,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
        snr_fmt = f->fmt.pix;
        backup_fmt = snr_fmt;
 
-       /* Pipeline configuration done through subdevs. Bail out now. */
-       if (!asd->fmt_auto->val)
-               goto set_fmt_to_isp;
-
        /* get sensor resolution and format */
        ret = atomisp_try_fmt(vdev, &snr_fmt, &res_overflow);
        if (ret) {
@@ -4794,7 +4789,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
                                             &main_compose);
        }
 
-set_fmt_to_isp:
        ret = atomisp_set_fmt_to_isp(vdev, &output_info, &f->fmt.pix, source_pad);
        if (ret) {
                dev_warn(isp->dev, "Can't set format on ISP. Error %d\n", ret);
index 7f757f510190fa532f360eece8967144e44bab50..e220f500aff48bac6b76e8b60264da1b5ab312ce 100644 (file)
@@ -711,7 +711,7 @@ static int atomisp_release(struct file *file)
         * The sink pad setting can only be cleared when all device nodes
         * get released.
         */
-       if (asd->fmt_auto->val) {
+       {
                struct v4l2_mbus_framefmt isp_sink_fmt = { 0 };
 
                atomisp_subdev_set_ffmt(&asd->subdev, fh.state,
index 37199188307672bb540d9a64d516087ccd9ca700..011e67ccdbbaf771792f2707558d342986a181ff 100644 (file)
@@ -754,17 +754,6 @@ static const struct v4l2_ctrl_ops ctrl_ops = {
        .s_ctrl = &s_ctrl,
 };
 
-static const struct v4l2_ctrl_config ctrl_fmt_auto = {
-       .ops = &ctrl_ops,
-       .id = V4L2_CID_FMT_AUTO,
-       .name = "Automatic format guessing",
-       .type = V4L2_CTRL_TYPE_BOOLEAN,
-       .min = 0,
-       .max = 1,
-       .step = 1,
-       .def = 1,
-};
-
 static const char *const ctrl_run_mode_menu[] = {
        NULL,
        "Video",
@@ -1000,8 +989,6 @@ static int isp_subdev_init_entities(struct atomisp_sub_device *asd)
        if (ret)
                return ret;
 
-       asd->fmt_auto = v4l2_ctrl_new_custom(&asd->ctrl_handler,
-                                            &ctrl_fmt_auto, NULL);
        asd->run_mode = v4l2_ctrl_new_custom(&asd->ctrl_handler,
                                             &ctrl_run_mode, NULL);
        asd->vfpp = v4l2_ctrl_new_custom(&asd->ctrl_handler,
index bcb0fe8d05387f45b9ed450d593a3f64c020e83e..117803f3cbd10bcb54b8650ef52e9b88ecfed3fe 100644 (file)
@@ -259,7 +259,6 @@ struct atomisp_sub_device {
        /* struct isp_subdev_params params; */
        struct atomisp_device *isp;
        struct v4l2_ctrl_handler ctrl_handler;
-       struct v4l2_ctrl *fmt_auto;
        struct v4l2_ctrl *run_mode;
        struct v4l2_ctrl *vfpp;
        struct v4l2_ctrl *continuous_raw_buffer_size;