[{"id":15315,"web_url":"https://patchwork.libcamera.org/comment/15315/","msgid":"<3253b67b-4988-b31a-0cb5-5e88ec01851b@ideasonboard.com>","date":"2021-02-25T14:48:08","subject":"Re: [libcamera-devel] [PATCH 3/3] cros: Support the new cros camera\n\tAPI with set_up and tear_down","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Paul,\n\na few drive by comments:\n\nOn 25/02/2021 10:42, Paul Elder wrote:\n> Implement and expose the symbol and functions that the new cros camera\n> API requires. Since we don't actually need them, leave them empty.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  src/cros/camera3_hal.cpp  | 21 +++++++++++++++++++++\n>  src/cros/meson.build      | 16 ++++++++++++++++\n>  src/libcamera/meson.build |  6 ++++++\n>  src/meson.build           |  4 ++++\n>  4 files changed, 47 insertions(+)\n>  create mode 100644 src/cros/camera3_hal.cpp\n>  create mode 100644 src/cros/meson.build\n> \n> diff --git a/src/cros/camera3_hal.cpp b/src/cros/camera3_hal.cpp\n> new file mode 100644\n> index 00000000..31ad36ac\n> --- /dev/null\n> +++ b/src/cros/camera3_hal.cpp\n> @@ -0,0 +1,21 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Google Inc.\n> + *\n> + * camera3_hal.cpp - cros-specific components of Android Camera HALv3 module\n\nChromeOS specific ?\n\n> + */\n> +\n> +#include <cros-camera/cros_camera_hal.h>\n> +\n> +static void set_up(cros::CameraMojoChannelManagerToken *token)\n> +{\n> +}\n> +\n> +static void tear_down()\n> +{\n> +}\n> +\n> +cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n> +\t.set_up = set_up,\n> +\t.tear_down = tear_down\n> +};\n> diff --git a/src/cros/meson.build b/src/cros/meson.build\n> new file mode 100644\n> index 00000000..31aa58c9\n> --- /dev/null\n> +++ b/src/cros/meson.build\n> @@ -0,0 +1,16 @@\n> +# SPDX-License-Identifier: CC0-1.0\n> +\n> +cros_hal_include_dir = '/mnt/host/source/src/aosp/external/libchrome'\n> +\n> +cros_hal_info_sources = files([\n> +    'camera3_hal.cpp',\n> +])\n> +\n> +cros_hal_info = static_library('cros_hal_info',\n> +                               cros_hal_info_sources,\n> +                               c_args : '-Wno-shadow',\n> +                               include_directories : [cros_includes,\n> +                                                      cros_hal_include_dir,\n> +                                                      android_includes])\n> +\n> +cros_hal_info_obj = cros_hal_info.extract_objects('camera3_hal.cpp')\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 4b5e33ce..c40eb41f 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -139,6 +139,11 @@ if android_enabled\n>      libcamera_deps += android_deps\n>  endif\n>  \n> +libcamera_objects = []\n> +if cros_enabled\n> +    libcamera_objects += cros_hal_info_obj\n> +endif\n> +\n>  # We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.\n>  # The build_rpath is stripped at install time by meson, so we determine at\n>  # runtime if the library is running from an installed location by checking\n> @@ -149,6 +154,7 @@ libcamera = shared_library('camera',\n>                             install : true,\n>                             link_with : libcamera_link_with,\n>                             include_directories : includes,\n> +                           objects : libcamera_objects,\n>                             build_rpath : '/',\n>                             dependencies : libcamera_deps)\n>  \n> diff --git a/src/meson.build b/src/meson.build\n> index 0b26ca70..ec85cc47 100644\n> --- a/src/meson.build\n> +++ b/src/meson.build\n> @@ -15,6 +15,10 @@ endif\n>  # are included directly into the libcamera library when this is enabled.\n>  subdir('android')\n>  \n> +if cros_enabled\n> +    subdir('cros')\n> +endif\n\nCan this be the same style as the other subdirs, where it's just\nsubdir('cros') here, but the subdir itself returns early if\n!cros_enabled or such?\n\n\n> +\n>  subdir('libcamera')\n>  subdir('ipa')\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 A3C33BD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Feb 2021 14:48:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1FE1A68A43;\n\tThu, 25 Feb 2021 15:48:13 +0100 (CET)","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 0397D602EE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Feb 2021 15:48:11 +0100 (CET)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 61F4A8AD;\n\tThu, 25 Feb 2021 15:48:11 +0100 (CET)"],"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=\"tCmlFTie\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1614264491;\n\tbh=5yqkOQ6xAtzr9iyBd/RwNHEp2jfDCy4VyGTqJUWJ9wM=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=tCmlFTiek6q/F0RGyV3x954kgAcS+H/cw1NQ1C2vgZzjkHd2AgaNipzuQhY5Q5kw5\n\tnsubzA2c/HTz/1dofzpGZZLztowOQ1sv4zKxU69fe8i/B9JEoOBxaIu53zNahAOeOb\n\ttggHJsGDmbbD8BUuv79mhhnmLvFLOIqvA9JVtQ5U=","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210225104217.108792-1-paul.elder@ideasonboard.com>\n\t<20210225104217.108792-4-paul.elder@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<3253b67b-4988-b31a-0cb5-5e88ec01851b@ideasonboard.com>","Date":"Thu, 25 Feb 2021 14:48:08 +0000","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20210225104217.108792-4-paul.elder@ideasonboard.com>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH 3/3] cros: Support the new cros camera\n\tAPI with set_up and tear_down","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>","Reply-To":"kieran.bingham@ideasonboard.com","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":15318,"web_url":"https://patchwork.libcamera.org/comment/15318/","msgid":"<20210225171917.2e4sfectpadcrbh5@uno.localdomain>","date":"2021-02-25T17:19:17","subject":"Re: [libcamera-devel] [PATCH 3/3] cros: Support the new cros camera\n\tAPI with set_up and tear_down","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul,\n\nOn Thu, Feb 25, 2021 at 07:42:17PM +0900, Paul Elder wrote:\n> Implement and expose the symbol and functions that the new cros camera\n> API requires. Since we don't actually need them, leave them empty.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  src/cros/camera3_hal.cpp  | 21 +++++++++++++++++++++\n>  src/cros/meson.build      | 16 ++++++++++++++++\n>  src/libcamera/meson.build |  6 ++++++\n>  src/meson.build           |  4 ++++\n>  4 files changed, 47 insertions(+)\n>  create mode 100644 src/cros/camera3_hal.cpp\n>  create mode 100644 src/cros/meson.build\n>\n> diff --git a/src/cros/camera3_hal.cpp b/src/cros/camera3_hal.cpp\n> new file mode 100644\n> index 00000000..31ad36ac\n> --- /dev/null\n> +++ b/src/cros/camera3_hal.cpp\n> @@ -0,0 +1,21 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Google Inc.\n> + *\n> + * camera3_hal.cpp - cros-specific components of Android Camera HALv3 module\n> + */\n> +\n> +#include <cros-camera/cros_camera_hal.h>\n> +\n> +static void set_up(cros::CameraMojoChannelManagerToken *token)\n> +{\n> +}\n> +\n> +static void tear_down()\n> +{\n> +}\n> +\n> +cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n\nI'm debated... AFAICT this is just a temporary workaround as the\ndependency on the CROS_CAMERA_HAL_INFO_SYM symbol should not be made\nmandatory in future.\n\nIf that's the case, should we really import all these headers instead\nof defining the two symbols we need and drop this file once the\nrequirement is dropped ?\n\n> +\t.set_up = set_up,\n> +\t.tear_down = tear_down\n> +};\n> diff --git a/src/cros/meson.build b/src/cros/meson.build\n> new file mode 100644\n> index 00000000..31aa58c9\n> --- /dev/null\n> +++ b/src/cros/meson.build\n> @@ -0,0 +1,16 @@\n> +# SPDX-License-Identifier: CC0-1.0\n> +\n> +cros_hal_include_dir = '/mnt/host/source/src/aosp/external/libchrome'\n> +\n> +cros_hal_info_sources = files([\n> +    'camera3_hal.cpp',\n> +])\n> +\n> +cros_hal_info = static_library('cros_hal_info',\n> +                               cros_hal_info_sources,\n> +                               c_args : '-Wno-shadow',\n> +                               include_directories : [cros_includes,\n> +                                                      cros_hal_include_dir,\n> +                                                      android_includes])\n> +\n> +cros_hal_info_obj = cros_hal_info.extract_objects('camera3_hal.cpp')\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 4b5e33ce..c40eb41f 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -139,6 +139,11 @@ if android_enabled\n>      libcamera_deps += android_deps\n>  endif\n>\n> +libcamera_objects = []\n> +if cros_enabled\n> +    libcamera_objects += cros_hal_info_obj\n> +endif\n> +\n\nCan't we create a static library object and link against it as we do\nfor android_camera_metadata ?\n\nBasically you can define the static library in src/android/meson.build\nand instruct libcamera to link against it conditionally to 'if cros'\nin src/libcamera/meson.build.\n\nBut maybe I'm overlooking something\n\n>  # We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.\n>  # The build_rpath is stripped at install time by meson, so we determine at\n>  # runtime if the library is running from an installed location by checking\n> @@ -149,6 +154,7 @@ libcamera = shared_library('camera',\n>                             install : true,\n>                             link_with : libcamera_link_with,\n>                             include_directories : includes,\n> +                           objects : libcamera_objects,\n>                             build_rpath : '/',\n>                             dependencies : libcamera_deps)\n>\n> diff --git a/src/meson.build b/src/meson.build\n> index 0b26ca70..ec85cc47 100644\n> --- a/src/meson.build\n> +++ b/src/meson.build\n> @@ -15,6 +15,10 @@ endif\n>  # are included directly into the libcamera library when this is enabled.\n>  subdir('android')\n>\n> +if cros_enabled\n> +    subdir('cros')\n> +endif\n> +\n>  subdir('libcamera')\n>  subdir('ipa')\n>\n> --\n> 2.27.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 29E21BD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Feb 2021 17:18:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9E25268A56;\n\tThu, 25 Feb 2021 18:18:50 +0100 (CET)","from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net\n\t[217.70.183.194])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AD5B868A51\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Feb 2021 18:18:49 +0100 (CET)","from uno.localdomain (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay2-d.mail.gandi.net (Postfix) with ESMTPSA id 15D394000F;\n\tThu, 25 Feb 2021 17:18:48 +0000 (UTC)"],"X-Originating-IP":"93.61.96.190","Date":"Thu, 25 Feb 2021 18:19:17 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20210225171917.2e4sfectpadcrbh5@uno.localdomain>","References":"<20210225104217.108792-1-paul.elder@ideasonboard.com>\n\t<20210225104217.108792-4-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210225104217.108792-4-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 3/3] cros: Support the new cros camera\n\tAPI with set_up and tear_down","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=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":15319,"web_url":"https://patchwork.libcamera.org/comment/15319/","msgid":"<YDfohgQjRZfxzfg5@pendragon.ideasonboard.com>","date":"2021-02-25T18:12:22","subject":"Re: [libcamera-devel] [PATCH 3/3] cros: Support the new cros camera\n\tAPI with set_up and tear_down","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Thu, Feb 25, 2021 at 06:19:17PM +0100, Jacopo Mondi wrote:\n> On Thu, Feb 25, 2021 at 07:42:17PM +0900, Paul Elder wrote:\n> > Implement and expose the symbol and functions that the new cros camera\n> > API requires. Since we don't actually need them, leave them empty.\n> >\n> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> > ---\n> >  src/cros/camera3_hal.cpp  | 21 +++++++++++++++++++++\n\nI'd store this in src/android/ and call it cros_camera3_hal.cpp.\n\n> >  src/cros/meson.build      | 16 ++++++++++++++++\n> >  src/libcamera/meson.build |  6 ++++++\n> >  src/meson.build           |  4 ++++\n> >  4 files changed, 47 insertions(+)\n> >  create mode 100644 src/cros/camera3_hal.cpp\n> >  create mode 100644 src/cros/meson.build\n> >\n> > diff --git a/src/cros/camera3_hal.cpp b/src/cros/camera3_hal.cpp\n> > new file mode 100644\n> > index 00000000..31ad36ac\n> > --- /dev/null\n> > +++ b/src/cros/camera3_hal.cpp\n> > @@ -0,0 +1,21 @@\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/*\n> > + * Copyright (C) 2021, Google Inc.\n> > + *\n> > + * camera3_hal.cpp - cros-specific components of Android Camera HALv3 module\n\ns/cros/Chrome OS/ (or, if you have to abbreviate it, CrOS.\n\n> > + */\n> > +\n> > +#include <cros-camera/cros_camera_hal.h>\n> > +\n> > +static void set_up(cros::CameraMojoChannelManagerToken *token)\n> > +{\n> > +}\n> > +\n> > +static void tear_down()\n> > +{\n> > +}\n> > +\n> > +cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n> \n> I'm debated... AFAICT this is just a temporary workaround as the\n> dependency on the CROS_CAMERA_HAL_INFO_SYM symbol should not be made\n> mandatory in future.\n> \n> If that's the case, should we really import all these headers instead\n> of defining the two symbols we need and drop this file once the\n> requirement is dropped ?\n\nI don't really like importing the headers much. Could we instead include\nthem from their location in the system ? CrOS uses BUILD.gn files for\nits build system, and and it integrates with pkg-config. See the\nBUILD.gn in src/platform2/camera/common/. If you define a meson\ndependency using the right package, its include directories should be\nuseable to access headers without importing anything.\n\n> > +\t.set_up = set_up,\n> > +\t.tear_down = tear_down\n> > +};\n> > diff --git a/src/cros/meson.build b/src/cros/meson.build\n> > new file mode 100644\n> > index 00000000..31aa58c9\n> > --- /dev/null\n> > +++ b/src/cros/meson.build\n> > @@ -0,0 +1,16 @@\n> > +# SPDX-License-Identifier: CC0-1.0\n> > +\n> > +cros_hal_include_dir = '/mnt/host/source/src/aosp/external/libchrome'\n\nSee above, we should use pkg-config and meson dependencies.\n\n> > +\n> > +cros_hal_info_sources = files([\n> > +    'camera3_hal.cpp',\n> > +])\n> > +\n> > +cros_hal_info = static_library('cros_hal_info',\n> > +                               cros_hal_info_sources,\n> > +                               c_args : '-Wno-shadow',\n> > +                               include_directories : [cros_includes,\n> > +                                                      cros_hal_include_dir,\n> > +                                                      android_includes])\n> > +\n> > +cros_hal_info_obj = cros_hal_info.extract_objects('camera3_hal.cpp')\n> > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> > index 4b5e33ce..c40eb41f 100644\n> > --- a/src/libcamera/meson.build\n> > +++ b/src/libcamera/meson.build\n> > @@ -139,6 +139,11 @@ if android_enabled\n> >      libcamera_deps += android_deps\n> >  endif\n> >\n> > +libcamera_objects = []\n> > +if cros_enabled\n> > +    libcamera_objects += cros_hal_info_obj\n> > +endif\n> > +\n> \n> Can't we create a static library object and link against it as we do\n> for android_camera_metadata ?\n\nI'm not entirely sure, but in that case I think the linker will only\npull the symbols that are referenced.\n\n> Basically you can define the static library in src/android/meson.build\n> and instruct libcamera to link against it conditionally to 'if cros'\n> in src/libcamera/meson.build.\n> \n> But maybe I'm overlooking something\n> \n> >  # We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.\n> >  # The build_rpath is stripped at install time by meson, so we determine at\n> >  # runtime if the library is running from an installed location by checking\n> > @@ -149,6 +154,7 @@ libcamera = shared_library('camera',\n> >                             install : true,\n> >                             link_with : libcamera_link_with,\n> >                             include_directories : includes,\n> > +                           objects : libcamera_objects,\n> >                             build_rpath : '/',\n> >                             dependencies : libcamera_deps)\n> >\n> > diff --git a/src/meson.build b/src/meson.build\n> > index 0b26ca70..ec85cc47 100644\n> > --- a/src/meson.build\n> > +++ b/src/meson.build\n> > @@ -15,6 +15,10 @@ endif\n> >  # are included directly into the libcamera library when this is enabled.\n> >  subdir('android')\n> >\n> > +if cros_enabled\n> > +    subdir('cros')\n> > +endif\n> > +\n> >  subdir('libcamera')\n> >  subdir('ipa')\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 4E7D9BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Feb 2021 18:12:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BFB4E68A58;\n\tThu, 25 Feb 2021 19:12:51 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3086E68A51\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Feb 2021 19:12:50 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8FCEF58E;\n\tThu, 25 Feb 2021 19:12:49 +0100 (CET)"],"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=\"DdcSnr8s\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1614276769;\n\tbh=k4aRuhmRlSZ96V+oZVpbVvothbDZDn9i77m6kQ2AlbQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=DdcSnr8sznJ7gZPvqKj17OHswPBI8ZAUkKi72RuSdjk5mKq9XsL8jMF1sllYkmvAB\n\tcr5W8QCWrmidQA05f36Cq+o8t7k6pfnCrUuhiQq6YW/UP99U0Svc5dgrMCY6jO0wHK\n\tAJVm2yjsUxPSiG8Enffk0agyAjVIf2zehZxKtSig=","Date":"Thu, 25 Feb 2021 20:12:22 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<YDfohgQjRZfxzfg5@pendragon.ideasonboard.com>","References":"<20210225104217.108792-1-paul.elder@ideasonboard.com>\n\t<20210225104217.108792-4-paul.elder@ideasonboard.com>\n\t<20210225171917.2e4sfectpadcrbh5@uno.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210225171917.2e4sfectpadcrbh5@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH 3/3] cros: Support the new cros camera\n\tAPI with set_up and tear_down","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=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]