From patchwork Tue Dec 29 16:03:07 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: 10766 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 DDD90C0F1A for ; Tue, 29 Dec 2020 16:03:54 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 775F7615B2; Tue, 29 Dec 2020 17:03:54 +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 5AEB56031F for ; Tue, 29 Dec 2020 17:03:53 +0100 (CET) X-Halon-ID: 6ce1ccea-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 6ce1ccea-49ef-11eb-a542-005056917a89; Tue, 29 Dec 2020 17:03:51 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Tue, 29 Dec 2020 17:03:07 +0100 Message-Id: <20201229160318.77536-1-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 00/11] libcamera: ipu3: Attach to an skeleton IPA 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" Hello, This series adds an IPA skeleton for the IPU3 pipeline. The IPA itself supports mapping of parameter and statistic buffers as well as pushing V4L2 controls to the camera sensor. It does however not read or write anything into the buffers given to it during the capture process. It also adds all the plumbing inside IPU3 pipeline to function with an IPA while of of course retaining all the different capture setups previously supported. The idea is to prepare for adding algorithms in the IPA on-top without having to worry about all the plumbing inside the pipeline handler. This will likely happen in two steps. A first where fake algorithms are added to generate metadata to be used in further development of cam and the Android HAL. Then a follow up step where the fake ones are replaced with real ones. This series depends on the DelayedControls work. Niklas Söderlund (11): include: linux: Add ipu3 kernel header and format definitions libcamera: ipu3: imgu: Configure the stat video device as part of configure() libcamera: ipu3: imgu: Add parameters video device libcamera: ipu3: cio2: Return the FrameBuffer pointer used libcamera: ipu3: cio2: Generate start of frame event libcamera: ipa: ipu3: Add an IPA skeleton for the IPU3 pipeline libcamera: ipu3: Attach to an IPA and allow it to set sensor controls libcamera: ipu3: imgu: Allocate buffers for stats and param libcamera: ipu3: Map buffers in IPA libcamera: ipu3: Add helper for parameter and statistic buffers libcamera: ipu3: Share parameter and statistic buffers with IPA include/libcamera/ipa/ipu3.h | 23 + include/linux/intel-ipu3.h | 2785 +++++++++++++++++++++++ src/ipa/ipu3/ipu3.cpp | 236 ++ src/ipa/ipu3/meson.build | 21 + src/ipa/meson.build | 2 +- src/libcamera/pipeline/ipu3/cio2.cpp | 28 +- src/libcamera/pipeline/ipu3/cio2.h | 5 +- src/libcamera/pipeline/ipu3/frames.cpp | 141 ++ src/libcamera/pipeline/ipu3/frames.h | 63 + src/libcamera/pipeline/ipu3/imgu.cpp | 60 +- src/libcamera/pipeline/ipu3/imgu.h | 13 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 261 ++- src/libcamera/pipeline/ipu3/meson.build | 1 + 13 files changed, 3590 insertions(+), 49 deletions(-) create mode 100644 include/libcamera/ipa/ipu3.h create mode 100644 include/linux/intel-ipu3.h create mode 100644 src/ipa/ipu3/ipu3.cpp create mode 100644 src/ipa/ipu3/meson.build create mode 100644 src/libcamera/pipeline/ipu3/frames.cpp create mode 100644 src/libcamera/pipeline/ipu3/frames.h