From patchwork Wed May 6 23:06:40 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: devve X-Patchwork-Id: 26652 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 8DC94C32F6 for ; Wed, 6 May 2026 23:06:56 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 42E876302F; Thu, 7 May 2026 01:06:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="W4095VUw"; dkim-atps=neutral Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 09DF762DC4 for ; Thu, 7 May 2026 01:06:51 +0200 (CEST) Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-488e1a8ac40so2099615e9.2 for ; Wed, 06 May 2026 16:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778108810; x=1778713610; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LaTrKnaEFSG6R1dixgnlxJZEG75nGFBB6KtmVy+2B9E=; b=W4095VUwJCQ63Qd9qMZO5BAvhdxSu4f+gVoeLvm+n8leLmS9XecbiDX2fhevY3YQzQ 6Md9wc1WA44qIjEj9vIqn11tZ3qk78kRX972A49fBzxBGQygWh2cTwmAoI/XEya0oNJS pAQVvoVU2qfEjS3xPlgoEHi0mxR6qQ6v7Y3pdHl74M6f99bMFMsEsZBdyDOVHsAcO9Uz SjMEQGdJLfvANdLmckNkoGHJgZghlSJM8jv0KhOaILvcNbUmQ/hmuEKGiuMr7PmTJGMc u4zuFutt597hyClfVSa/qjxMe1Vh5plFGP/jsEE8NaWKHrGdSmExP883g2fjTiuGEChf UBBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778108810; x=1778713610; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=LaTrKnaEFSG6R1dixgnlxJZEG75nGFBB6KtmVy+2B9E=; b=Gd24tNi58rZWPYOL8uyEfkj5GwwV1h3xHYGj0GV1qQvIYx4zVwzSx3CDupjilGYCQG DP7oSylNWB4DFmkZd8Tye4yu9si4UV6LHELxw1EmNYgc8nYoXcVvEWZAbHs8+Y8TGhCl 8rwdgOR4rbjYCJL8pERrwLj2y0R7zhUkOmrCkCcocwkTaFmO1R2mKOdUwUPtCt/+9ag2 sfmQ8FSfzhf21N704vd+jhmeHxPZorLJKqOkKoMuYM4SsfXk6arLiFLMugta6UpiPt0R bEkJ7b2gSva/QTlqCRqkzF+0GE1KPl9hchL+wHc3CKzeBvW9F8Rmi/7qkO1x7iONV4Tl Pq3w== X-Gm-Message-State: AOJu0Yz6BmfhiLasiXNgt5d2S8Aoyo1BWAeNfqk96ExC6glBc2TAatTM ZF5r1AVH1v6T8nr83cUXM9SKOoU6BJ+K5Jev5jjGvgYVUzMn2KnXPjuBsfTaBg== X-Gm-Gg: AeBDievgEk++udSVO32M1jZXT8Pd/oEYkZ2NzKhCBGqGkIhDbKSB/7fGdZpiX3HNks1 GxEiaOIaPGFhdYaCusCOWBLWYkoAYGaKKKrub3Q33Fys7xwg8n87bpAd7KurslbTdMeLtRyzejn 2tkxjA8nXn7MLEuurvwRJZ99ZEOIFuQRd9sw0/9qLn93t20d570YEWo1V31zJ6e6q9EpDZd+Dpr 8VTRHc/owUaauEWMm3h3NnJQye59FOzKGqQoUr3SO9kCSBd4nwugQ1eaoBxltA+Mslk0C4rppvT LbDx5oM2MB4zKZYnKRuYAWON1ooCxQp7hyqBbTBCJQ/Hviqhb8ZPIMwPd/MZepOlFBbf0lndKk5 XZkHqo4LmdWWXcSgJJFoL4HhoIrQKhet0QOhVXApoNgT6tv7bQ5M23QzTDRMZxp4SyTLp1g3dB7 zIMWx0RwRf9dpJixWbZHXy0sgPV9iz33nO/E8VY4J0CQNdyvClgM2F+py6jaktRWn4WuUx//smH b5G8njHmFhx+UlEpYhaU3tjUL0HTJWNvzuh8orGemqy1PtC4hnw4Q== X-Received: by 2002:a05:600c:8906:b0:488:ffad:6728 with SMTP id 5b1f17b1804b1-48e51f46d7bmr69113445e9.19.1778108810517; Wed, 06 May 2026 16:06:50 -0700 (PDT) Received: from dexps.speedport.ip (p200300eda74453cf3cf3f7929e513b94.dip0.t-ipconnect.de. [2003:ed:a744:53cf:3cf3:f792:9e51:3b94]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e538a547bsm85951935e9.5.2026.05.06.16.06.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 May 2026 16:06:50 -0700 (PDT) From: d3vv3 To: libcamera-devel@lists.libcamera.org Subject: [PATCH v2 01/10] ipa: libipa: camera_sensor_helper: Add OV01A10 Date: Thu, 7 May 2026 01:06:40 +0200 Message-ID: <20260506230649.1040794-2-devve.3@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506230649.1040794-1-devve.3@gmail.com> References: <20260506230649.1040794-1-devve.3@gmail.com> 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" From: Stuart J Mackintosh Add a CameraSensorHelper for the OmniVision OV01A10 image sensor, used in Dell XPS 13 and other laptops with the Intel IPU6 camera subsystem. The analogue gain register (0x3508) uses a Q6.8 fixed-point format, with the minimum value OV01A10_ANAL_GAIN_MIN = 0x100 representing unity gain. This gives the linear model: gain = code / 256 Hans de Goede confirmed linear behaviour by monitoring the 18% grey patch of a Macbeth chart under controlled lighting while stepping the gain control. The black level of 0x40 at 10 bits (4096 scaled to 16 bits) was confirmed by dark frame measurement with the lens covered. Without this helper, libcamera's AGC algorithm cannot convert between gain codes and real gain values, causing auto-exposure oscillation and the following warning: IPASoft: Failed to create camera sensor helper for ov01a10 Signed-off-by: Stuart J Mackintosh --- src/ipa/libipa/camera_sensor_helper.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp index e3e3e535..72466867 100644 --- a/src/ipa/libipa/camera_sensor_helper.cpp +++ b/src/ipa/libipa/camera_sensor_helper.cpp @@ -653,6 +653,18 @@ public: }; REGISTER_CAMERA_SENSOR_HELPER("imx708", CameraSensorHelperImx708) +class CameraSensorHelperOv01a10 : public CameraSensorHelper +{ +public: + CameraSensorHelperOv01a10() + { + /* From dark frame measurement: 0x40 at 10bits. */ + blackLevel_ = 4096; + gain_ = AnalogueGainLinear{ 1, 0, 0, 256 }; + } +}; +REGISTER_CAMERA_SENSOR_HELPER("ov01a10", CameraSensorHelperOv01a10) + class CameraSensorHelperOv2685 : public CameraSensorHelper { public: