{"id":13734,"url":"https://patchwork.libcamera.org/api/patches/13734/?format=json","web_url":"https://patchwork.libcamera.org/patch/13734/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20210907194107.803730-4-jacopo@jmondi.org>","date":"2021-09-07T19:40:53","name":"[libcamera-devel,v2,03/17] libcamera: ipu3: Split controls init/update","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"e3d7dbd70b5a5fbbc6b43f588317d353a3d10aeb","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/?format=json","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/13734/mbox/","series":[{"id":2492,"url":"https://patchwork.libcamera.org/api/series/2492/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=2492","date":"2021-09-07T19:40:50","name":"IPU3 control info update and HAL frame durations","version":2,"mbox":"https://patchwork.libcamera.org/series/2492/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/13734/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/13734/checks/","tags":{},"headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 6AD41BDB1D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  7 Sep 2021 19:40:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 470846917E;\n\tTue,  7 Sep 2021 21:40:34 +0200 (CEST)","from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net\n\t[217.70.183.193])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E94C36916A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Sep 2021 21:40:29 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay1-d.mail.gandi.net (Postfix) with ESMTPSA id 25BCA240005;\n\tTue,  7 Sep 2021 19:40:28 +0000 (UTC)"],"From":"Jacopo Mondi <jacopo@jmondi.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Tue,  7 Sep 2021 21:40:53 +0200","Message-Id":"<20210907194107.803730-4-jacopo@jmondi.org>","X-Mailer":"git-send-email 2.32.0","In-Reply-To":"<20210907194107.803730-1-jacopo@jmondi.org>","References":"<20210907194107.803730-1-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v2 03/17] libcamera: ipu3: Split controls\n\tinit/update","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"In order to prepare for updating the Camera controls limits when a new\ncamera configuration is applied, split the initControls() function in\ntwo:\n- updateControls() to actually compute controls values\n- initControls() to initialize the sensor configuration and call\n  updateControls\n\nUpdate the functions documentation accordingly.\n\nNo functional changes intended.\n\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n---\n src/libcamera/pipeline/ipu3/ipu3.cpp | 33 ++++++++++++++++++++++++----\n 1 file changed, 29 insertions(+), 4 deletions(-)","diff":"diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 89a05fab69ad..1c383336e45f 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -148,6 +148,7 @@ private:\n \t}\n \n \tint initControls(IPU3CameraData *data);\n+\tint updateControls(IPU3CameraData *data);\n \tint registerCameras();\n \n \tint allocateBuffers(Camera *camera);\n@@ -927,9 +928,11 @@ bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)\n  * \\brief Initialize the camera controls\n  * \\param[in] data The camera data\n  *\n- * Initialize the camera controls as the union of the static pipeline handler\n- * controls (IPU3Controls) and controls created dynamically from the sensor\n- * capabilities.\n+ * Initialize the camera controls by calculating controls which the pipeline\n+ * is reponsible for and merge them with the controls computed by the IPA.\n+ *\n+ * This function needs data->ipaControls_ to be initialized by the IPA init()\n+ * function at camera creation time. Always call this function after IPA init().\n  *\n  * \\return 0 on success or a negative error code otherwise\n  */\n@@ -950,8 +953,30 @@ int PipelineHandlerIPU3::initControls(IPU3CameraData *data)\n \tif (ret)\n \t\treturn ret;\n \n+\treturn updateControls(data);\n+}\n+\n+/**\n+ * \\brief Update the camera controls\n+ * \\param[in] data The camera data\n+ *\n+ * Compute the camera controls by calculating controls which the pipeline\n+ * is reponsible for and merge them with the controls computed by the IPA.\n+ *\n+ * This function needs data->ipaControls_ to be refreshed when a new\n+ * configuration is applied to the camera by the IPA configure() function.\n+ *\n+ * Always call this function after IPA configure() to make sure to have a\n+ * properly refreshed IPA controls list.\n+ *\n+ * \\return 0 on success or a negative error code otherwise\n+ */\n+int PipelineHandlerIPU3::updateControls(IPU3CameraData *data)\n+{\n+\tCameraSensor *sensor = data->cio2_.sensor();\n \tIPACameraSensorInfo sensorInfo{};\n-\tret = sensor->sensorInfo(&sensorInfo);\n+\n+\tint ret = sensor->sensorInfo(&sensorInfo);\n \tif (ret)\n \t\treturn ret;\n \n","prefixes":["libcamera-devel","v2","03/17"]}