media: atomisp: Remove delayed_init related code
authorHans de Goede <hdegoede@redhat.com>
Tue, 21 Feb 2023 14:58:59 +0000 (14:58 +0000)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sat, 15 Apr 2023 09:21:48 +0000 (10:21 +0100)
After the continues-mode removal the delayed-work never gets queues
remove all the related code.

Link: https://lore.kernel.org/r/20230221145906.8113-4-hdegoede@redhat.com
Reviewed-by: Andy Shevchenko <andy@kernel.org>
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_cmd.h
drivers/staging/media/atomisp/pci/atomisp_fops.c
drivers/staging/media/atomisp/pci/atomisp_internal.h
drivers/staging/media/atomisp/pci/atomisp_ioctl.c
drivers/staging/media/atomisp/pci/atomisp_subdev.c
drivers/staging/media/atomisp/pci/atomisp_subdev.h
drivers/staging/media/atomisp/pci/atomisp_v4l2.c

index 290a6ed7237e53a936dfdffed2b4ab520aac22c4..b3cceea570cab4b670b983e7a6e9f0c99d0f562b 100644 (file)
@@ -1102,7 +1102,6 @@ struct atomisp_sensor_ae_bracketing_lut {
 
 #define V4L2_EVENT_ATOMISP_3A_STATS_READY   (V4L2_EVENT_PRIVATE_START + 1)
 #define V4L2_EVENT_ATOMISP_METADATA_READY   (V4L2_EVENT_PRIVATE_START + 2)
-#define V4L2_EVENT_ATOMISP_RAW_BUFFERS_ALLOC_DONE   (V4L2_EVENT_PRIVATE_START + 3)
 #define V4L2_EVENT_ATOMISP_ACC_COMPLETE     (V4L2_EVENT_PRIVATE_START + 4)
 #define V4L2_EVENT_ATOMISP_PAUSE_BUFFER            (V4L2_EVENT_PRIVATE_START + 5)
 #define V4L2_EVENT_ATOMISP_CSS_RESET       (V4L2_EVENT_PRIVATE_START + 6)
index 3f0dcbf08e2ebaed7564abf8797924ace1fdd72b..7446a711980607debe102ad06fe81edf7f1a121a 100644 (file)
@@ -1001,35 +1001,6 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
                atomisp_qbuffers_to_css(asd);
 }
 
-void atomisp_delayed_init_work(struct work_struct *work)
-{
-       struct atomisp_sub_device *asd = container_of(work,
-                                        struct atomisp_sub_device,
-                                        delayed_init_work);
-       /*
-        * to SOC camera, use yuvpp pipe and no support continuous mode.
-        */
-       if (!ATOMISP_USE_YUVPP(asd)) {
-               struct v4l2_event event = {0};
-               struct ia_css_stream *stream;
-
-               stream = asd->stream_env[ATOMISP_INPUT_STREAM_GENERAL].stream;
-
-
-               if (ia_css_alloc_continuous_frame_remain(stream))
-                       return;
-
-               ia_css_update_continuous_frames(stream);
-
-               event.type = V4L2_EVENT_ATOMISP_RAW_BUFFERS_ALLOC_DONE;
-               v4l2_event_queue(asd->subdev.devnode, &event);
-       }
-
-       /* signal streamon after delayed init is done */
-       asd->delayed_init = ATOMISP_DELAYED_INIT_DONE;
-       complete(&asd->init_done);
-}
-
 static void __atomisp_css_recover(struct atomisp_device *isp, bool isp_timeout)
 {
        struct pci_dev *pdev = to_pci_dev(isp->dev);
@@ -1054,12 +1025,6 @@ static void __atomisp_css_recover(struct atomisp_device *isp, bool isp_timeout)
                    !asd->stream_prepared)
                        continue;
 
-               if (asd->delayed_init == ATOMISP_DELAYED_INIT_QUEUED)
-                       cancel_work_sync(&asd->delayed_init_work);
-
-               complete(&asd->init_done);
-               asd->delayed_init = ATOMISP_DELAYED_INIT_NOT_QUEUED;
-
                stream_restart[asd->index] = true;
 
                spin_lock_irqsave(&isp->lock, flags);
index bea950a128a9d72bf600d35a26e83065acd7f345..d26593cc648e542cb787a6415eb0682a7dde6a7d 100644 (file)
@@ -72,7 +72,6 @@ irqreturn_t atomisp_isr_thread(int irq, void *isp_ptr);
 const struct atomisp_format_bridge *get_atomisp_format_bridge_from_mbus(
     u32 mbus_code);
 bool atomisp_is_mbuscode_raw(uint32_t code);
-void atomisp_delayed_init_work(struct work_struct *work);
 
 /* Get internal fmt according to V4L2 fmt */
 bool atomisp_is_viewfinder_support(struct atomisp_device *isp);
index 280e8057676b90fcccc6b9e0e3f691f58095dfcd..28649a52268308e556287dfc46afadeb537ad49a 100644 (file)
@@ -614,7 +614,6 @@ static void atomisp_subdev_init_struct(struct atomisp_sub_device *asd)
        /* s3a grid not enabled for any pipe */
        asd->params.s3a_enabled_pipe = IA_CSS_PIPE_ID_NUM;
 
-       asd->delayed_init = ATOMISP_DELAYED_INIT_NOT_QUEUED;
        /* Add for channel */
        asd->input_curr = 0;
 
index 90caa425489304f5fd8a5db3aa025ddc73598ef1..7f346161c4b55596588409ed9e3402fb0f364d36 100644 (file)
 #define ATOMISP_METADATA_QUEUE_DEPTH_FOR_HAL   8
 #define ATOMISP_S3A_BUF_QUEUE_DEPTH_FOR_HAL    8
 
-#define ATOMISP_DELAYED_INIT_NOT_QUEUED        0
-#define ATOMISP_DELAYED_INIT_QUEUED    1
-#define ATOMISP_DELAYED_INIT_DONE      2
-
 /*
  * Define how fast CPU should be able to serve ISP interrupts.
  * The bigger the value, the higher risk that the ISP is not
index cb6324510acabfe5878fd4149a376fc2a953d149..87e9b0b284d9cfdbf2ab5c6ef0af2fb472c6087e 100644 (file)
@@ -1309,8 +1309,6 @@ start_sensor:
                goto out_unlock;
        }
 
-       asd->delayed_init = ATOMISP_DELAYED_INIT_NOT_QUEUED;
-
 out_unlock:
        mutex_unlock(&isp->mutex);
        return ret;
@@ -1366,11 +1364,6 @@ void atomisp_stop_streaming(struct vb2_queue *vq)
        atomisp_clear_css_buffer_counters(asd);
        atomisp_css_irq_enable(isp, IA_CSS_IRQ_INFO_CSS_RECEIVER_SOF, false);
 
-       if (asd->delayed_init == ATOMISP_DELAYED_INIT_QUEUED) {
-               cancel_work_sync(&asd->delayed_init_work);
-               asd->delayed_init = ATOMISP_DELAYED_INIT_NOT_QUEUED;
-       }
-
        css_pipe_id = atomisp_get_css_pipe_id(asd);
        atomisp_css_stop(asd, css_pipe_id, false);
 
index 821f3204b759a2d55570ed1c1dab20b2bea78e2c..9f07ed9f5306d1ca17d858fa2a127864c82e4bba 100644 (file)
@@ -189,7 +189,6 @@ static int isp_subdev_subscribe_event(struct v4l2_subdev *sd,
            sub->type != V4L2_EVENT_ATOMISP_METADATA_READY &&
            sub->type != V4L2_EVENT_ATOMISP_PAUSE_BUFFER &&
            sub->type != V4L2_EVENT_ATOMISP_CSS_RESET &&
-           sub->type != V4L2_EVENT_ATOMISP_RAW_BUFFERS_ALLOC_DONE &&
            sub->type != V4L2_EVENT_ATOMISP_ACC_COMPLETE)
                return -EINVAL;
 
index 141b93a6c0be4b7ac0e521bb70e6b111630acdb7..5583d6a023461d6d6885380cac645711b0ce3af5 100644 (file)
@@ -325,12 +325,6 @@ struct atomisp_sub_device {
         */
        unsigned int index;
 
-       /* delayed memory allocation for css */
-       struct completion init_done;
-       struct workqueue_struct *delayed_init_workq;
-       unsigned int delayed_init;
-       struct work_struct delayed_init_work;
-
        unsigned int latest_preview_exp_id; /* CSS ZSL/SDV raw buffer id */
 
        unsigned int mipi_frame_size;
index ba628f7cf385bb8362a078babdbb517c3ae1d8ef..c236cf081a47d462d5a7584b718afc5e3676b052 100644 (file)
@@ -1083,27 +1083,6 @@ static int atomisp_register_entities(struct atomisp_device *isp)
                }
        }
 
-       for (i = 0; i < isp->num_of_streams; i++) {
-               struct atomisp_sub_device *asd = &isp->asd[i];
-
-               init_completion(&asd->init_done);
-
-               asd->delayed_init_workq =
-                   alloc_workqueue(isp->v4l2_dev.name, WQ_CPU_INTENSIVE,
-                                   1);
-               if (!asd->delayed_init_workq) {
-                       dev_err(isp->dev,
-                               "Failed to initialize delayed init workq\n");
-                       ret = -ENOMEM;
-
-                       for (; i > 0; i--)
-                               destroy_workqueue(isp->asd[i - 1].
-                                                 delayed_init_workq);
-                       goto wq_alloc_failed;
-               }
-               INIT_WORK(&asd->delayed_init_work, atomisp_delayed_init_work);
-       }
-
        for (i = 0; i < isp->input_cnt; i++) {
                if (isp->inputs[i].port >= ATOMISP_CAMERA_NR_PORTS) {
                        dev_err(isp->dev, "isp->inputs port %d not supported\n",
@@ -1126,10 +1105,6 @@ static int atomisp_register_entities(struct atomisp_device *isp)
        return 0;
 
 link_failed:
-       for (i = 0; i < isp->num_of_streams; i++)
-               destroy_workqueue(isp->asd[i].
-                                 delayed_init_workq);
-wq_alloc_failed:
        for (i = 0; i < isp->num_of_streams; i++)
                atomisp_subdev_unregister_entities(
                    &isp->asd[i]);