Message ID | 20231127165454.166373-28-benjamin.gaignard@collabora.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers |
Received: from ny.mirrors.kernel.org ([147.75.199.223]) by www.linuxtv.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <linux-media+bounces-1132-patchwork=linuxtv.org@vger.kernel.org>) id 1r7euq-002ZuK-6H for patchwork@linuxtv.org; Mon, 27 Nov 2023 16:57:00 +0000 Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 879511C20CC4 for <patchwork@linuxtv.org>; Mon, 27 Nov 2023 16:56:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D240A3DB8B; Mon, 27 Nov 2023 16:55:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="AiG+Ejb2" X-Original-To: linux-media@vger.kernel.org Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E9F91BFE; Mon, 27 Nov 2023 08:55:28 -0800 (PST) Received: from benjamin-XPS-13-9310.. (ec2-34-240-57-77.eu-west-1.compute.amazonaws.com [34.240.57.77]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madras.collabora.co.uk (Postfix) with ESMTPSA id 75A956607286; Mon, 27 Nov 2023 16:55:26 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1701104127; bh=YIgkAExbbbECDPnkaD6N0lG+VUJuWN8PC9JRmzX9TCI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AiG+Ejb2+mNZ23dQ58fH8HeFPy3hJ02mlj2Hi6rxIeY+Gy1a8/QIAfOk23U/takDW v6q5IkEXN2y6tQf+omLSLpcCgvsdNkad61xg1wUI87O6gd/fMVHJPt7beMBJxoFrzv o3zi6w3FT8MG0PcMXFjmkzio7deWNDtDOAOgQxgjwDHJYjxGTvkbAVGKotPtggFhjH nEwfKFLrFCHpdhjTGSVVIYW9HnpEUsKJSQJhbxaToNiZ+59Uk/fYnCZBuMuMOIXmHs 95pGFhjthjI/q+XLSrPOYxKfQ89KGXqn3gvvCg3f+9+VRpC04Qij8+Svm2OuMVLuVw WvZajJW/poNYw== From: Benjamin Gaignard <benjamin.gaignard@collabora.com> To: hverkuil@xs4all.nl, mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com, matt.ranostay@konsulko.com Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-staging@lists.linux.dev, kernel@collabora.com, Benjamin Gaignard <benjamin.gaignard@collabora.com>, Paul Kocialkowski <paul.kocialkowski@bootlin.com>, Chen-Yu Tsai <wens@csie.org>, Jernej Skrabec <jernej.skrabec@gmail.com>, Samuel Holland <samuel@sholland.org>, linux-sunxi@lists.linux.dev Subject: [PATCH 27/55] media: sun6i-isp: Stop abusing of min_buffers_needed field Date: Mon, 27 Nov 2023 17:54:26 +0100 Message-Id: <20231127165454.166373-28-benjamin.gaignard@collabora.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231127165454.166373-1-benjamin.gaignard@collabora.com> References: <20231127165454.166373-1-benjamin.gaignard@collabora.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: <linux-media.vger.kernel.org> List-Subscribe: <mailto:linux-media+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-media+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-LSpam-Score: -4.8 (----) X-LSpam-Report: No, score=-4.8 required=5.0 tests=BAYES_00=-1.9,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_MED=-2.3 autolearn=ham autolearn_force=no |
Series |
Clean up queue_setup()/min_buffers_needed (ab)use
|
|
Commit Message
Benjamin Gaignard
Nov. 27, 2023, 4:54 p.m. UTC
'min_buffers_needed' is suppose to be used to indicate the number
of buffers needed by DMA engine to start streaming.
sun6i-isp driver doesn't use DMA engine and just want to specify
the minimum number of buffers to allocate when calling VIDIOC_REQBUFS.
That 'min_reqbufs_allocation' field purpose so use it.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
CC: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
CC: Chen-Yu Tsai <wens@csie.org>
CC: Jernej Skrabec <jernej.skrabec@gmail.com>
CC: Samuel Holland <samuel@sholland.org>
CC: linux-sunxi@lists.linux.dev
---
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c | 2 +-
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
Comments
Hi Benjamin, On Mon 27 Nov 23, 17:54, Benjamin Gaignard wrote: > 'min_buffers_needed' is suppose to be used to indicate the number > of buffers needed by DMA engine to start streaming. > sun6i-isp driver doesn't use DMA engine and just want to specify > the minimum number of buffers to allocate when calling VIDIOC_REQBUFS. > That 'min_reqbufs_allocation' field purpose so use it. The hardware actually has its own DMA engine. It can work with just one buffer though (which will never be returned to userspace). But I think we should still require at least two buffers allocated, otherwise the driver will be of no use at all. So I don't think the commit message here is correct. Cheers, Paul > Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> > CC: Paul Kocialkowski <paul.kocialkowski@bootlin.com> > CC: Chen-Yu Tsai <wens@csie.org> > CC: Jernej Skrabec <jernej.skrabec@gmail.com> > CC: Samuel Holland <samuel@sholland.org> > CC: linux-sunxi@lists.linux.dev > --- > drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c | 2 +- > drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c > index 1595a9607775..f47f9946c19f 100644 > --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c > +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c > @@ -660,7 +660,7 @@ int sun6i_isp_capture_setup(struct sun6i_isp_device *isp_dev) > queue->buf_struct_size = sizeof(struct sun6i_isp_buffer); > queue->ops = &sun6i_isp_capture_queue_ops; > queue->mem_ops = &vb2_dma_contig_memops; > - queue->min_buffers_needed = 2; > + queue->min_reqbufs_allocation = 2; > queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > queue->lock = &capture->lock; > queue->dev = isp_dev->dev; > diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c > index e28be895b486..259f6bfcb620 100644 > --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c > +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c > @@ -489,7 +489,7 @@ int sun6i_isp_params_setup(struct sun6i_isp_device *isp_dev) > queue->buf_struct_size = sizeof(struct sun6i_isp_buffer); > queue->ops = &sun6i_isp_params_queue_ops; > queue->mem_ops = &vb2_vmalloc_memops; > - queue->min_buffers_needed = 1; > + queue->min_reqbufs_allocation = 1; > queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > queue->lock = ¶ms->lock; > queue->dev = isp_dev->dev; > -- > 2.39.2 >
Le 29/11/2023 à 14:40, Paul Kocialkowski a écrit : > Hi Benjamin, > > On Mon 27 Nov 23, 17:54, Benjamin Gaignard wrote: >> 'min_buffers_needed' is suppose to be used to indicate the number >> of buffers needed by DMA engine to start streaming. >> sun6i-isp driver doesn't use DMA engine and just want to specify >> the minimum number of buffers to allocate when calling VIDIOC_REQBUFS. >> That 'min_reqbufs_allocation' field purpose so use it. > The hardware actually has its own DMA engine. It can work with just one buffer > though (which will never be returned to userspace). But I think we should still > require at least two buffers allocated, otherwise the driver will be of no use > at all. > > So I don't think the commit message here is correct. That is exactly the info I hope to get for this first series since I don't know each hardware block details. I will remove this commit and make the driver use min_queued_buffers field instead so that will fit with it needs. Thanks, Benjamin > > Cheers, > > Paul > >> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> >> CC: Paul Kocialkowski <paul.kocialkowski@bootlin.com> >> CC: Chen-Yu Tsai <wens@csie.org> >> CC: Jernej Skrabec <jernej.skrabec@gmail.com> >> CC: Samuel Holland <samuel@sholland.org> >> CC: linux-sunxi@lists.linux.dev >> --- >> drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c | 2 +- >> drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c | 2 +- >> 2 files changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c >> index 1595a9607775..f47f9946c19f 100644 >> --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c >> +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c >> @@ -660,7 +660,7 @@ int sun6i_isp_capture_setup(struct sun6i_isp_device *isp_dev) >> queue->buf_struct_size = sizeof(struct sun6i_isp_buffer); >> queue->ops = &sun6i_isp_capture_queue_ops; >> queue->mem_ops = &vb2_dma_contig_memops; >> - queue->min_buffers_needed = 2; >> + queue->min_reqbufs_allocation = 2; >> queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; >> queue->lock = &capture->lock; >> queue->dev = isp_dev->dev; >> diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c >> index e28be895b486..259f6bfcb620 100644 >> --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c >> +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c >> @@ -489,7 +489,7 @@ int sun6i_isp_params_setup(struct sun6i_isp_device *isp_dev) >> queue->buf_struct_size = sizeof(struct sun6i_isp_buffer); >> queue->ops = &sun6i_isp_params_queue_ops; >> queue->mem_ops = &vb2_vmalloc_memops; >> - queue->min_buffers_needed = 1; >> + queue->min_reqbufs_allocation = 1; >> queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; >> queue->lock = ¶ms->lock; >> queue->dev = isp_dev->dev; >> -- >> 2.39.2 >>
diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c index 1595a9607775..f47f9946c19f 100644 --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c @@ -660,7 +660,7 @@ int sun6i_isp_capture_setup(struct sun6i_isp_device *isp_dev) queue->buf_struct_size = sizeof(struct sun6i_isp_buffer); queue->ops = &sun6i_isp_capture_queue_ops; queue->mem_ops = &vb2_dma_contig_memops; - queue->min_buffers_needed = 2; + queue->min_reqbufs_allocation = 2; queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; queue->lock = &capture->lock; queue->dev = isp_dev->dev; diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c index e28be895b486..259f6bfcb620 100644 --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c @@ -489,7 +489,7 @@ int sun6i_isp_params_setup(struct sun6i_isp_device *isp_dev) queue->buf_struct_size = sizeof(struct sun6i_isp_buffer); queue->ops = &sun6i_isp_params_queue_ops; queue->mem_ops = &vb2_vmalloc_memops; - queue->min_buffers_needed = 1; + queue->min_reqbufs_allocation = 1; queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; queue->lock = ¶ms->lock; queue->dev = isp_dev->dev;