Commit 9d971b81 authored by Baokun Li's avatar Baokun Li Committed by Mauro Carvalho Chehab
Browse files

media: atomisp: use list_splice_init in atomisp_compat_css20.c

Using list_splice_init() instead of entire while-loops
in atomisp_compat_css20.c.

Link: https://lore.kernel.org/linux-media/20210617140926.887680-1-libaokun1@huawei.com


Reported-by: default avatarHulk Robot <hulkci@huawei.com>
Signed-off-by: default avatarBaokun Li <libaokun1@huawei.com>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 264f5908
Loading
Loading
Loading
Loading
+5 −33
Original line number Diff line number Diff line
@@ -2102,9 +2102,6 @@ void atomisp_css_stop(struct atomisp_sub_device *asd,
		      enum ia_css_pipe_id pipe_id, bool in_reset)
{
	struct atomisp_device *isp = asd->isp;
	struct atomisp_s3a_buf *s3a_buf;
	struct atomisp_dis_buf *dis_buf;
	struct atomisp_metadata_buf *md_buf;
	unsigned long irqflags;
	unsigned int i;

@@ -2144,42 +2141,17 @@ void atomisp_css_stop(struct atomisp_sub_device *asd,
	}

	/* move stats buffers to free queue list */
	while (!list_empty(&asd->s3a_stats_in_css)) {
		s3a_buf = list_entry(asd->s3a_stats_in_css.next,
				     struct atomisp_s3a_buf, list);
		list_del(&s3a_buf->list);
		list_add_tail(&s3a_buf->list, &asd->s3a_stats);
	}
	while (!list_empty(&asd->s3a_stats_ready)) {
		s3a_buf = list_entry(asd->s3a_stats_ready.next,
				     struct atomisp_s3a_buf, list);
		list_del(&s3a_buf->list);
		list_add_tail(&s3a_buf->list, &asd->s3a_stats);
	}
	list_splice_init(&asd->s3a_stats_in_css, &asd->s3a_stats);
	list_splice_init(&asd->s3a_stats_ready, &asd->s3a_stats);

	spin_lock_irqsave(&asd->dis_stats_lock, irqflags);
	while (!list_empty(&asd->dis_stats_in_css)) {
		dis_buf = list_entry(asd->dis_stats_in_css.next,
				     struct atomisp_dis_buf, list);
		list_del(&dis_buf->list);
		list_add_tail(&dis_buf->list, &asd->dis_stats);
	}
	list_splice_init(&asd->dis_stats_in_css, &asd->dis_stats);
	asd->params.dis_proj_data_valid = false;
	spin_unlock_irqrestore(&asd->dis_stats_lock, irqflags);

	for (i = 0; i < ATOMISP_METADATA_TYPE_NUM; i++) {
		while (!list_empty(&asd->metadata_in_css[i])) {
			md_buf = list_entry(asd->metadata_in_css[i].next,
					    struct atomisp_metadata_buf, list);
			list_del(&md_buf->list);
			list_add_tail(&md_buf->list, &asd->metadata[i]);
		}
		while (!list_empty(&asd->metadata_ready[i])) {
			md_buf = list_entry(asd->metadata_ready[i].next,
					    struct atomisp_metadata_buf, list);
			list_del(&md_buf->list);
			list_add_tail(&md_buf->list, &asd->metadata[i]);
		}
		list_splice_init(&asd->metadata_in_css[i], &asd->metadata[i]);
		list_splice_init(&asd->metadata_ready[i], &asd->metadata[i]);
	}

	atomisp_flush_params_queue(&asd->video_out_capture);