From patchwork Tue May 10 11:51:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15867 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id D7940C326C for ; Tue, 10 May 2022 11:52:29 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 6CDA36565D; Tue, 10 May 2022 13:52:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1652183549; bh=uhFYqlxRyJRQAdfliGJQT40i74qJsxgVla750D6q6kc=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=v8Ke3pDW4CaLp68OR8QIspc6CaRx1zUKrRcTnEeoUfvtd2ttAqpPZTUFxeKB5sCyX hcrGKToBDm0lSaXGawdTWEOqK3FCeqOsSq4Il4kjiap02oKigVpPSlo82/ihr13C0J 4Dpay1wOTMyJlQGq1VGhmkK9sj60f6/+Y652Fbl78Rwaf8YHDeN7EG5G6cXaVauKWo d3sabmwTEe78BVpCE8XuDsPMPTUdBErFIQXtY/SGwQ4GHzvwAviXldMjZF5nT/p/mE o0rB/6JwUufRFwvwUQ+U+Gm6KIgHJKf7wn7E5kw9NtJR+5F2MZXvLMmHriAAtfAtO/ wb46FWjZOmosw== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 22C1B6566A for ; Tue, 10 May 2022 13:52:20 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="eGGHrcyX"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 468A6D18; Tue, 10 May 2022 13:52:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1652183539; bh=uhFYqlxRyJRQAdfliGJQT40i74qJsxgVla750D6q6kc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eGGHrcyXHqByGfSrxUtQoweQVkNfMZBpUtmRngpTySGnhKo8HKKCsr6FziL5Al2iY O9mTi8BQkhmqDA2qkpaoxkw2r6uiTE3fvRyGmmvK+AMLbC16rVasVJA5Sdn+jHhA2j 22pctdjDffwm5+ddD/FUw+NTxyE4kFCqM3Jl7yGc= To: libcamera-devel@lists.libcamera.org Date: Tue, 10 May 2022 14:51:24 +0300 Message-Id: <20220510115147.19360-28-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220510115147.19360-1-laurent.pinchart@ideasonboard.com> References: <20220510115147.19360-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 27/50] staging: media: imx: imx7-media-csi: Decouple from imx_media_buffer X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Cc: Martin Kepplinger , kernel@pengutronix.de, Dorota Czaplejewicz , Alexander Stein , Rui Miguel Silva , Philipp Zabel , Steve Longerbeam Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Decouple from the imx_media_buffer structure defined in shared helpers by duplicating it in the imx7-media-csi driver. No functional change intended. Signed-off-by: Laurent Pinchart --- drivers/staging/media/imx/imx7-media-csi.c | 41 ++++++++++++++-------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c index b116f6ab96f0..bd1bc3fada2e 100644 --- a/drivers/staging/media/imx/imx7-media-csi.c +++ b/drivers/staging/media/imx/imx7-media-csi.c @@ -171,6 +171,19 @@ enum imx_csi_model { IMX7_CSI_IMX8MQ, }; +struct imx7_csi_vb2_buffer { + struct vb2_v4l2_buffer vbuf; + struct list_head list; +}; + +static inline struct imx7_csi_vb2_buffer * +to_imx7_csi_vb2_buffer(struct vb2_buffer *vb) +{ + struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); + + return container_of(vbuf, struct imx7_csi_vb2_buffer, vbuf); +} + struct imx7_csi { struct device *dev; @@ -209,7 +222,7 @@ struct imx7_csi { spinlock_t q_lock; /* Protect ready_q */ /* Buffers and streaming state */ - struct imx_media_buffer *active_vb2_buf[2]; + struct imx7_csi_vb2_buffer *active_vb2_buf[2]; struct imx_media_dma_buf underrun_buf; bool is_streaming; @@ -355,11 +368,11 @@ static void imx7_csi_update_buf(struct imx7_csi *csi, dma_addr_t phys, imx7_csi_reg_write(csi, phys, CSI_CSIDMASA_FB1); } -static struct imx_media_buffer *imx7_csi_video_next_buf(struct imx7_csi *csi); +static struct imx7_csi_vb2_buffer *imx7_csi_video_next_buf(struct imx7_csi *csi); static void imx7_csi_setup_vb2_buf(struct imx7_csi *csi) { - struct imx_media_buffer *buf; + struct imx7_csi_vb2_buffer *buf; struct vb2_buffer *vb2_buf; dma_addr_t phys[2]; int i; @@ -382,7 +395,7 @@ static void imx7_csi_setup_vb2_buf(struct imx7_csi *csi) static void imx7_csi_dma_unsetup_vb2_buf(struct imx7_csi *csi, enum vb2_buffer_state return_status) { - struct imx_media_buffer *buf; + struct imx7_csi_vb2_buffer *buf; int i; /* return any remaining active frames with return_status */ @@ -652,7 +665,7 @@ static void imx7_csi_error_recovery(struct imx7_csi *csi) static void imx7_csi_vb2_buf_done(struct imx7_csi *csi) { struct imx_media_video_dev *vdev = &csi->vdev; - struct imx_media_buffer *done, *next; + struct imx7_csi_vb2_buffer *done, *next; struct vb2_buffer *vb; dma_addr_t phys; @@ -997,7 +1010,7 @@ static int imx7_csi_video_queue_setup(struct vb2_queue *vq, static int imx7_csi_video_buf_init(struct vb2_buffer *vb) { - struct imx_media_buffer *buf = to_imx_media_vb(vb); + struct imx7_csi_vb2_buffer *buf = to_imx7_csi_vb2_buffer(vb); INIT_LIST_HEAD(&buf->list); @@ -1024,7 +1037,7 @@ static int imx7_csi_video_buf_prepare(struct vb2_buffer *vb) static void imx7_csi_video_buf_queue(struct vb2_buffer *vb) { struct imx7_csi *csi = vb2_get_drv_priv(vb->vb2_queue); - struct imx_media_buffer *buf = to_imx_media_vb(vb); + struct imx7_csi_vb2_buffer *buf = to_imx7_csi_vb2_buffer(vb); unsigned long flags; spin_lock_irqsave(&csi->q_lock, flags); @@ -1073,7 +1086,7 @@ static int imx7_csi_video_start_streaming(struct vb2_queue *vq, unsigned int count) { struct imx7_csi *csi = vb2_get_drv_priv(vq); - struct imx_media_buffer *buf, *tmp; + struct imx7_csi_vb2_buffer *buf, *tmp; unsigned long flags; int ret; @@ -1115,8 +1128,8 @@ static int imx7_csi_video_start_streaming(struct vb2_queue *vq, static void imx7_csi_video_stop_streaming(struct vb2_queue *vq) { struct imx7_csi *csi = vb2_get_drv_priv(vq); - struct imx_media_buffer *frame; - struct imx_media_buffer *tmp; + struct imx7_csi_vb2_buffer *frame; + struct imx7_csi_vb2_buffer *tmp; unsigned long flags; mutex_lock(&csi->mdev.graph_mutex); @@ -1205,16 +1218,16 @@ static const struct v4l2_file_operations imx7_csi_video_fops = { * Video Capture Device - Init & Cleanup */ -static struct imx_media_buffer *imx7_csi_video_next_buf(struct imx7_csi *csi) +static struct imx7_csi_vb2_buffer *imx7_csi_video_next_buf(struct imx7_csi *csi) { - struct imx_media_buffer *buf = NULL; + struct imx7_csi_vb2_buffer *buf = NULL; unsigned long flags; spin_lock_irqsave(&csi->q_lock, flags); /* get next queued buffer */ if (!list_empty(&csi->ready_q)) { - buf = list_entry(csi->ready_q.next, struct imx_media_buffer, + buf = list_entry(csi->ready_q.next, struct imx7_csi_vb2_buffer, list); list_del(&buf->list); } @@ -1336,7 +1349,7 @@ static int imx7_csi_video_init(struct imx7_csi *csi) vq->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; vq->io_modes = VB2_MMAP | VB2_DMABUF; vq->drv_priv = csi; - vq->buf_struct_size = sizeof(struct imx_media_buffer); + vq->buf_struct_size = sizeof(struct imx7_csi_vb2_buffer); vq->ops = &imx7_csi_video_qops; vq->mem_ops = &vb2_dma_contig_memops; vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;