[{"id":36386,"web_url":"https://patchwork.libcamera.org/comment/36386/","msgid":"<176113053200.199266.17501599024349882847@ping.linuxembedded.co.uk>","date":"2025-10-22T10:55:32","subject":"Re: [PATCH v2 1/1] pipeline: imx8-isi: Delay ISI routes config to\n\tacquire() time","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Antoine Bouyer (2025-10-22 10:38:20)\n> From: Andrei Gansari <andrei.gansari@nxp.com>\n> \n> Fixes behavior when calling 'cam -l' during a live stream from a camera\n> in another process.\n> \n> Issue is that multiple process should be able to list (match procedure)\n> the camera supported. But only the unique process that lock the media\n> devices in order to be able to configure then start the pipeline should\n> setup the routes, graphs etc.\n> \n> Thus, the setRouting() is to be moved to a PipelineHandlerISI::acquireDevice()\n> implementation to override the default Pipeline::acquireDevice() function.\n> \n> Fixes: 92df79112fb2 (\"pipeline: imx8-isi: Add multicamera support\")\n> \n> Signed-off-by: Andrei Gansari <andrei.gansari@nxp.com>\n> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>\n\nThanks for the update - looks good to me.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> ---\n>  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 47 +++++++++++++++++---\n>  1 file changed, 41 insertions(+), 6 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> index de09431cb9b9..b8834540688a 100644\n> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> @@ -71,6 +71,8 @@ public:\n>  \n>         unsigned int xbarSink_ = 0;\n>         unsigned int xbarSourceOffset_ = 0;\n> +\n> +       const std::string &cameraName() const { return sensor_->entity()->name(); }\n>  };\n>  \n>  class ISICameraConfiguration : public CameraConfiguration\n> @@ -117,6 +119,9 @@ protected:\n>  \n>         int queueRequestDevice(Camera *camera, Request *request) override;\n>  \n> +       bool acquireDevice(Camera *camera) override;\n> +       void releaseDevice(Camera *camera) override;\n> +\n>  private:\n>         static constexpr Size kPreviewSize = { 1920, 1080 };\n>         static constexpr Size kMinISISize = { 1, 1 };\n> @@ -143,6 +148,10 @@ private:\n>  \n>         std::unique_ptr<V4L2Subdevice> crossbar_;\n>         std::vector<Pipe> pipes_;\n> +\n> +       unsigned int acquireCount_ = 0;\n> +\n> +       V4L2Subdevice::Routing routing_ = {};\n>  };\n>  \n>  /* -----------------------------------------------------------------------------\n> @@ -950,6 +959,37 @@ int PipelineHandlerISI::queueRequestDevice(Camera *camera, Request *request)\n>         return 0;\n>  }\n>  \n> +bool PipelineHandlerISI::acquireDevice(Camera *camera)\n> +{\n> +       ISICameraData *data = cameraData(camera);\n> +\n> +       LOG(ISI, Debug) << \"acquireDevice \" << data->cameraName()\n> +                       << \" count \" << acquireCount_;\n> +\n> +       if (acquireCount_ > 0) {\n> +               acquireCount_++;\n> +               return true;\n> +       }\n> +\n> +       /* Enable routing for all available sensors once */\n> +       int ret = crossbar_->setRouting(&routing_, V4L2Subdevice::ActiveFormat);\n> +       if (ret)\n> +               return false;\n> +\n> +       acquireCount_++;\n> +       return true;\n> +}\n> +\n> +void PipelineHandlerISI::releaseDevice(Camera *camera)\n> +{\n> +       ISICameraData *data = cameraData(camera);\n> +\n> +       ASSERT(acquireCount_);\n> +       acquireCount_--;\n> +       LOG(ISI, Debug) << \"releaseDevice \" << data->cameraName()\n> +                       << \" count \" << acquireCount_;\n> +}\n> +\n>  bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>  {\n>         DeviceMatch dm(\"mxc-isi\");\n> @@ -1034,7 +1074,6 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>         unsigned int numSinks = 0;\n>         const unsigned int xbarFirstSource = crossbar_->entity()->pads().size() - pipes_.size();\n>         const unsigned int maxStreams = pipes_.size() / cameraCount;\n> -       V4L2Subdevice::Routing routing = {};\n>  \n>         for (MediaPad *pad : crossbar_->entity()->pads()) {\n>                 unsigned int sink = numSinks;\n> @@ -1104,7 +1143,7 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>                 /*  Add routes to the crossbar switch routing table. */\n>                 for (unsigned i = 0; i < data->streams_.size(); i++) {\n>                         unsigned int sourcePad = xbarFirstSource + data->xbarSourceOffset_ + i;\n> -                       routing.emplace_back(V4L2Subdevice::Stream{ data->xbarSink_, 0 },\n> +                       routing_.emplace_back(V4L2Subdevice::Stream{ data->xbarSink_, 0 },\n>                                              V4L2Subdevice::Stream{ sourcePad, 0 },\n>                                              V4L2_SUBDEV_ROUTE_FL_ACTIVE);\n>                 }\n> @@ -1116,10 +1155,6 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>                 numCameras++;\n>         }\n>  \n> -       ret = crossbar_->setRouting(&routing, V4L2Subdevice::ActiveFormat);\n> -       if (ret)\n> -               return false;\n> -\n>         return numCameras > 0;\n>  }\n>  \n> -- \n> 2.34.1\n>","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 57A1CC3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Oct 2025 10:55:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4F84E606AF;\n\tWed, 22 Oct 2025 12:55:36 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C575C605F3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Oct 2025 12:55:34 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 902B6605;\n\tWed, 22 Oct 2025 12:53:50 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"wB5aEuly\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761130430;\n\tbh=krIygq8dLGmdDZZ2D/dKqZWfSqwb4oIsFgOLuCIfr2I=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=wB5aEulyDekJJZ143GHxS348NjgAp4L1ok6Av919pWuC9/PLQ8tBRomn8Mj4D6ql8\n\tfh0MPzFHyj2MbgSwIyrGAcokQvQSDHPNMHtMSsaS0giKRi0jdCqRROaRHsV1dF7dkI\n\tlhlIzhX5983+Wx6tUvVPZJ/8VJYwtTowqDYibJ7c=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20251022093820.2757759-2-antoine.bouyer@nxp.com>","References":"<20251022093820.2757759-1-antoine.bouyer@nxp.com>\n\t<20251022093820.2757759-2-antoine.bouyer@nxp.com>","Subject":"Re: [PATCH v2 1/1] pipeline: imx8-isi: Delay ISI routes config to\n\tacquire() time","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"julien.vuillaumier@nxp.com, Andrei Gansari <andrei.gansari@nxp.com>,\n\tAntoine Bouyer <antoine.bouyer@nxp.com>","To":"Antoine Bouyer <antoine.bouyer@nxp.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 22 Oct 2025 11:55:32 +0100","Message-ID":"<176113053200.199266.17501599024349882847@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>"}},{"id":36391,"web_url":"https://patchwork.libcamera.org/comment/36391/","msgid":"<258dee54-07a2-4c25-b203-dc1b4a12cba3@nxp.com>","date":"2025-10-22T13:26:20","subject":"Re: [PATCH v2 1/1] pipeline: imx8-isi: Delay ISI routes config to\n\tacquire() time","submitter":{"id":218,"url":"https://patchwork.libcamera.org/api/people/218/","name":"Antoine Bouyer","email":"antoine.bouyer@nxp.com"},"content":"Hi Laurent\n\nThanks for your feedback\n\nOn 22/10/2025 14:43, Laurent Pinchart wrote:\n> Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button\n> \n> \n> Hi Antoine, Andrei,\n> \n> Thank you for the patch.\n> \n> On Wed, Oct 22, 2025 at 11:38:20AM +0200, Antoine Bouyer wrote:\n>> From: Andrei Gansari <andrei.gansari@nxp.com>\n>>\n>> Fixes behavior when calling 'cam -l' during a live stream from a camera\n>> in another process.\n>>\n>> Issue is that multiple process should be able to list (match procedure)\n>> the camera supported. But only the unique process that lock the media\n>> devices in order to be able to configure then start the pipeline should\n>> setup the routes, graphs etc.\n>>\n>> Thus, the setRouting() is to be moved to a PipelineHandlerISI::acquireDevice()\n>> implementation to override the default Pipeline::acquireDevice() function.\n>>\n>> Fixes: 92df79112fb2 (\"pipeline: imx8-isi: Add multicamera support\")\n>>\n> \n> Extra blank line.\n\nOk. Will remove it in V3\n> \n>> Signed-off-by: Andrei Gansari <andrei.gansari@nxp.com>\n>> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>\n>> ---\n>>   src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 47 +++++++++++++++++---\n>>   1 file changed, 41 insertions(+), 6 deletions(-)\n>>\n>> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> index de09431cb9b9..b8834540688a 100644\n>> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> @@ -71,6 +71,8 @@ public:\n>>\n>>        unsigned int xbarSink_ = 0;\n>>        unsigned int xbarSourceOffset_ = 0;\n>> +\n>> +     const std::string &cameraName() const { return sensor_->entity()->name(); }\n>>   };\n>>\n>>   class ISICameraConfiguration : public CameraConfiguration\n>> @@ -117,6 +119,9 @@ protected:\n>>\n>>        int queueRequestDevice(Camera *camera, Request *request) override;\n>>\n>> +     bool acquireDevice(Camera *camera) override;\n>> +     void releaseDevice(Camera *camera) override;\n>> +\n>>   private:\n>>        static constexpr Size kPreviewSize = { 1920, 1080 };\n>>        static constexpr Size kMinISISize = { 1, 1 };\n>> @@ -143,6 +148,10 @@ private:\n>>\n>>        std::unique_ptr<V4L2Subdevice> crossbar_;\n>>        std::vector<Pipe> pipes_;\n>> +\n>> +     unsigned int acquireCount_ = 0;\n> \n> This essentially duplicates PipelineHandler::useCount_. Is there a\n> reason to do so instead of changing acquireDevice() to only be called\n> once ? You could then drop releaseDevice().\n\nI voluntarily did not use useCount_ counter because it is private, so I \ncould not monitor it in PipelineHandlerISI to verify whether the routing \nwas already configured or not.\n\nDo you suggest to move useCount_ to protected, so I can check (useCount \n== 0) from PipelineHandlerISI::acquireDevice ? Then indeed, \nreleaseDevice becomes useless as I don't need acquireCount_ anymore \ninside imx8-isi pipeline.\n\nOr do you suggest to keep useCount_ private, and change \nPipelineHandler::acquire to call acquireDevice only if useCount_ is null ?\n\nI assume 2nd option could have side effect, since acquireDevice has the \ncamera as parameter. Some pipeline handlers may need to know which \ncamera is being acquired.\n\nAlready tested option #1 is functional on my side.\n\nBest regards\nAntoine\n\n> \n>> +\n>> +     V4L2Subdevice::Routing routing_ = {};\n>>   };\n>>\n>>   /* -----------------------------------------------------------------------------\n>> @@ -950,6 +959,37 @@ int PipelineHandlerISI::queueRequestDevice(Camera *camera, Request *request)\n>>        return 0;\n>>   }\n>>\n>> +bool PipelineHandlerISI::acquireDevice(Camera *camera)\n>> +{\n>> +     ISICameraData *data = cameraData(camera);\n>> +\n>> +     LOG(ISI, Debug) << \"acquireDevice \" << data->cameraName()\n>> +                     << \" count \" << acquireCount_;\n>> +\n>> +     if (acquireCount_ > 0) {\n>> +             acquireCount_++;\n>> +             return true;\n>> +     }\n>> +\n>> +     /* Enable routing for all available sensors once */\n>> +     int ret = crossbar_->setRouting(&routing_, V4L2Subdevice::ActiveFormat);\n>> +     if (ret)\n>> +             return false;\n>> +\n>> +     acquireCount_++;\n>> +     return true;\n>> +}\n>> +\n>> +void PipelineHandlerISI::releaseDevice(Camera *camera)\n>> +{\n>> +     ISICameraData *data = cameraData(camera);\n>> +\n>> +     ASSERT(acquireCount_);\n>> +     acquireCount_--;\n>> +     LOG(ISI, Debug) << \"releaseDevice \" << data->cameraName()\n>> +                     << \" count \" << acquireCount_;\n>> +}\n>> +\n>>   bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>>   {\n>>        DeviceMatch dm(\"mxc-isi\");\n>> @@ -1034,7 +1074,6 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>>        unsigned int numSinks = 0;\n>>        const unsigned int xbarFirstSource = crossbar_->entity()->pads().size() - pipes_.size();\n>>        const unsigned int maxStreams = pipes_.size() / cameraCount;\n>> -     V4L2Subdevice::Routing routing = {};\n>>\n>>        for (MediaPad *pad : crossbar_->entity()->pads()) {\n>>                unsigned int sink = numSinks;\n>> @@ -1104,7 +1143,7 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>>                /*  Add routes to the crossbar switch routing table. */\n>>                for (unsigned i = 0; i < data->streams_.size(); i++) {\n>>                        unsigned int sourcePad = xbarFirstSource + data->xbarSourceOffset_ + i;\n>> -                     routing.emplace_back(V4L2Subdevice::Stream{ data->xbarSink_, 0 },\n>> +                     routing_.emplace_back(V4L2Subdevice::Stream{ data->xbarSink_, 0 },\n>>                                             V4L2Subdevice::Stream{ sourcePad, 0 },\n>>                                             V4L2_SUBDEV_ROUTE_FL_ACTIVE);\n>>                }\n>> @@ -1116,10 +1155,6 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>>                numCameras++;\n>>        }\n>>\n>> -     ret = crossbar_->setRouting(&routing, V4L2Subdevice::ActiveFormat);\n>> -     if (ret)\n>> -             return false;\n>> -\n>>        return numCameras > 0;\n>>   }\n>>\n> \n> --\n> Regards,\n> \n> Laurent Pinchart","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 8B779BE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Oct 2025 13:24:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 619A7607AC;\n\tWed, 22 Oct 2025 15:24:20 +0200 (CEST)","from AM0PR02CU008.outbound.protection.outlook.com\n\t(mail-westeuropeazlp170130006.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c201::6])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9AE67606CE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Oct 2025 15:24:18 +0200 (CEST)","from GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8)\n\tby AM8PR04MB7908.eurprd04.prod.outlook.com (2603:10a6:20b:24c::18)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13;\n\tWed, 22 Oct 2025 13:24:17 +0000","from GVXPR04MB9831.eurprd04.prod.outlook.com\n\t([fe80::4634:3d9c:c4a:641a]) by\n\tGVXPR04MB9831.eurprd04.prod.outlook.com\n\t([fe80::4634:3d9c:c4a:641a%6]) with mapi id 15.20.9228.016;\n\tWed, 22 Oct 2025 13:24:17 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"ZuOivNBu\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=H77L31uCPbLdElWeNmSjxHZ7+j16g0M/Wglbbp16fDg+Njj05S2qjqC2fmbDM2w6jN3aomk4gZbib8aw5U/em47ZGx32t2462mdAZEyUL8KjONB+fjTbZwucD3w8WJwCrQJCP5o/AZC18fmzFwLtMGG4/SoJqCO8ri3ZTMpTqNUF2Wt7+WkZfw/nEgeEuuy7RBss/2L/oD3TcNJpjj+ZNxmf44Kb4tEVsiLxYRX4gLEHJLQYf0tXZs9gstgDlQ5cDCAzGgskSsvaxIRb+Jo3cn4PxKuebGdezh0nRjFlBtBVDsHCZns8+FrrMQAAoZi8E0TvsQ3HpuKjU3rwGtbdXg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector10001;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=sAao30Gy9WMvfcYxi6powVwPDg4JjsvxMX24Qfj+Njc=;\n\tb=uQr0CBCP8RpapdK6486kxAYkC4GH1Zoo83+iDqBuDv67/W107MKD6WcoDmdSRgBM8ICRD0JSIQC1cfknp2uNhWbu068+XJvFZPq5ACx5D+VVWAc7cugpLJFgYeIyq/4P/voZUqIhn7pFyLxYaAmbSW55GOBdZGLjbuDnscvqRNGHOCcuhcJEw3haIR7/kqFnPFa2FCioN0bsvHlTHc0rfWIuLgF0ygOPbJnxTZHlLgS92IXczirHYs70CsIVfWV8d9LOi9nvVyzj148CaPU8NkrEqa8fSpUJIN4kM9Z/oTkWPi6CMMFHFiD6UHv4ZMXV0VbBhU2zTTUGaNiFt0IiIw==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=sAao30Gy9WMvfcYxi6powVwPDg4JjsvxMX24Qfj+Njc=;\n\tb=ZuOivNBuj6K0k0OusP12mjpj6FbLAxMTltPTDBc9mUYjWKFiUYmeyabffeIZx/Qrdn3vQxG3Gg8dZoHMYu2CjKH4Zo8XD1aWdEsBreBuN7gY5nvoeM9vuSOSkxiR+j65kqiEx78xZrj4jhUcO5BUnnXE9vdhRWIVgWz3Oqt8IqsdwASdqnBVc10ZRJNZDxEqFcL/+HsA3eM3sdkeNDENjJN4+lS8cAc0HEpqdanxBagtLVCxRYBVGDOW23N3e73mkvOfhgx4BeeIyIH8p7nGiuMJ7pP1lcdkdmYmKxw/grbS0bsBCZYCCoUKjJxiQOkxBlyvOdJNVdIq6pAxtmjOnA==","Message-ID":"<258dee54-07a2-4c25-b203-dc1b4a12cba3@nxp.com>","Date":"Wed, 22 Oct 2025 15:26:20 +0200","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 1/1] pipeline: imx8-isi: Delay ISI routes config to\n\tacquire() time","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, julien.vuillaumier@nxp.com,\n\tAndrei Gansari <andrei.gansari@nxp.com>","References":"<20251022093820.2757759-1-antoine.bouyer@nxp.com>\n\t<20251022093820.2757759-2-antoine.bouyer@nxp.com>\n\t<20251022124343.GF19043@pendragon.ideasonboard.com>","Content-Language":"en-US","From":"Antoine Bouyer <antoine.bouyer@nxp.com>","In-Reply-To":"<20251022124343.GF19043@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-ClientProxiedBy":"AM4PR05CA0022.eurprd05.prod.outlook.com\n\t(2603:10a6:205::35)\n\tTo GVXPR04MB9831.eurprd04.prod.outlook.com\n\t(2603:10a6:150:11c::8)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"GVXPR04MB9831:EE_|AM8PR04MB7908:EE_","X-MS-Office365-Filtering-Correlation-Id":"2bf63a72-c1f3-44b9-7b72-08de116e4cf1","X-LD-Processed":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n\tARA:13230040|366016|19092799006|376014|1800799024; ","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?Y8ZRm+mksEnsAHBSinaR+1ufsgUq?=\n\t=?utf-8?q?jA6j2B1vV/KgxtwW2blgtZQnyxxEn1RBSHkAW/858fE4uAxWSE08H3SF?=\n\t=?utf-8?q?mNXy9GH/KG8dmEayV5xI8cKkZ/C54YStp0PgApfBYo1pMWPJyqt8UAoK?=\n\t=?utf-8?q?KJfuYi0x8R6jzEuGqh13K5SOUqfBtubmPYRhLmKc4G/nQoCowWbzGRWS?=\n\t=?utf-8?q?FEZrnvOz2Tr1Rt6QnNKG3AwJaCeu+Sn9m9mEZQVdTJ7no5QCp2Zraq3w?=\n\t=?utf-8?q?lh/9uRGmG7GX1fs/4jOw5mtNgCV0bzb+DAmwgFNkYairh/sUtWoSFR7D?=\n\t=?utf-8?q?iTrbWhrIbE9RuQ3oyYFL/IQCSf2ZguovZqKpibe6o6TbZCgqWVi0bd0/?=\n\t=?utf-8?q?+R04Oxbn6j5SEJ3DMTN9nZdHgiixTZfI04xeuHY2fUDkIOHTBlm2W43c?=\n\t=?utf-8?q?rayA/ruhH4yjG2QzqV8kr6gkkKaE4I4NClwqQPXV9Z3bnBjuIPIjkZ8U?=\n\t=?utf-8?q?Uc/2UIS5dZPoH38dIDrTvQz0X4EcGHA+pAwzC1edi6kfBdfyvf1l4Lsv?=\n\t=?utf-8?q?wb/pQXKXAAlbA/qhT2qM17mwAp/ADGMUBl30VtwpOVM0sJM62z6staxl?=\n\t=?utf-8?q?+O+1T1PuTAxNqJT6og/OYvfaC5yKGDg6Vp2KZILsL5pG5SNOVYYgVWm/?=\n\t=?utf-8?q?auG88oUIcfInYZxtvKWqKv7i0WX1U/eMf4wxiBrECHR2GvqUdteooyIL?=\n\t=?utf-8?q?PEBZQeFIVel4s1CJTZ5GX/U8lmSX6ALA9jnp+eHDyzp7fKQaN6OwLzMK?=\n\t=?utf-8?q?Nb4cT7D+zC14dogONvqLjPx/X4EhRD5XK1jBKoxT7bVYh+ru/DdbaJFw?=\n\t=?utf-8?q?EYeCzADmkv0BWzGN6aFLOvfUTk/ttDR7WO139repSGC4u5AxxFSfmjf3?=\n\t=?utf-8?q?DPA1U/BKXlj4tY9AAKkMrrWBy+u7FKlsQ//0DCv+ukjUPITf+YhJsOQ4?=\n\t=?utf-8?q?TM7FWJFIWYFTemRBT0OG3tNL8mP8A1leOsNF1rkt8cqqcRuPa3L/55n6?=\n\t=?utf-8?q?zNpRFdpiXuffql2+kPPQQNG5M9FGOjKlh7mLvf2cd2cuLbqNvT8z44so?=\n\t=?utf-8?q?vcYmiQHOP1xy8rWPm3TNCbFxRFBARw3PgcITFPsEPLRuVUK+eUL6Uos+?=\n\t=?utf-8?q?InWSkljBtpQQx4aUqEmzWfy4dQ/2MdgZd6ep1ULLkRw1BkLb33FSUE3C?=\n\t=?utf-8?q?MlRNaz19KA1k4I9oSzYAk5sPGtIeXKYzWNwdgIhxg6Dm/Ftk718manL/?=\n\t=?utf-8?q?6oB1cfapNiz31KEeiUuH7Z8NYvkj09oo/fGuJVpKNHhTYu/pJbzhp3QZ?=\n\t=?utf-8?q?TfulIAd0oP5qP9JPJyVyj3hyE9126p3lWu4Mr3PFDErUfvEDzFA/7rrq?=\n\t=?utf-8?q?cQnGGuVMtzWykLlFIx2MMBDmLXyGjwDBAQtaG/bYxdYgUpiNZE28gx45?=\n\t=?utf-8?q?EdiFusLyAKyAsBejI2CY6c4yCEJAVejrf3VXef1VHJyxPZziJo8fHbYm?=\n\t=?utf-8?q?G5f39ubFI/xoglLklussKJccsQJk49ivwwPsbRUPxPwx?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:GVXPR04MB9831.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(366016)(19092799006)(376014)(1800799024); DIR:OUT;\n\tSFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?QZNkGX7WnxEPGZOuw6gKh6VJI?=\n\t=?utf-8?q?A+hpO/ruBkcFWrk6XN+cfQZL6ZnWBd1ggxlOEEOTz3eNRy9UjznMEAmK?=\n\t=?utf-8?q?Q4Qknnr6b4JtaQUM0MjI6E1HdLBnzOBpfWeURp4JgP+4XiDdLvJwPLQv?=\n\t=?utf-8?q?6qjdrbxh5g26mLUsyakaLuvxag621GjoS/n7cBAgdhrDT3PP6nd3PMAA?=\n\t=?utf-8?q?8njSmDf1IPlt3rRwQPLHudrJn3fqy/m4/AASg+Lt9fVhJFcpXjrP0FpV?=\n\t=?utf-8?q?ibDVwKAmSti4xKwUwd9ZZzvSdGAy+4YE5hRZgkdvi3vJ6HQlyj58RHfH?=\n\t=?utf-8?q?80oBPhD282WxHW0GcQWgRVht1Dkgq9UhIMnvYN1Y+T4x22TlZqEr/FHK?=\n\t=?utf-8?q?1bAa/zrn7SYh2W5zaPvv8C5QnALVDmDeNqU5viG4qkPmKYMScexRGKo6?=\n\t=?utf-8?q?pe/o9/mSsDwJvMYcZEumVf53Uulh1dU7sZBxqRYkOxv22jcQEsS/u+8O?=\n\t=?utf-8?q?1qUgE80WAe9Hv4x67CzvkLKqwYC5a86xbXWRmWO4xn64U67VQ3j13U6h?=\n\t=?utf-8?q?ftTV6Iv5kRGYFfp+F8ru2qT9G5XmDNIC25gzRr3TWaJjvD2dHhkXe8iF?=\n\t=?utf-8?q?zDKuwddqraBJe/KM9UA+3SyqoWLuk3rrUrAS00ChBBr1upvEYJgFGjjr?=\n\t=?utf-8?q?t9zx2Ra/N6JXgYv88pkyWdz3KNTRj9OZeIVQigaRPcWhUGRfTbuZ+6qv?=\n\t=?utf-8?q?ox0KoeJB5Z95ERcxSdbW6bOgTGbJNClaBKMMfftZp+Wpi0FLfpxsA/HS?=\n\t=?utf-8?q?zwFSqBpa14tmvHB7gloxrHQGpCXBJ5GEB9MDmFnBSw9Ec3mudpSK0vuz?=\n\t=?utf-8?q?UsfUxdZtYB3VMkHcwVYq8Fexw5CbYcZeCa1NxtGNHK++t2bZkM/HbJ9K?=\n\t=?utf-8?q?lkETRvukoPrbYfYlEE4d9vPOGxashoNAySsVAxCiFXtZIBBkjcnUpMWy?=\n\t=?utf-8?q?JWXeurOSk7kAYLu53eM5uOsuG/MLZXhajMJaAZ6GxopPOB/ni0wOAq09?=\n\t=?utf-8?q?0sWHWnY9FPVqmplTJ5Wkjks/WTrzSBBowPOEVsYpc8nS8tvI73u7HfcA?=\n\t=?utf-8?q?WenagkQak8T/21Z0ZQZtVPujWH5RmsL2L2ZjuCEyHRBg7vwanN/di8fe?=\n\t=?utf-8?q?A3iXUrX5iKKwfHu6rjj7UmRx2Ue6yHkabnVATLV0qqAt5Gy0661nUY97?=\n\t=?utf-8?q?uv9R6Pf6Fop6Y41boIRASdfibM7Oi37NcX4kElXgx4KYm95gFuxiEGCS?=\n\t=?utf-8?q?TKL6T4H1pyLLx5RTNI14CWXcgvX7Zzxsf8baRuALTv32liEehFI5+TEX?=\n\t=?utf-8?q?aoA2iG6LnWraFL+O0mGanOrNABnSQv3rER5aMokGxqY46LOSu6ohL4I8?=\n\t=?utf-8?q?I5wZXWsyw8FfSHuiKAyvGlgbotz5en1DHoCbbUSlSVsCG68PuNLLcc2M?=\n\t=?utf-8?q?+VRNAOeg5n1JjB3hN+jUq4BeH/rODPQWq/Sv8OrmhkAo37/YgTxyhoif?=\n\t=?utf-8?q?oBJqWX/UEniiOxpdS2KJxsg7Gc7gaxRkllwIZ5N3cnaS1aLRysKrSK4r?=\n\t=?utf-8?q?WQrSOxasZjQ0c415m4b4CDu7CeqJJ3KFRgVPbP4gjQQ5mGSnWG6Mc0k0?=\n\t=?utf-8?q?RZHVF3tgdd+x9RagQwqDdbHUQR2Q2YCmE+dqZ1x+5uhe/bnKwTo+Vwqd?=\n\t=?utf-8?q?dofkV5PE/ZNpBp7d82LvGvQ4OdxCw=3D=3D?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"2bf63a72-c1f3-44b9-7b72-08de116e4cf1","X-MS-Exchange-CrossTenant-AuthSource":"GVXPR04MB9831.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"22 Oct 2025 13:24:16.9577\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"wWKzn+r65TocGmnH+sHfWhpVrb6bHN2KWa4KxkF0PZY3Lqb6bpfJFR9U9ZglcSLfOHn1wNUtuORKgpNwawhnVQ==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"AM8PR04MB7908","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>"}}]