mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 03:57:34 -04:00
media: atomisp: Remove delayed_init related code
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>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
6048fc1c56
commit
9fd4b20816
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -101,10 +101,6 @@
|
||||
#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
|
||||
|
||||
@@ -1309,8 +1309,6 @@ int atomisp_start_streaming(struct vb2_queue *vq, unsigned int count)
|
||||
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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user