From patchwork Fri Dec 27 10:58:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Keke Li X-Patchwork-Id: 22448 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 A8D4BC32B5 for ; Fri, 27 Dec 2024 10:59:04 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 92DE3684CB; Fri, 27 Dec 2024 11:59:03 +0100 (CET) Received: from mail-sh.amlogic.com (unknown [58.32.228.46]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id E611461893 for ; Fri, 27 Dec 2024 11:58:51 +0100 (CET) Received: from droid10.amlogic.com (10.18.11.213) by mail-sh.amlogic.com (10.18.11.5) with Microsoft SMTP Server id 15.1.2507.39; Fri, 27 Dec 2024 18:58:49 +0800 From: Keke Li To: CC: , , , , Keke Li Subject: [PATCH v2 0/2] Add Amlogic C3 ISP pipeline handler and IPA Date: Fri, 27 Dec 2024 18:58:38 +0800 Message-ID: <20241227105840.159559-1-keke.li@amlogic.com> X-Mailer: git-send-email 2.29.0 MIME-Version: 1.0 X-Originating-IP: [10.18.11.213] 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" The Amlogic C3 platform integrates an ISP capable of supporting multi-camera, multi-exposure high dynamic range (HDR) imaging with up to 14-bit raw RGB Bayer data. The C3 ISP pipeline handler supports 3-channel image output, 1-channel 3A statistics ouput and 1-channel parameters input. Link to the C3 ISP driver patch v5: https://lore.kernel.org/r/20241227-c3isp-v5-0-c7124e762ff6@amlogic.com Changes in v2: - Align struct c3_isp_params_xxx to 8 bytes in c3-isp-config.h - Modify c3_isp_stats_buffer to c3_isp_stats_info in c3-isp-config.h Keke Li (2): libcamera: pipeline: Add C3 ISP pipeline handler libcamera: ipa: Add C3 ISP IPA include/libcamera/ipa/c3isp.mojom | 42 + include/libcamera/ipa/meson.build | 1 + include/linux/c3-isp-config.h | 564 ++++++++++ include/linux/videodev2.h | 4 + meson_options.txt | 3 +- src/ipa/c3-isp/algorithms/agc.cpp | 260 +++++ src/ipa/c3-isp/algorithms/agc.h | 50 + src/ipa/c3-isp/algorithms/algorithm.h | 31 + src/ipa/c3-isp/algorithms/awb.cpp | 257 +++++ src/ipa/c3-isp/algorithms/awb.h | 42 + src/ipa/c3-isp/algorithms/blc.cpp | 102 ++ src/ipa/c3-isp/algorithms/blc.h | 40 + src/ipa/c3-isp/algorithms/ccm.cpp | 86 ++ src/ipa/c3-isp/algorithms/ccm.h | 40 + src/ipa/c3-isp/algorithms/csc.cpp | 64 ++ src/ipa/c3-isp/algorithms/csc.h | 32 + src/ipa/c3-isp/algorithms/meson.build | 10 + src/ipa/c3-isp/algorithms/post_gamma.cpp | 64 ++ src/ipa/c3-isp/algorithms/post_gamma.h | 33 + src/ipa/c3-isp/c3-isp.cpp | 386 +++++++ src/ipa/c3-isp/data/imx290.yaml | 30 + src/ipa/c3-isp/data/meson.build | 9 + src/ipa/c3-isp/ipa_context.cpp | 251 +++++ src/ipa/c3-isp/ipa_context.h | 110 ++ src/ipa/c3-isp/meson.build | 32 + src/ipa/c3-isp/module.h | 28 + src/ipa/c3-isp/params.cpp | 127 +++ src/ipa/c3-isp/params.h | 133 +++ src/libcamera/pipeline/c3-isp/c3-isp.cpp | 1161 +++++++++++++++++++++ src/libcamera/pipeline/c3-isp/meson.build | 5 + 30 files changed, 3996 insertions(+), 1 deletion(-) create mode 100644 include/libcamera/ipa/c3isp.mojom create mode 100644 include/linux/c3-isp-config.h create mode 100644 src/ipa/c3-isp/algorithms/agc.cpp create mode 100644 src/ipa/c3-isp/algorithms/agc.h create mode 100644 src/ipa/c3-isp/algorithms/algorithm.h create mode 100755 src/ipa/c3-isp/algorithms/awb.cpp create mode 100755 src/ipa/c3-isp/algorithms/awb.h create mode 100644 src/ipa/c3-isp/algorithms/blc.cpp create mode 100644 src/ipa/c3-isp/algorithms/blc.h create mode 100644 src/ipa/c3-isp/algorithms/ccm.cpp create mode 100644 src/ipa/c3-isp/algorithms/ccm.h create mode 100644 src/ipa/c3-isp/algorithms/csc.cpp create mode 100644 src/ipa/c3-isp/algorithms/csc.h create mode 100644 src/ipa/c3-isp/algorithms/meson.build create mode 100644 src/ipa/c3-isp/algorithms/post_gamma.cpp create mode 100644 src/ipa/c3-isp/algorithms/post_gamma.h create mode 100644 src/ipa/c3-isp/c3-isp.cpp create mode 100644 src/ipa/c3-isp/data/imx290.yaml create mode 100644 src/ipa/c3-isp/data/meson.build create mode 100644 src/ipa/c3-isp/ipa_context.cpp create mode 100644 src/ipa/c3-isp/ipa_context.h create mode 100644 src/ipa/c3-isp/meson.build create mode 100644 src/ipa/c3-isp/module.h create mode 100644 src/ipa/c3-isp/params.cpp create mode 100644 src/ipa/c3-isp/params.h create mode 100644 src/libcamera/pipeline/c3-isp/c3-isp.cpp create mode 100644 src/libcamera/pipeline/c3-isp/meson.build