From patchwork Tue Dec 29 16:03:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 10771 X-Patchwork-Delegate: niklas.soderlund@ragnatech.se 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 610F4C0F1A for ; Tue, 29 Dec 2020 16:04:09 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 3CB56615D2; Tue, 29 Dec 2020 17:04:09 +0100 (CET) Received: from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net [195.74.38.228]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 7EBEA6031F for ; Tue, 29 Dec 2020 17:04:07 +0100 (CET) X-Halon-ID: 7a0fb564-49ef-11eb-a542-005056917a89 Authorized-sender: niklas.soderlund@fsdn.se Received: from bismarck.berto.se (p4fca2458.dip0.t-ipconnect.de [79.202.36.88]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id 7a0fb564-49ef-11eb-a542-005056917a89; Tue, 29 Dec 2020 17:04:06 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Tue, 29 Dec 2020 17:03:12 +0100 Message-Id: <20201229160318.77536-6-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201229160318.77536-1-niklas.soderlund@ragnatech.se> References: <20201229160318.77536-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 05/11] libcamera: ipu3: cio2: Generate start of frame event 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Propagate the frameStart event whenever the CSI-2 receiver in the CIO2 pipeline generates one. Signed-off-by: Niklas Söderlund Reviewed-by: Kieran Bingham Reviewed-by: Jacopo Mondi Reviewed-by: Laurent Pinchart --- * Changes since v1 - Move blank lines. --- src/libcamera/pipeline/ipu3/cio2.cpp | 18 +++++++++++++++--- src/libcamera/pipeline/ipu3/cio2.h | 3 ++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp index f76c6675b0f448fe..25946fd420db6853 100644 --- a/src/libcamera/pipeline/ipu3/cio2.cpp +++ b/src/libcamera/pipeline/ipu3/cio2.cpp @@ -239,15 +239,27 @@ int CIO2Device::start() availableBuffers_.push(buffer.get()); ret = output_->streamOn(); - if (ret) + if (ret) { freeBuffers(); + return ret; + } - return ret; + ret = csi2_->setFrameStartEnabled(true); + if (ret) { + stop(); + return ret; + } + + return 0; } int CIO2Device::stop() { - int ret = output_->streamOff(); + int ret; + + csi2_->setFrameStartEnabled(false); + + ret = output_->streamOff(); freeBuffers(); diff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h index dca4d40e4c32e8b2..5ecc4f47bb3cdb3f 100644 --- a/src/libcamera/pipeline/ipu3/cio2.h +++ b/src/libcamera/pipeline/ipu3/cio2.h @@ -13,6 +13,7 @@ #include +#include "libcamera/internal/v4l2_subdevice.h" #include "libcamera/internal/v4l2_videodevice.h" namespace libcamera { @@ -24,7 +25,6 @@ class PixelFormat; class Request; class Size; class SizeRange; -class V4L2Subdevice; struct StreamConfiguration; class CIO2Device @@ -54,6 +54,7 @@ public: FrameBuffer *queueBuffer(Request *request, FrameBuffer *rawBuffer); void tryReturnBuffer(FrameBuffer *buffer); Signal &bufferReady() { return output_->bufferReady; } + Signal &frameStart() { return csi2_->frameStart; } private: void freeBuffers();