[{"id":11841,"web_url":"https://patchwork.libcamera.org/comment/11841/","msgid":"<20200804181930.GG6075@pendragon.ideasonboard.com>","date":"2020-08-04T18:19:30","subject":"Re: [libcamera-devel] [PATCH v7 3/9] libcamera: v4l2_device: Add\n\tmethod to lookup device path","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nThank you for the patch.\n\nOn Tue, Aug 04, 2020 at 06:13:52PM +0200, Niklas Söderlund wrote:\n> Add a method to lookup a V4L2 devices path in sysfs.\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n> * Changes since v6\n> - Use sysfs:: helper.\n> - Do not try to return std::string { nullptr } on error.\n> \n> * Changes since v5\n> - Expand documentation\n> - Use DeviceEnumerator interface to lookup device path\n> - Include stdlib.h\n> - Use realpath(..., nullptr); ...; free();\n> \n> * Changes since v3\n> - s/the device path/the device path in sysfs/\n> ---\n>  include/libcamera/internal/v4l2_device.h |  1 +\n>  src/libcamera/v4l2_device.cpp            | 28 ++++++++++++++++++++++++\n>  2 files changed, 29 insertions(+)\n> \n> diff --git a/include/libcamera/internal/v4l2_device.h b/include/libcamera/internal/v4l2_device.h\n> index bf643f2ec966bb33..3b605aab343b3b94 100644\n> --- a/include/libcamera/internal/v4l2_device.h\n> +++ b/include/libcamera/internal/v4l2_device.h\n> @@ -30,6 +30,7 @@ public:\n>  \tint setControls(ControlList *ctrls);\n>  \n>  \tconst std::string &deviceNode() const { return deviceNode_; }\n> +\tstd::string devicePath() const;\n>  \n>  protected:\n>  \tV4L2Device(const std::string &deviceNode);\n> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> index 56ea1ddda2c1425f..e55deabed46e30d4 100644\n> --- a/src/libcamera/v4l2_device.cpp\n> +++ b/src/libcamera/v4l2_device.cpp\n> @@ -9,12 +9,15 @@\n>  \n>  #include <fcntl.h>\n>  #include <iomanip>\n> +#include <limits.h>\n> +#include <stdlib.h>\n>  #include <string.h>\n>  #include <sys/ioctl.h>\n>  #include <sys/syscall.h>\n>  #include <unistd.h>\n>  \n>  #include \"libcamera/internal/log.h\"\n> +#include \"libcamera/internal/sysfs.h\"\n>  #include \"libcamera/internal/utils.h\"\n>  #include \"libcamera/internal/v4l2_controls.h\"\n>  \n> @@ -350,6 +353,31 @@ int V4L2Device::setControls(ControlList *ctrls)\n>  \treturn ret;\n>  }\n>  \n> +/**\n> + * \\brief Retrieve the device path in sysfs\n> + *\n> + * This function returns the sysfs path to the physical device backing the V4L2\n> + * device. The path is guaranteed to be an absolute path, without any symbolic\n> + * link.\n\n\"It includes the sysfs mount point prefix.\"\n\n> + *\n> + * \\return The device path in sysfs\n> + */\n> +std::string V4L2Device::devicePath() const\n> +{\n> +\tstd::string devicePath = sysfs::charDevPath(deviceNode_) + \"/device\";\n> +\n> +\tchar *realPath = realpath(devicePath.c_str(), nullptr);\n> +\tif (!realPath) {\n> +\t\tLOG(V4L2, Fatal) << \"Can not resolve path for \" << devicePath;\n\ns/path/device path/ ?\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\t\treturn {};\n> +\t}\n> +\n> +\tstd::string path{ realPath };\n> +\tfree(realPath);\n> +\n> +\treturn path;\n> +}\n> +\n>  /**\n>   * \\brief Perform an IOCTL system call on the device node\n>   * \\param[in] request The IOCTL request code","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 718D8BD86F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  4 Aug 2020 18:19:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E7AC86054A;\n\tTue,  4 Aug 2020 20:19:44 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8076760545\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  4 Aug 2020 20:19:43 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E41DA27B;\n\tTue,  4 Aug 2020 20:19:42 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"jLr/pZ/Q\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1596565183;\n\tbh=qThAPjg68PJRfHgpEQJM/geCtFjo+16ZSOZ8IbBq+Fo=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=jLr/pZ/QFcNj0C6MKH4cq+YLxSIBVCEwc2wTgh522U9oHoIphtyya/4kPZlbjOo1y\n\tesJTv7jSGluoyE+OBbqMa1TY09w74DWQ4FCFPZ5adPaoxCuKn+B4+qJbnRqoErECPR\n\tBlwuiPr9XJu69Z+p+FY5EUAQ4BWudn6Nb411+MCo=","Date":"Tue, 4 Aug 2020 21:19:30 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200804181930.GG6075@pendragon.ideasonboard.com>","References":"<20200804161358.1628962-1-niklas.soderlund@ragnatech.se>\n\t<20200804161358.1628962-4-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200804161358.1628962-4-niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH v7 3/9] libcamera: v4l2_device: Add\n\tmethod to lookup device path","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":11864,"web_url":"https://patchwork.libcamera.org/comment/11864/","msgid":"<20200805072540.23t344elbk54zazm@uno.localdomain>","date":"2020-08-05T07:25:40","subject":"Re: [libcamera-devel] [PATCH v7 3/9] libcamera: v4l2_device: Add\n\tmethod to lookup device path","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Niklas,\n\nOn Tue, Aug 04, 2020 at 06:13:52PM +0200, Niklas Söderlund wrote:\n> Add a method to lookup a V4L2 devices path in sysfs.\n>\n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n> * Changes since v6\n> - Use sysfs:: helper.\n> - Do not try to return std::string { nullptr } on error.\n>\n> * Changes since v5\n> - Expand documentation\n> - Use DeviceEnumerator interface to lookup device path\n> - Include stdlib.h\n> - Use realpath(..., nullptr); ...; free();\n>\n> * Changes since v3\n> - s/the device path/the device path in sysfs/\n> ---\n>  include/libcamera/internal/v4l2_device.h |  1 +\n>  src/libcamera/v4l2_device.cpp            | 28 ++++++++++++++++++++++++\n>  2 files changed, 29 insertions(+)\n>\n> diff --git a/include/libcamera/internal/v4l2_device.h b/include/libcamera/internal/v4l2_device.h\n> index bf643f2ec966bb33..3b605aab343b3b94 100644\n> --- a/include/libcamera/internal/v4l2_device.h\n> +++ b/include/libcamera/internal/v4l2_device.h\n> @@ -30,6 +30,7 @@ public:\n>  \tint setControls(ControlList *ctrls);\n>\n>  \tconst std::string &deviceNode() const { return deviceNode_; }\n> +\tstd::string devicePath() const;\n>\n>  protected:\n>  \tV4L2Device(const std::string &deviceNode);\n> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> index 56ea1ddda2c1425f..e55deabed46e30d4 100644\n> --- a/src/libcamera/v4l2_device.cpp\n> +++ b/src/libcamera/v4l2_device.cpp\n> @@ -9,12 +9,15 @@\n>\n>  #include <fcntl.h>\n>  #include <iomanip>\n> +#include <limits.h>\n\nIs limits.h a leftover from when you used MAX_PATH ?\n\n> +#include <stdlib.h>\n>  #include <string.h>\n>  #include <sys/ioctl.h>\n>  #include <sys/syscall.h>\n>  #include <unistd.h>\n>\n>  #include \"libcamera/internal/log.h\"\n> +#include \"libcamera/internal/sysfs.h\"\n>  #include \"libcamera/internal/utils.h\"\n>  #include \"libcamera/internal/v4l2_controls.h\"\n>\n> @@ -350,6 +353,31 @@ int V4L2Device::setControls(ControlList *ctrls)\n>  \treturn ret;\n>  }\n>\n> +/**\n> + * \\brief Retrieve the device path in sysfs\n> + *\n> + * This function returns the sysfs path to the physical device backing the V4L2\n> + * device. The path is guaranteed to be an absolute path, without any symbolic\n> + * link.\n> + *\n> + * \\return The device path in sysfs\n> + */\n> +std::string V4L2Device::devicePath() const\n> +{\n> +\tstd::string devicePath = sysfs::charDevPath(deviceNode_) + \"/device\";\n> +\n> +\tchar *realPath = realpath(devicePath.c_str(), nullptr);\n> +\tif (!realPath) {\n> +\t\tLOG(V4L2, Fatal) << \"Can not resolve path for \" << devicePath;\n> +\t\treturn {};\n> +\t}\n> +\n> +\tstd::string path{ realPath };\n> +\tfree(realPath);\n> +\n> +\treturn path;\n> +}\n> +\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n>  /**\n>   * \\brief Perform an IOCTL system call on the device node\n>   * \\param[in] request The IOCTL request code\n> --\n> 2.28.0\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 68DEFBD86F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  5 Aug 2020 07:22:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0CED960554;\n\tWed,  5 Aug 2020 09:22:02 +0200 (CEST)","from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2FCD260554\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  5 Aug 2020 09:22:00 +0200 (CEST)","from uno.localdomain (93-34-118-233.ip49.fastwebnet.it\n\t[93.34.118.233]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 976B41BF20E;\n\tWed,  5 Aug 2020 07:21:59 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","Date":"Wed, 5 Aug 2020 09:25:40 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200805072540.23t344elbk54zazm@uno.localdomain>","References":"<20200804161358.1628962-1-niklas.soderlund@ragnatech.se>\n\t<20200804161358.1628962-4-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200804161358.1628962-4-niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH v7 3/9] libcamera: v4l2_device: Add\n\tmethod to lookup device path","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":11870,"web_url":"https://patchwork.libcamera.org/comment/11870/","msgid":"<20200805090824.GA2712616@oden.dyn.berto.se>","date":"2020-08-05T09:08:24","subject":"Re: [libcamera-devel] [PATCH v7 3/9] libcamera: v4l2_device: Add\n\tmethod to lookup device path","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nThanks for your feedback.\n\nOn 2020-08-05 09:25:40 +0200, Jacopo Mondi wrote:\n> Hi Niklas,\n> \n> On Tue, Aug 04, 2020 at 06:13:52PM +0200, Niklas Söderlund wrote:\n> > Add a method to lookup a V4L2 devices path in sysfs.\n> >\n> > Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> > ---\n> > * Changes since v6\n> > - Use sysfs:: helper.\n> > - Do not try to return std::string { nullptr } on error.\n> >\n> > * Changes since v5\n> > - Expand documentation\n> > - Use DeviceEnumerator interface to lookup device path\n> > - Include stdlib.h\n> > - Use realpath(..., nullptr); ...; free();\n> >\n> > * Changes since v3\n> > - s/the device path/the device path in sysfs/\n> > ---\n> >  include/libcamera/internal/v4l2_device.h |  1 +\n> >  src/libcamera/v4l2_device.cpp            | 28 ++++++++++++++++++++++++\n> >  2 files changed, 29 insertions(+)\n> >\n> > diff --git a/include/libcamera/internal/v4l2_device.h b/include/libcamera/internal/v4l2_device.h\n> > index bf643f2ec966bb33..3b605aab343b3b94 100644\n> > --- a/include/libcamera/internal/v4l2_device.h\n> > +++ b/include/libcamera/internal/v4l2_device.h\n> > @@ -30,6 +30,7 @@ public:\n> >  \tint setControls(ControlList *ctrls);\n> >\n> >  \tconst std::string &deviceNode() const { return deviceNode_; }\n> > +\tstd::string devicePath() const;\n> >\n> >  protected:\n> >  \tV4L2Device(const std::string &deviceNode);\n> > diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> > index 56ea1ddda2c1425f..e55deabed46e30d4 100644\n> > --- a/src/libcamera/v4l2_device.cpp\n> > +++ b/src/libcamera/v4l2_device.cpp\n> > @@ -9,12 +9,15 @@\n> >\n> >  #include <fcntl.h>\n> >  #include <iomanip>\n> > +#include <limits.h>\n> \n> Is limits.h a leftover from when you used MAX_PATH ?\n\nNo, it's required for realpath();\n\n> \n> > +#include <stdlib.h>\n> >  #include <string.h>\n> >  #include <sys/ioctl.h>\n> >  #include <sys/syscall.h>\n> >  #include <unistd.h>\n> >\n> >  #include \"libcamera/internal/log.h\"\n> > +#include \"libcamera/internal/sysfs.h\"\n> >  #include \"libcamera/internal/utils.h\"\n> >  #include \"libcamera/internal/v4l2_controls.h\"\n> >\n> > @@ -350,6 +353,31 @@ int V4L2Device::setControls(ControlList *ctrls)\n> >  \treturn ret;\n> >  }\n> >\n> > +/**\n> > + * \\brief Retrieve the device path in sysfs\n> > + *\n> > + * This function returns the sysfs path to the physical device backing the V4L2\n> > + * device. The path is guaranteed to be an absolute path, without any symbolic\n> > + * link.\n> > + *\n> > + * \\return The device path in sysfs\n> > + */\n> > +std::string V4L2Device::devicePath() const\n> > +{\n> > +\tstd::string devicePath = sysfs::charDevPath(deviceNode_) + \"/device\";\n> > +\n> > +\tchar *realPath = realpath(devicePath.c_str(), nullptr);\n> > +\tif (!realPath) {\n> > +\t\tLOG(V4L2, Fatal) << \"Can not resolve path for \" << devicePath;\n> > +\t\treturn {};\n> > +\t}\n> > +\n> > +\tstd::string path{ realPath };\n> > +\tfree(realPath);\n> > +\n> > +\treturn path;\n> > +}\n> > +\n> \n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> \n> Thanks\n>   j\n> \n> >  /**\n> >   * \\brief Perform an IOCTL system call on the device node\n> >   * \\param[in] request The IOCTL request code\n> > --\n> > 2.28.0\n> >\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel","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 4625DBD86F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  5 Aug 2020 09:08:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 28FBF60555;\n\tWed,  5 Aug 2020 11:08:28 +0200 (CEST)","from mail-lf1-x142.google.com (mail-lf1-x142.google.com\n\t[IPv6:2a00:1450:4864:20::142])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C346F60554\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  5 Aug 2020 11:08:26 +0200 (CEST)","by mail-lf1-x142.google.com with SMTP id h8so23854744lfp.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 05 Aug 2020 02:08:26 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tv23sm826639lfa.5.2020.08.05.02.08.25\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 05 Aug 2020 02:08:25 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"YO3UXUn3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=PE6huD/V7N/fzZ1drh5+q0kQEv6cCirSdSIu2Dz8oSc=;\n\tb=YO3UXUn3GbS0F1GPUFcKRxL3L948ksG4vVj0sc11pZi/rCCG5KQalpc7k1FBxgfsXv\n\thEU5GnhXfDraK5T8axtZwDdKUO9z3xPhqYBUrGHyXVb+m7EYVybJWeKVOh7R4OqI2h6L\n\t5oGLGmaR8gr3MVFoW8hKZXJqt5KxUgtyP5weDb7DOrcfgGH7GqW1thAt0lFX9aHhwW3A\n\t5u972r1K73HcekB1NdSbviamUtUee/AU3HNQBBV3FnQ5cYXnlTWD4HhQgk/lSSgKTBZH\n\tBFOqUZQDftmdq/Qqrx2BBi3v8evaZ1jwgpmjWfAAoHB97Ca2he7ahnGvmCAICIaDplLK\n\tKT3w==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=PE6huD/V7N/fzZ1drh5+q0kQEv6cCirSdSIu2Dz8oSc=;\n\tb=sqzfpRwAd0/d8m0D3Z3eIcjsUwc6bbmEIBVjok/wqJE7eKawInILPYesTvfGPF8JWh\n\t08rqFer2cyc25IdjDlzajooGy8v25DoE356oyzgFkNy94rB0hWA437EN+wD98vXHapLr\n\tkX+O56XkmVyllZ1ALc/ruJ1P1lLK1y+wQpvrkluGiLMpK8Ur3SbYTXNzrOideKpBJVge\n\t4e4r0eydVkQLqTS4fS6XhbUux4DiUOoqES/DvkRTYbU0b9ofRU6QUOYicqvkjzU4By4B\n\tWU/2LNvA+4tQmUtQXAswawixy+QuG6QGYNGB9qElcdDt7kHqvineqXV4DPquf05fdjSy\n\ttBAw==","X-Gm-Message-State":"AOAM530IbVoXTeBlvE6EQDsVVDq/CVtikFQo8r9f53ClBT3cE2i9HYjF\n\tTE/3PdJ2lta1FcxwGwzmsD+krjbDdyc=","X-Google-Smtp-Source":"ABdhPJwBh1ooRvtNFMdXX/7lrHaPy0vCD0Z8B6/nIjxvSahkAVSU5CxwftPw41mfWM+RKbkVGkavOw==","X-Received":"by 2002:a19:4844:: with SMTP id\n\tv65mr1158067lfa.184.1596618506086; \n\tWed, 05 Aug 2020 02:08:26 -0700 (PDT)","Date":"Wed, 5 Aug 2020 11:08:24 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200805090824.GA2712616@oden.dyn.berto.se>","References":"<20200804161358.1628962-1-niklas.soderlund@ragnatech.se>\n\t<20200804161358.1628962-4-niklas.soderlund@ragnatech.se>\n\t<20200805072540.23t344elbk54zazm@uno.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200805072540.23t344elbk54zazm@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH v7 3/9] libcamera: v4l2_device: Add\n\tmethod to lookup device path","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]