From patchwork Mon Jun 27 16:27:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 16387 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 D1BBBBD808 for ; Mon, 27 Jun 2022 16:27:52 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 55EDC65645; Mon, 27 Jun 2022 18:27:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1656347272; bh=DTtd03qxnOavgVCgD4PzR0t9PU2WvibBUcL0Q4807Ro=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=N+ulLedzUIpoIPbgIBzCvOxSA7IagkQWfH3nClsV0PJIGvJOjAdBVPh9s8pz6DAlE vGU7kB2Euxukgds5DIVy9tDLwPsjVihiJqvscJlxLVv6S32QE1QCWiHQYCPSk3eP5H Cr1PFx201vr/rUXHaQtC48vq5gRXBW4+qwIneq/FHK0mTJTXSQQma/AY9+gvxElYye vrygXjZCja1ZwTo0H/lydzNiWt+HGRw9CZ8v3iYjauopHv/Pn1KwBHbn2rP1KL4vbJ pXqKu9sOWlL74kjQyJNaV5jEWb1OEkY1QtD2us2xfaMHzgKzCBJY4ZVM3dLaYWL1n0 zv+NUSOgUZ62Q== Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 39ACF65644 for ; Mon, 27 Jun 2022 18:27:46 +0200 (CEST) Received: (Authenticated sender: jacopo@jmondi.org) by mail.gandi.net (Postfix) with ESMTPSA id 315F220009; Mon, 27 Jun 2022 16:27:44 +0000 (UTC) To: libcamera-devel@lists.libcamera.org Date: Mon, 27 Jun 2022 18:27:23 +0200 Message-Id: <20220627162732.33160-7-jacopo@jmondi.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627162732.33160-1-jacopo@jmondi.org> References: <20220627162732.33160-1-jacopo@jmondi.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 06/15] libcamera: ipu3: Initialize DelayedControls with camera properties 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: , X-Patchwork-Original-From: Jacopo Mondi via libcamera-devel From: Jacopo Mondi Reply-To: Jacopo Mondi Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Use the sensor control delays as reported by the camera sensor properties map to intialize delayed controls for the IPU3 platform. Signed-off-by: Jacopo Mondi --- src/libcamera/pipeline/ipu3/ipu3.cpp | 30 ++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index b7dda282faab..19d022c584ed 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -1127,13 +1127,31 @@ int PipelineHandlerIPU3::registerCameras() continue; /* - * \todo Read delay values from the sensor itself or from a - * a sensor database. For now use generic values taken from - * the Raspberry Pi and listed as 'generic values'. + * Get the sensor delays and validate the required controls + * are reported. */ - std::unordered_map params = { - { V4L2_CID_ANALOGUE_GAIN, { 1, false } }, - { V4L2_CID_EXPOSURE, { 2, false } }, + const CameraSensor::SensorDelays &sensorDelays = cio2->sensor()->sensorDelays(); + if (!sensorDelays.count(&controls::internal::ExposureTime) || + !sensorDelays.count(&controls::internal::draft::SensorAnalogueGain)) { + LOG(IPU3, Error) << "Missing sensor control delays"; + return -ENODEV; + } + + const std::unordered_map params{ + { + V4L2_CID_ANALOGUE_GAIN, + { + sensorDelays.at(&controls::internal::draft::SensorAnalogueGain), + false, + }, + }, + { + V4L2_CID_EXPOSURE, + { + sensorDelays.at(&controls::internal::ExposureTime), + false, + }, + }, }; data->delayedCtrls_ =