[{"id":25702,"web_url":"https://patchwork.libcamera.org/comment/25702/","msgid":"<CAHW6GY+zMMYDwdX-tZSQCUC3xZ+T=1BcAK1RLv9CDKT6ZBCjiw@mail.gmail.com>","date":"2022-11-01T11:43:39","subject":"Re: [libcamera-devel] [PATCH v1 01/10] libcamera: pipeline: Add a\n\tplatform configuration file helper","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Naush\n\nThanks for this patch!\n\nOn Fri, 14 Oct 2022 at 14:18, Naushir Patuck via libcamera-devel\n<libcamera-devel@lists.libcamera.org> wrote:\n>\n> Add a new helper function PipelineHandler::configurationFile() that returns\n> the full path of a named configuration file. This configuration file may be read\n> by pipeline handlers for platform specific configuration parameters on\n> initialisation.\n>\n> The mechanism for searching for the configuration file is similar to the IPA\n> configuration file:\n>\n> - In the source tree if libcamera is not installed\n> - Otherwise in standard system locations (etc and share directories).\n>\n> When stored in the source tree, configuration files shall be located in a 'data'\n> subdirectory of their respective pipeline handler directory.\n>\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  include/libcamera/internal/pipeline_handler.h |  2 +\n>  src/libcamera/pipeline_handler.cpp            | 57 +++++++++++++++++++\n>  2 files changed, 59 insertions(+)\n>\n> diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h\n> index b6139a88d421..6648975f15de 100644\n> --- a/include/libcamera/internal/pipeline_handler.h\n> +++ b/include/libcamera/internal/pipeline_handler.h\n> @@ -74,6 +74,8 @@ protected:\n>         virtual int queueRequestDevice(Camera *camera, Request *request) = 0;\n>         virtual void stopDevice(Camera *camera) = 0;\n>\n> +       std::string configurationFile(const std::string &name) const;\n> +\n>         CameraManager *manager_;\n>\n>  private:\n> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n> index 588a3db30e82..998dcece05f2 100644\n> --- a/src/libcamera/pipeline_handler.cpp\n> +++ b/src/libcamera/pipeline_handler.cpp\n> @@ -8,6 +8,7 @@\n>  #include \"libcamera/internal/pipeline_handler.h\"\n>\n>  #include <chrono>\n> +#include <sys/stat.h>\n>  #include <sys/sysmacros.h>\n>\n>  #include <libcamera/base/log.h>\n> @@ -625,6 +626,62 @@ void PipelineHandler::disconnect()\n>         }\n>  }\n>\n> +/**\n> + * \\brief Retrieve the absolute path to a platform configuration file\n> + * \\param[in] name The configuration file name\n> + *\n> + * This function locates a named platform configuration file and returns\n> + * its absolute path to the pipeline handler. It searches the following\n> + * directories, in order:\n> + *\n> + * - If libcamera is not installed, the src/libcamera/pipeline/ directory within\n> + *   the source tree ; otherwise\n> + * - The system data (share/libcamera/pipeline/) directory.\n> + *\n> + * The system directories are not searched if libcamera is not installed.\n> + *\n> + * \\return The full path to the pipeline handler configuration file, or an empty\n> + * string if no configuration file can be found\n> + */\n> +std::string PipelineHandler::configurationFile(const std::string &name) const\n> +{\n> +       struct stat statbuf;\n> +       int ret;\n> +\n> +       std::string root = utils::libcameraSourcePath();\n> +       if (!root.empty()) {\n> +               /*\n> +                * When libcamera is used before it is installed, load\n> +                * configuration files from the source directory. The\n> +                * configuration files are then located in the 'data'\n> +                * subdirectory of the corresponding IPA module.\n> +                */\n> +               std::string confDir = root + \"src/libcamera/pipeline/data\";\n> +\n> +               LOG(Pipeline, Info)\n> +                       << \"libcamera is not installed. Loading platform configuration file from '\"\n> +                       << confDir << \"'\";\n> +\n> +               std::string confPath = confDir + \"/\" + name;\n> +               ret = stat(confPath.c_str(), &statbuf);\n> +               if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)\n\nI guess I was just wondering slightly whether this is worth checking\ngiven that we fail with a helpful message anyway if we can't open the\nfile, but it's fine like this too, so probably just ignore me!\n\nReviewed-by: David Plowman <david.plowman@raspberrypi.com>\n\nThanks!\nDavid\n\n> +                       return confPath;\n> +\n> +       } else {\n> +               /* Else look in the system locations. */\n> +               std::string confPath = std::string(LIBCAMERA_DATA_DIR) + \"/pipeline/\" + name;\n> +               ret = stat(confPath.c_str(), &statbuf);\n> +               if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)\n> +                       return confPath;\n> +       }\n> +\n> +       LOG(Pipeline, Error)\n> +               << \"Configuration file '\" << name\n> +               << \"' not found for pipeline handler '\" << PipelineHandler::name() << \"'\";\n> +\n> +       return std::string();\n> +}\n> +\n>  /**\n>   * \\var PipelineHandler::manager_\n>   * \\brief The Camera manager associated with the pipeline handler\n> --\n> 2.25.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 794E2BDB16\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  1 Nov 2022 11:43:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C13A16303F;\n\tTue,  1 Nov 2022 12:43:54 +0100 (CET)","from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com\n\t[IPv6:2607:f8b0:4864:20::1032])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BAC2A63009\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  1 Nov 2022 12:43:52 +0100 (CET)","by mail-pj1-x1032.google.com with SMTP id gw22so5219pjb.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 01 Nov 2022 04:43:52 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1667303034;\n\tbh=jnEwyU2sR5AKU9omJtdj0BtvYJJB6jIDuHk4NmVE9q8=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=WdnjoUV5QLFhkD/LM21aRQY9hEZ49tZ/LL1LqK8e8mkh92WISGQk7CQ+7mulFT6HK\n\tFcF6bkdM1v257q08mMmCreXCBcFvEYaWc3r8KHqMFLbwlMlESrQlUjPum/nNSQtI76\n\tOSmdrrrOs8C3w30gY0rNQ+fUm8nXHWaBAY1ywb1v8jT72oZsVUzg6bF1EJa3jUnRAh\n\tGP+dG0StLw34RPoW0+At11JDDQMYqzuH+Jgh5CpM8c+qGrTpJaTdZCLd+TVj6WcOBl\n\t7gmp4f6C6IwV7RVG8Ig2aIMHLFhnqhSL9pE+uRDu+EJJlvDZgNdQyczUICXiOiOngc\n\tGYYheYXbZDd3A==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\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=scAIZHS0WkiNTHPkYbPUnYgcJeCwtUVJA99c8+NQ5/s=;\n\tb=OsLYmneu689f812c8z5G+UM8+U7ROtv80afEw8F2NORUMUOeobL3VbgHLOVaq78Bno\n\tDAXMxfJfhw7bMVtL21s9vWvNXGSKYcWzdrKZ2PohcnTgZGR2jgwe3r3MuHPPThiH3w89\n\tdCJorKaIWKtFqgRlDAt7JTP6uFX4sW8QqzQB2rNNNYalGUcailTaHHHUMoBTtK+Yd+s6\n\tghhLDXImAcRqdhwWyMYgRXBfn3azoQqKKUt4P1HCMqbPH4Bb9gT1WYnqtjmvCxtoqtxF\n\tyhAJZopLfLJCSAl/Lz8lGGArKue8vdeHr5qzNU+RrVaO7gpJZvNQNJHUf51kDhM1AY9w\n\twKlg=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"OsLYmneu\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\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=scAIZHS0WkiNTHPkYbPUnYgcJeCwtUVJA99c8+NQ5/s=;\n\tb=eYCaE/EHMSXkyLH/00+bWxVZucDXg5KNepznUz1LvqxKFW2e6uOSdgY3ROdaZyk2kJ\n\tRvQFhJSWUlHYlYrnSyxTeAar6Iz1W7h9+aUDW9bzbVMM1YMJGP0sywxZ2MtXx2JPgy3Y\n\tdAp9WyeAYYaKy1KciDFVK2JoCqK2MAFiX4PheoglaUWB1nYG5vWD1Yv2ExvOaWVnkfPA\n\t8p53DTXz72teAnsEfD4s/acypAYXKYfxDIxcpNe/XyvSsYpbXmsssLfFb/AAEtJY4vzL\n\twfmUhSva1x3ole8NdNnCMTB0VAiyrGMcFa0BvAaWFFlzoxa8ajz2OMUY7wYpZYuASSYr\n\tFDdQ==","X-Gm-Message-State":"ACrzQf26wANJd/F0Qnx2uv4n/d3Yet4aTYny/CWhdG6XZ+McZIr/l3Ru\n\tGpkQMI6sdw2bHrfxelcZtAgIVK7AuhyEtxo0sAA7Vw==","X-Google-Smtp-Source":"AMsMyM6GbKseLJ2V2m4Trmi7CrBL8JyUO2kS/Zz2TFEiu1GDOXlma2ptA/qOSMMqZHzlLp98gPs2pmeigVlcSA6FDX4=","X-Received":"by 2002:a17:90b:4f43:b0:214:21d4:503e with SMTP id\n\tpj3-20020a17090b4f4300b0021421d4503emr90617pjb.235.1667303030987;\n\tTue, 01 Nov 2022 04:43:50 -0700 (PDT)","MIME-Version":"1.0","References":"<20221014131846.27169-1-naush@raspberrypi.com>\n\t<20221014131846.27169-2-naush@raspberrypi.com>","In-Reply-To":"<20221014131846.27169-2-naush@raspberrypi.com>","Date":"Tue, 1 Nov 2022 11:43:39 +0000","Message-ID":"<CAHW6GY+zMMYDwdX-tZSQCUC3xZ+T=1BcAK1RLv9CDKT6ZBCjiw@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v1 01/10] libcamera: pipeline: Add a\n\tplatform configuration file helper","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>","From":"David Plowman via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"David Plowman <david.plowman@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25921,"web_url":"https://patchwork.libcamera.org/comment/25921/","msgid":"<CAEmqJPrEB4GGpPkXdVAm=_=4UnXS5CqWOu1QLc+M-dYO2ALiRQ@mail.gmail.com>","date":"2022-11-29T10:20:51","subject":"Re: [libcamera-devel] [PATCH v1 01/10] libcamera: pipeline: Add a\n\tplatform configuration file helper","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi David,\n\nThank you for your feedback!\n\nOn Tue, 1 Nov 2022 at 11:43, David Plowman <david.plowman@raspberrypi.com>\nwrote:\n\n> Hi Naush\n>\n> Thanks for this patch!\n>\n> On Fri, 14 Oct 2022 at 14:18, Naushir Patuck via libcamera-devel\n> <libcamera-devel@lists.libcamera.org> wrote:\n> >\n> > Add a new helper function PipelineHandler::configurationFile() that\n> returns\n> > the full path of a named configuration file. This configuration file may\n> be read\n> > by pipeline handlers for platform specific configuration parameters on\n> > initialisation.\n> >\n> > The mechanism for searching for the configuration file is similar to the\n> IPA\n> > configuration file:\n> >\n> > - In the source tree if libcamera is not installed\n> > - Otherwise in standard system locations (etc and share directories).\n> >\n> > When stored in the source tree, configuration files shall be located in\n> a 'data'\n> > subdirectory of their respective pipeline handler directory.\n> >\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  include/libcamera/internal/pipeline_handler.h |  2 +\n> >  src/libcamera/pipeline_handler.cpp            | 57 +++++++++++++++++++\n> >  2 files changed, 59 insertions(+)\n> >\n> > diff --git a/include/libcamera/internal/pipeline_handler.h\n> b/include/libcamera/internal/pipeline_handler.h\n> > index b6139a88d421..6648975f15de 100644\n> > --- a/include/libcamera/internal/pipeline_handler.h\n> > +++ b/include/libcamera/internal/pipeline_handler.h\n> > @@ -74,6 +74,8 @@ protected:\n> >         virtual int queueRequestDevice(Camera *camera, Request *request)\n> = 0;\n> >         virtual void stopDevice(Camera *camera) = 0;\n> >\n> > +       std::string configurationFile(const std::string &name) const;\n> > +\n> >         CameraManager *manager_;\n> >\n> >  private:\n> > diff --git a/src/libcamera/pipeline_handler.cpp\n> b/src/libcamera/pipeline_handler.cpp\n> > index 588a3db30e82..998dcece05f2 100644\n> > --- a/src/libcamera/pipeline_handler.cpp\n> > +++ b/src/libcamera/pipeline_handler.cpp\n> > @@ -8,6 +8,7 @@\n> >  #include \"libcamera/internal/pipeline_handler.h\"\n> >\n> >  #include <chrono>\n> > +#include <sys/stat.h>\n> >  #include <sys/sysmacros.h>\n> >\n> >  #include <libcamera/base/log.h>\n> > @@ -625,6 +626,62 @@ void PipelineHandler::disconnect()\n> >         }\n> >  }\n> >\n> > +/**\n> > + * \\brief Retrieve the absolute path to a platform configuration file\n> > + * \\param[in] name The configuration file name\n> > + *\n> > + * This function locates a named platform configuration file and returns\n> > + * its absolute path to the pipeline handler. It searches the following\n> > + * directories, in order:\n> > + *\n> > + * - If libcamera is not installed, the src/libcamera/pipeline/\n> directory within\n> > + *   the source tree ; otherwise\n> > + * - The system data (share/libcamera/pipeline/) directory.\n> > + *\n> > + * The system directories are not searched if libcamera is not\n> installed.\n> > + *\n> > + * \\return The full path to the pipeline handler configuration file, or\n> an empty\n> > + * string if no configuration file can be found\n> > + */\n> > +std::string PipelineHandler::configurationFile(const std::string &name)\n> const\n> > +{\n> > +       struct stat statbuf;\n> > +       int ret;\n> > +\n> > +       std::string root = utils::libcameraSourcePath();\n> > +       if (!root.empty()) {\n> > +               /*\n> > +                * When libcamera is used before it is installed, load\n> > +                * configuration files from the source directory. The\n> > +                * configuration files are then located in the 'data'\n> > +                * subdirectory of the corresponding IPA module.\n> > +                */\n> > +               std::string confDir = root +\n> \"src/libcamera/pipeline/data\";\n> > +\n> > +               LOG(Pipeline, Info)\n> > +                       << \"libcamera is not installed. Loading platform\n> configuration file from '\"\n> > +                       << confDir << \"'\";\n> > +\n> > +               std::string confPath = confDir + \"/\" + name;\n> > +               ret = stat(confPath.c_str(), &statbuf);\n> > +               if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)\n>\n> I guess I was just wondering slightly whether this is worth checking\n> given that we fail with a helpful message anyway if we can't open the\n> file, but it's fine like this too, so probably just ignore me!\n>\n\nThis function is (mostly) a duplicate of what is used for the tuning file,\nso I'll probably leave this check in to be consistent.\n\nRegards,\nNaush\n\n\n>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n>\n> Thanks!\n> David\n>\n> > +                       return confPath;\n> > +\n> > +       } else {\n> > +               /* Else look in the system locations. */\n> > +               std::string confPath = std::string(LIBCAMERA_DATA_DIR) +\n> \"/pipeline/\" + name;\n> > +               ret = stat(confPath.c_str(), &statbuf);\n> > +               if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)\n> > +                       return confPath;\n> > +       }\n> > +\n> > +       LOG(Pipeline, Error)\n> > +               << \"Configuration file '\" << name\n> > +               << \"' not found for pipeline handler '\" <<\n> PipelineHandler::name() << \"'\";\n> > +\n> > +       return std::string();\n> > +}\n> > +\n> >  /**\n> >   * \\var PipelineHandler::manager_\n> >   * \\brief The Camera manager associated with the pipeline handler\n> > --\n> > 2.25.1\n> >\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 CB4E1BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 29 Nov 2022 10:21:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2071A6333A;\n\tTue, 29 Nov 2022 11:21:09 +0100 (CET)","from mail-il1-x136.google.com (mail-il1-x136.google.com\n\t[IPv6:2607:f8b0:4864:20::136])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0B32863314\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 29 Nov 2022 11:21:07 +0100 (CET)","by mail-il1-x136.google.com with SMTP id o13so6379738ilc.7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 29 Nov 2022 02:21:06 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1669717269;\n\tbh=tPdxeRmHI4SZztzNr0sRKWKhYDt0PLp0tBjAqmYGQm8=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=3RhyjzIMvdeUEfMwA1CmED2mYfns68itFkjCbM4d7QFWd6E7Le1XP9Y2wSzcWBVEx\n\tGIKY9GcMOSaiiiH2Utcl3HFtb4xnuF+1JcrLu7LLcx0amzcSpy9HYQ6gWmECEZJ/y5\n\tjGHi3uVjpC6fkPzxg0nIXOX1k3pENf/UVT1DvYpkyXMD34xd7o+M/oYRezcpyr7xtk\n\tXPW1rGRQli7n6olP5qB0jZpva4Jwk37+UeT+2f//IIwkrqhRSEoswr531D8eu1Nyfn\n\tScOpgWlFKHnyQhahmkjCYy3dKY7c2j/N0S2CYoxq5bGLyDPm61vxkaYuC1c/pRiHjw\n\tgOsBkD0M5vXnw==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\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=BU2CkLBUfIVDZrDPPSxnsDTEzoejT88al2uPLTHuMn4=;\n\tb=qekU58UbJqWZYh4blHUCPrJkWDcunec3Fzgiw6DkWmgPIgqT/wNdA2gFTgwQacLqUb\n\tMDFYMIKRfcM1gQ4GZpFeRdGtoIPi9u2jt0S/LEEghZz71pDKgXWVIcbkSqmGS+gFKkki\n\t25enVc7fnUpL9DGWJN4KAwtHBQw5qdnuYDbzVOSukuZVJ8WcqP3nxRy+evTCtjbLfkhM\n\tSmMv9d1Bsgm63sH1HkRZXPeag1HPWXKdQyo1vbdfc4J/5zk00ucS/7T+3QU3NdSoOmjI\n\t7djXqcQnI/zTY57On0w62ALZYK4/yQB0xogte6XTQffhifgkaqQN+NMudbxsuEx05VNo\n\twXlg=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"qekU58Ub\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\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=BU2CkLBUfIVDZrDPPSxnsDTEzoejT88al2uPLTHuMn4=;\n\tb=WvuSiZn8osDjp3fmQnQwBQMCqgPRElYFkuIgOxCYKuOQHq61r+mulUbsysHcBj5TMx\n\tAXmT9U9tqVwoT5HGCQUvio2xduvinoMC6Jn8fiXJt+x8uN25Qe5qFQHxsPlnf3WToSvr\n\tOBtX8Mq2J1+x8yrmKBuGiH+LNGowjK7JSW1ITpLzFl7l8tHtq+ZkVWMNfQrklSN2fgI1\n\t7OFagIt0Bnc9KdEhxJWbSJXp1JT2JSSn2Cu/mgN/EzSJc9sk8MpFQDWSWoJHpCOxh+Pz\n\tNRqmydSEq5FOhno2KfXrVorF4TNPdiAhIYGfJQ+ghOC05RM6skoACU4KdAe7GYqC2V7F\n\tn8DQ==","X-Gm-Message-State":"ANoB5pkOkpZx/15JN7I7rZP7/QNIJFkTHimy3M4YE13V23Ehk2OIuBVB\n\tozej6GXHbZmzmmNHzrKixNjZ0bMNJBaTxSYk98FlbQ==","X-Google-Smtp-Source":"AA0mqf61RBvs5IGO/EnM3Nm25FpSdplV7Dsw4FYU3UGRyLtuzUSKHFBItsDF6mWEMLL+KKVxckNADaNFqB44uh7up+g=","X-Received":"by 2002:a92:c707:0:b0:300:d514:d801 with SMTP id\n\ta7-20020a92c707000000b00300d514d801mr25394454ilp.91.1669717265773;\n\tTue, 29 Nov 2022 02:21:05 -0800 (PST)","MIME-Version":"1.0","References":"<20221014131846.27169-1-naush@raspberrypi.com>\n\t<20221014131846.27169-2-naush@raspberrypi.com>\n\t<CAHW6GY+zMMYDwdX-tZSQCUC3xZ+T=1BcAK1RLv9CDKT6ZBCjiw@mail.gmail.com>","In-Reply-To":"<CAHW6GY+zMMYDwdX-tZSQCUC3xZ+T=1BcAK1RLv9CDKT6ZBCjiw@mail.gmail.com>","Date":"Tue, 29 Nov 2022 10:20:51 +0000","Message-ID":"<CAEmqJPrEB4GGpPkXdVAm=_=4UnXS5CqWOu1QLc+M-dYO2ALiRQ@mail.gmail.com>","To":"David Plowman <david.plowman@raspberrypi.com>","Content-Type":"multipart/alternative; boundary=\"0000000000008092a805ee995835\"","Subject":"Re: [libcamera-devel] [PATCH v1 01/10] libcamera: pipeline: Add a\n\tplatform configuration file helper","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>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]