[{"id":34657,"web_url":"https://patchwork.libcamera.org/comment/34657/","msgid":"<20250626124436.GL8738@pendragon.ideasonboard.com>","date":"2025-06-26T12:44:36","subject":"Re: [PATCH v1 3/3] pipeline: rpi: Set a default route for entities\n\twhere applicable","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nThank you for the patch.\n\nOn Wed, Jun 25, 2025 at 09:41:18AM +0100, Naushir Patuck wrote:\n> If an entity advertises streams support, and no routes are active, set\n> a default active route for Stream 0:[pad 0 -> pad 1]. This allows\n> serialiser/deserialiser devices to run without user setup in the default\n> case.\n> \n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  .../pipeline/rpi/common/pipeline_base.cpp     | 33 ++++++++++++++++++-\n>  1 file changed, 32 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> index 219bd81cc63a..eafbf702ed0b 100644\n> --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> @@ -107,7 +107,38 @@ int configureMediaDevices(std::vector<std::pair<std::unique_ptr<V4L2Subdevice>,\n>  \t\t}\n>  \n>  \t\t/*\n> -\t\t * Next, enable the entity -> entity links, and setup the pad format.\n> +\t\t * Next, setup the stream routing if needed. By default this\n> +\t\t * sets up Stream 0:[pad 0 -> pad 1] route. Anything more\n> +\t\t * complicated must currently be setup and activated externally.\n> +\t\t *\n> +\t\t * If we find any active routes, we don't change anything.\n> +\t\t */\n> +\t\tif (device->caps().hasStreams()) {\n> +\t\t\tV4L2Subdevice::Routing routing;\n> +\n> +\t\t\tret = device->getRouting(&routing);\n> +\t\t\tif (ret)\n> +\t\t\t\treturn ret;\n> +\n> +\t\t\t/* If we find an active route, don't do anything more. */\n> +\t\t\tfor (auto const &r : routing) {\n> +\t\t\t\tif (r.flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)\n> +\t\t\t\t\treturn 0;\n> +\t\t\t}\n> +\n> +\t\t\t/*\n> +\t\t\t * Set up a default Stream 0:[pad 0 -> pad 1] route if nothing\n> +\t\t\t * has already been set.\n> +\t\t\t */\n> +\t\t\trouting = { { V4L2Subdevice::Stream{ 0, 0 },\n> +\t\t\t\t      V4L2Subdevice::Stream{ 1, 0 },\n> +\t\t\t\t      V4L2_SUBDEV_ROUTE_FL_ACTIVE } };\n\nThat's really shooting in the dark :-(\n\nWe should model serializers and deserializers with dedicated objects,\nlike we do with the CameraSensor class.\n\n> +\n> +\t\t\tret = device->setRouting(&routing);\n> +\t\t}\n> +\n> +\t\t/*\n> +\t\t * Finally, enable the entity -> entity links, and setup the pad format.\n>  \t\t *\n>  \t\t * \\todo Some bridge devices may chainge the media bus code, so we\n>  \t\t * ought to read the source pad format and propagate it to the sink pad.","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 8F50DBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 26 Jun 2025 12:45:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C5EDF68DF6;\n\tThu, 26 Jun 2025 14:45:02 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 25E7668DE8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 26 Jun 2025 14:45:01 +0200 (CEST)","from pendragon.ideasonboard.com (85-76-34-12-nat.elisa-mobile.fi\n\t[85.76.34.12])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 21813743;\n\tThu, 26 Jun 2025 14:44:42 +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=\"iq96lHnA\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1750941882;\n\tbh=mKqsajib4NJC8wP6ODZuZbxgmytfxFQcZnp/xAT+3Tc=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=iq96lHnA4TO7tyWfUfO8yQH+wOL8VigSpMB8mc2t7hE5gIjI4jpX5yI25ZOURlaKP\n\tlpaX7rRTiCZazCEpQ/VHI6BOVELx/4EkxpsQWxoZSvPikNXVL9JWuG0E/D9QF8s3fc\n\tIz1GnEG6GCuDrtol9sJgvAn0wMXwqgtwbsCUjAo4=","Date":"Thu, 26 Jun 2025 15:44:36 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org, dave.stevenson@raspberrypi.com","Subject":"Re: [PATCH v1 3/3] pipeline: rpi: Set a default route for entities\n\twhere applicable","Message-ID":"<20250626124436.GL8738@pendragon.ideasonboard.com>","References":"<20250625084212.858487-1-naush@raspberrypi.com>\n\t<20250625084212.858487-4-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20250625084212.858487-4-naush@raspberrypi.com>","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":34658,"web_url":"https://patchwork.libcamera.org/comment/34658/","msgid":"<CAEmqJPpV0pNO=LeRivm2_VQV9JUO2xuFPzd==N1aCMxFyr7a3Q@mail.gmail.com>","date":"2025-06-26T12:52:51","subject":"Re: [PATCH v1 3/3] pipeline: rpi: Set a default route for entities\n\twhere applicable","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Thu, 26 Jun 2025 at 13:45, Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> Hi Naush,\n>\n> Thank you for the patch.\n>\n> On Wed, Jun 25, 2025 at 09:41:18AM +0100, Naushir Patuck wrote:\n> > If an entity advertises streams support, and no routes are active, set\n> > a default active route for Stream 0:[pad 0 -> pad 1]. This allows\n> > serialiser/deserialiser devices to run without user setup in the default\n> > case.\n> >\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  .../pipeline/rpi/common/pipeline_base.cpp     | 33 ++++++++++++++++++-\n> >  1 file changed, 32 insertions(+), 1 deletion(-)\n> >\n> > diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> > index 219bd81cc63a..eafbf702ed0b 100644\n> > --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> > +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> > @@ -107,7 +107,38 @@ int configureMediaDevices(std::vector<std::pair<std::unique_ptr<V4L2Subdevice>,\n> >               }\n> >\n> >               /*\n> > -              * Next, enable the entity -> entity links, and setup the pad format.\n> > +              * Next, setup the stream routing if needed. By default this\n> > +              * sets up Stream 0:[pad 0 -> pad 1] route. Anything more\n> > +              * complicated must currently be setup and activated externally.\n> > +              *\n> > +              * If we find any active routes, we don't change anything.\n> > +              */\n> > +             if (device->caps().hasStreams()) {\n> > +                     V4L2Subdevice::Routing routing;\n> > +\n> > +                     ret = device->getRouting(&routing);\n> > +                     if (ret)\n> > +                             return ret;\n> > +\n> > +                     /* If we find an active route, don't do anything more. */\n> > +                     for (auto const &r : routing) {\n> > +                             if (r.flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)\n> > +                                     return 0;\n> > +                     }\n> > +\n> > +                     /*\n> > +                      * Set up a default Stream 0:[pad 0 -> pad 1] route if nothing\n> > +                      * has already been set.\n> > +                      */\n> > +                     routing = { { V4L2Subdevice::Stream{ 0, 0 },\n> > +                                   V4L2Subdevice::Stream{ 1, 0 },\n> > +                                   V4L2_SUBDEV_ROUTE_FL_ACTIVE } };\n>\n> That's really shooting in the dark :-(\n>\n> We should model serializers and deserializers with dedicated objects,\n> like we do with the CameraSensor class.\n\nSadly I agree, but how can we expose this to the user/application to\nconfigure for their needs?\n\nNaush\n\n>\n> > +\n> > +                     ret = device->setRouting(&routing);\n> > +             }\n> > +\n> > +             /*\n> > +              * Finally, enable the entity -> entity links, and setup the pad format.\n> >                *\n> >                * \\todo Some bridge devices may chainge the media bus code, so we\n> >                * ought to read the source pad format and propagate it to the sink pad.\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 53288C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 26 Jun 2025 12:53:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 35D9368DF6;\n\tThu, 26 Jun 2025 14:53:31 +0200 (CEST)","from mail-vs1-xe31.google.com (mail-vs1-xe31.google.com\n\t[IPv6:2607:f8b0:4864:20::e31])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0502368DE8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 26 Jun 2025 14:53:27 +0200 (CEST)","by mail-vs1-xe31.google.com with SMTP id\n\tada2fe7eead31-4e9b7507512so45997137.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 26 Jun 2025 05:53:27 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"j6U1Bev5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1750942407; x=1751547207;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=xSfffHMqted5nk7bPfUJSmfcTajj8uu9RdZ++F8kWHQ=;\n\tb=j6U1Bev5i24xvGbN3PmQdahYUWa4a9w9HOGg/vqmlzUlFuukts2sXJw12Cu4SoGhPi\n\tZfjM0a2HRc9uPPtDsbj0edX+vmGbbYXXkr4LlF2kcCR/ILyALSRz5AXk7KeK9Ymlj+IR\n\tfwA14ZvhAaMH8cyQ0CIfG1xmvpFTN9bHgPUDniFYpyKEhsQFFB3J/q/rrND8cUvV3rGa\n\tsu2+mR2IZnyJp5ir8fn6Tke38Rt0AVdGzATRaUEqD/kJ/NLQKTOFCWH0xVQIu9I+9Zlh\n\tPQtAMG7Pbe+vnBJ0aUO8arTLfBm03gFtnlZUJ+fN6OpDkwetVJzkB4lAHgVVo7bSJBN9\n\tBhLA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750942407; x=1751547207;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=xSfffHMqted5nk7bPfUJSmfcTajj8uu9RdZ++F8kWHQ=;\n\tb=NAd3UTZYVxybcI0y+pRzf8k7ujrnGIArXT64KL5RKL7mDV9DaYZREbT3vyD5nA/TP5\n\tha5KYwOmCjrXVYmNHhY85iOwJAGcaYJJokvxw6av3dWRok0bsGMtlwJzGwEml9uhGqX5\n\tVIr/92kbtRR1Vq711TKhYR8kUa9TjwrxKRJpYL5rjL7N1kmyKSZq6CjDmUctUDMijykP\n\thpnGi9ynZFzSK0gworYhX84a7LW9Hygm6LlQlK891OTFS6J1gzgi3SlNL1H1UCUb44/w\n\ta+t2ktxxVX6R+rBI0fQd6XumQyYUX4ODEkZHVpJQwCHEf/o/P/qU7PUmBPcQZLsqhgq2\n\t3s2g==","X-Gm-Message-State":"AOJu0YxkABS0vCFSe3k2d1NL7twlMNSt9bx3taz7CNpfx1B8aL+it464\n\tHn+J+1AkQG2D5LQlu4UqFT/lGTGLrxtC+f87DVUVALQS2QP5dc/OPbtdGLjNd3Vyp/XuGX8TXJp\n\tsGAzfjrjQSN1nCdF5QE3VCjWmp4zqiFttX5CQgEvWBXxlUmO1ovpo","X-Gm-Gg":"ASbGnctZNtANBtYWXGFUCyNm4R7JPw6hjldPX8ISAJ+L4BSur5KTVGIJtjaPWZiNYUN\n\tI9wVdXTIxTLg31/TBbNRFjEwpTEOsIbAvxDSTBq/3zoTmaq9RvuuBybRYJq+vkfbLc6mErk/NLL\n\tbqGONrQX0vaA15UUe3RTGxIs02iGJqheuX76IyqprSPeb/Wn8l5Oie9jnSvLSYoaQVXrhxwLUzH\n\tfYCrtX1pVu8eQ==","X-Google-Smtp-Source":"AGHT+IFRTW0NXqSY+9mD9bMpNMwcxp+OXJQb86SfwfOOm0k8eOQxk/jC7X1kWc8P5epiT9w9QjXK+daHXK1hKvRDs9U=","X-Received":"by 2002:a05:6102:3a0b:b0:4c3:64f6:861d with SMTP id\n\tada2fe7eead31-4ecc7690ac7mr1483730137.7.1750942406615;\n\tThu, 26 Jun 2025 05:53:26 -0700 (PDT)","MIME-Version":"1.0","References":"<20250625084212.858487-1-naush@raspberrypi.com>\n\t<20250625084212.858487-4-naush@raspberrypi.com>\n\t<20250626124436.GL8738@pendragon.ideasonboard.com>","In-Reply-To":"<20250626124436.GL8738@pendragon.ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Thu, 26 Jun 2025 13:52:51 +0100","X-Gm-Features":"Ac12FXwSK3YMJBzivQVC9P-pu40mQF6VfM5OJRu3zX2KAhHh2hv3VsBbUYAwmJA","Message-ID":"<CAEmqJPpV0pNO=LeRivm2_VQV9JUO2xuFPzd==N1aCMxFyr7a3Q@mail.gmail.com>","Subject":"Re: [PATCH v1 3/3] pipeline: rpi: Set a default route for entities\n\twhere applicable","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, dave.stevenson@raspberrypi.com","Content-Type":"text/plain; charset=\"UTF-8\"","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":34661,"web_url":"https://patchwork.libcamera.org/comment/34661/","msgid":"<20250626130247.GO8738@pendragon.ideasonboard.com>","date":"2025-06-26T13:02:47","subject":"Re: [PATCH v1 3/3] pipeline: rpi: Set a default route for entities\n\twhere applicable","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Thu, Jun 26, 2025 at 01:52:51PM +0100, Naushir Patuck wrote:\n> On Thu, 26 Jun 2025 at 13:45, Laurent Pinchart\n> <laurent.pinchart@ideasonboard.com> wrote:\n> >\n> > Hi Naush,\n> >\n> > Thank you for the patch.\n> >\n> > On Wed, Jun 25, 2025 at 09:41:18AM +0100, Naushir Patuck wrote:\n> > > If an entity advertises streams support, and no routes are active, set\n> > > a default active route for Stream 0:[pad 0 -> pad 1]. This allows\n> > > serialiser/deserialiser devices to run without user setup in the default\n> > > case.\n> > >\n> > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > ---\n> > >  .../pipeline/rpi/common/pipeline_base.cpp     | 33 ++++++++++++++++++-\n> > >  1 file changed, 32 insertions(+), 1 deletion(-)\n> > >\n> > > diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> > > index 219bd81cc63a..eafbf702ed0b 100644\n> > > --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> > > +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> > > @@ -107,7 +107,38 @@ int configureMediaDevices(std::vector<std::pair<std::unique_ptr<V4L2Subdevice>,\n> > >               }\n> > >\n> > >               /*\n> > > -              * Next, enable the entity -> entity links, and setup the pad format.\n> > > +              * Next, setup the stream routing if needed. By default this\n> > > +              * sets up Stream 0:[pad 0 -> pad 1] route. Anything more\n> > > +              * complicated must currently be setup and activated externally.\n> > > +              *\n> > > +              * If we find any active routes, we don't change anything.\n> > > +              */\n> > > +             if (device->caps().hasStreams()) {\n> > > +                     V4L2Subdevice::Routing routing;\n> > > +\n> > > +                     ret = device->getRouting(&routing);\n> > > +                     if (ret)\n> > > +                             return ret;\n> > > +\n> > > +                     /* If we find an active route, don't do anything more. */\n> > > +                     for (auto const &r : routing) {\n> > > +                             if (r.flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)\n> > > +                                     return 0;\n> > > +                     }\n> > > +\n> > > +                     /*\n> > > +                      * Set up a default Stream 0:[pad 0 -> pad 1] route if nothing\n> > > +                      * has already been set.\n> > > +                      */\n> > > +                     routing = { { V4L2Subdevice::Stream{ 0, 0 },\n> > > +                                   V4L2Subdevice::Stream{ 1, 0 },\n> > > +                                   V4L2_SUBDEV_ROUTE_FL_ACTIVE } };\n> >\n> > That's really shooting in the dark :-(\n> >\n> > We should model serializers and deserializers with dedicated objects,\n> > like we do with the CameraSensor class.\n> \n> Sadly I agree, but how can we expose this to the user/application to\n> configure for their needs?\n\nI don't think we need to, at least not yet (*). The main issue to solve\nin my opinion is that individual pipeline handlers should not have to\nmanually handle serializers, deserializers and muxes. The part of the\npipeline in front of the CSI-2 receiver should be handled by helpers\nclasses shared by pipeline handlers. That will give us the ability to\nimplement specialized classes for specific components, and applying a\ndefault configuration matching their needs. After that, we can work on\nexposing some control over that pipeline to applications.\n\n* I was going to write that I am for once limiting the amount of\nrequested yak shaving, but looking at what folows the first sentence,\nI'm not so sure :-)\n\n> > > +\n> > > +                     ret = device->setRouting(&routing);\n> > > +             }\n> > > +\n> > > +             /*\n> > > +              * Finally, enable the entity -> entity links, and setup the pad format.\n> > >                *\n> > >                * \\todo Some bridge devices may chainge the media bus code, so we\n> > >                * ought to read the source pad format and propagate it to the sink pad.","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 0DFBCC3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 26 Jun 2025 13:03:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F2C4E68DF3;\n\tThu, 26 Jun 2025 15:03:14 +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 D088868DE8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 26 Jun 2025 15:03:12 +0200 (CEST)","from pendragon.ideasonboard.com (85-76-34-12-nat.elisa-mobile.fi\n\t[85.76.34.12])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 637F96AE;\n\tThu, 26 Jun 2025 15:02:53 +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=\"bJcwkdUY\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1750942974;\n\tbh=S0MYayNZetcqw8sHZ3hXBuHuiuCBL7lvVNg6RtMsIBU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=bJcwkdUYOzOTX4LYLIr2wCmFw/KRTrdWhJ5MfdiWSFXhNZpcKZVozvjA/QMQubjBc\n\tR7+LvEes5mu64VoGbkGfKtu1aECeWGKmsmig/FkJz8R7FclYjKuJK7Bg+5vHvhylTJ\n\tf34Zt1CkbeikkvhOyqnHAIC0SvaaNFnkNHCL4Vl0=","Date":"Thu, 26 Jun 2025 16:02:47 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org, dave.stevenson@raspberrypi.com","Subject":"Re: [PATCH v1 3/3] pipeline: rpi: Set a default route for entities\n\twhere applicable","Message-ID":"<20250626130247.GO8738@pendragon.ideasonboard.com>","References":"<20250625084212.858487-1-naush@raspberrypi.com>\n\t<20250625084212.858487-4-naush@raspberrypi.com>\n\t<20250626124436.GL8738@pendragon.ideasonboard.com>\n\t<CAEmqJPpV0pNO=LeRivm2_VQV9JUO2xuFPzd==N1aCMxFyr7a3Q@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAEmqJPpV0pNO=LeRivm2_VQV9JUO2xuFPzd==N1aCMxFyr7a3Q@mail.gmail.com>","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>"}}]