From patchwork Sun Aug 2 13:59:56 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: j4niwzis X-Patchwork-Id: 27540 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 0A4E8C32FE for ; Sun, 2 Aug 2026 14:00:02 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id AC27E67FEC; Sun, 2 Aug 2026 16:00:01 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=proton.me header.i=@proton.me header.b="farcnuEi"; dkim-atps=neutral Received: from mail-24430.protonmail.ch (mail-24430.protonmail.ch [109.224.244.30]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 61EBE67FC1 for ; Sun, 2 Aug 2026 16:00:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1785679199; x=1785938399; bh=54WPUoLBtwtAbIYD2y9tB5oTjCRVcYjHBASUBFvYNX4=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=farcnuEiHUWcEouMHwaRo7o/AiCaE1Jn/6NYBX/r86JB5lIGkYG6mXXBXuYpMgFrk B1gyYMIgElk/GdgBiHJW/Dkjp6KzrfMAOcpyIA296tK4vDaAyJl/URyeIa0NQtR83V 0JqTOjxSooMBikxMnRnQjSJWtWXSDgemT+22bSsRNz5j+11B/KGvyLAcZl/W4rQkvx ApsAIHET26WZpzW+Cm/KlS8ZZY7TKv/H4M1ePDH4wmuPkRUW1HDFqgnnqTArz1h/Af guzVt1/C9Izi/TD2uah7uaT32uECC3NMlgdELQQVx2UZBphGtQcaQ3T37vGfp0r226 Kti+ypmE/uJFA== Date: Sun, 02 Aug 2026 13:59:56 +0000 To: "libcamera-devel@lists.libcamera.org" From: j4niwzis Subject: [PATCH 2/3] ipa: libipa: Add sensor helpers for the IMX582, IMX586 and OV8856 Message-ID: Feedback-ID: 156040633:user:proton X-Pm-Message-ID: cb2b0b5d2cdbfd608d67202ee14693d140214fb9 MIME-Version: 1.0 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 Sony parts use the usual Sony analogue gain, 1024 / (1024 - code), andtheir black level is 0x40 at ten bits, which the software ISP needs in order not to subtract the wrong pedestal - without it a dim scene comes out as a uniformly black frame. The OV8856 gain is linear in 1/128 steps, as on the OV8858. Signed-off-by: j4niwzis --- -- 2.51.0 diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp --- a/src/ipa/libipa/camera_sensor_helper.cpp +++ b/src/ipa/libipa/camera_sensor_helper.cpp @@ -654,6 +654,23 @@  };  REGISTER_CAMERA_SENSOR_HELPER("imx477", CameraSensorHelperImx477) +class CameraSensorHelperImx586 : public CameraSensorHelper +{ +public: + CameraSensorHelperImx586() + { + /* From the register tables: 0x40 at 10 bits. */ + blackLevel_ = 4096; + gain_ = AnalogueGainLinear{ 0, 1024, -1, 1024 }; + } +}; +REGISTER_CAMERA_SENSOR_HELPER("imx586", CameraSensorHelperImx586) + +class CameraSensorHelperImx582 : public CameraSensorHelperImx586 +{ +}; +REGISTER_CAMERA_SENSOR_HELPER("imx582", CameraSensorHelperImx582) +  class CameraSensorHelperImx662 : public CameraSensorHelper  {  public: @@ -827,6 +844,16 @@  };  REGISTER_CAMERA_SENSOR_HELPER("ov64a40", CameraSensorHelperOv64a40) +class CameraSensorHelperOv8856 : public CameraSensorHelper +{ +public: + CameraSensorHelperOv8856() + { + gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; + } +}; +REGISTER_CAMERA_SENSOR_HELPER("ov8856", CameraSensorHelperOv8856) +  class CameraSensorHelperOv8858 : public CameraSensorHelper  {  public: