[{"id":32963,"web_url":"https://patchwork.libcamera.org/comment/32963/","msgid":"<CAHW6GY+owT8tK2PCUVPTF7w_ZJ4yZcgsfeweLX2YfQG4_8thZA@mail.gmail.com>","date":"2025-01-08T09:53:12","subject":"Re: [PATCH v1 2/3] ipa: rpi: Add cam_helper for imx415","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi everyone\n\nOn Wed, 8 Jan 2025 at 09:03, Naushir Patuck <naush@raspberrypi.com> wrote:\n>\n> From: Dave Stevenson <dave.stevenson@raspberrypi.com>\n>\n> As another Starvis sensor, it is near identical to imx290/327.\n>\n> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n\nReviewed-by: David Plowman <david.plowman@raspberrypi.com>\n\nIf it's truly identical I suppose we could have re-registered the\nimx290 helper under \"imx415\". But maybe we don't like that and this is\nprobably better!\n\nThanks\nDavid\n\n> ---\n>  src/ipa/rpi/cam_helper/cam_helper_imx415.cpp | 64 ++++++++++++++++++++\n>  src/ipa/rpi/cam_helper/meson.build           |  1 +\n>  2 files changed, 65 insertions(+)\n>  create mode 100644 src/ipa/rpi/cam_helper/cam_helper_imx415.cpp\n>\n> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp\n> new file mode 100644\n> index 000000000000..c0a09eee3dee\n> --- /dev/null\n> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp\n> @@ -0,0 +1,64 @@\n> +/* SPDX-License-Identifier: BSD-2-Clause */\n> +/*\n> + * Copyright (C) 2025, Raspberry Pi Ltd\n> + *\n> + * camera helper for imx415 sensor\n> + */\n> +\n> +#include <cmath>\n> +\n> +#include \"cam_helper.h\"\n> +\n> +using namespace RPiController;\n> +\n> +class CamHelperImx415 : public CamHelper\n> +{\n> +public:\n> +       CamHelperImx415();\n> +       uint32_t gainCode(double gain) const override;\n> +       double gain(uint32_t gainCode) const override;\n> +       unsigned int hideFramesStartup() const override;\n> +       unsigned int hideFramesModeSwitch() const override;\n> +\n> +private:\n> +       /*\n> +        * Smallest difference between the frame length and integration time,\n> +        * in units of lines.\n> +        */\n> +       static constexpr int frameIntegrationDiff = 8;\n> +};\n> +\n> +CamHelperImx415::CamHelperImx415()\n> +       : CamHelper({}, frameIntegrationDiff)\n> +{\n> +}\n> +\n> +uint32_t CamHelperImx415::gainCode(double gain) const\n> +{\n> +       int code = 66.6667 * std::log10(gain);\n> +       return std::max(0, std::min(code, 0xf0));\n> +}\n> +\n> +double CamHelperImx415::gain(uint32_t gainCode) const\n> +{\n> +       return std::pow(10, 0.015 * gainCode);\n> +}\n> +\n> +unsigned int CamHelperImx415::hideFramesStartup() const\n> +{\n> +       /* On startup, we seem to get 1 bad frame. */\n> +       return 1;\n> +}\n> +\n> +unsigned int CamHelperImx415::hideFramesModeSwitch() const\n> +{\n> +       /* After a mode switch, we seem to get 1 bad frame. */\n> +       return 1;\n> +}\n> +\n> +static CamHelper *create()\n> +{\n> +       return new CamHelperImx415();\n> +}\n> +\n> +static RegisterCamHelper reg(\"imx415\", &create);\n> diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build\n> index 03e88fe082e2..abf021474b5c 100644\n> --- a/src/ipa/rpi/cam_helper/meson.build\n> +++ b/src/ipa/rpi/cam_helper/meson.build\n> @@ -7,6 +7,7 @@ rpi_ipa_cam_helper_sources = files([\n>      'cam_helper_imx283.cpp',\n>      'cam_helper_imx290.cpp',\n>      'cam_helper_imx296.cpp',\n> +    'cam_helper_imx415.cpp',\n>      'cam_helper_imx477.cpp',\n>      'cam_helper_imx519.cpp',\n>      'cam_helper_imx708.cpp',\n> --\n> 2.43.0\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 4FDF5BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  8 Jan 2025 09:53:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7CCB0684E4;\n\tWed,  8 Jan 2025 10:53:25 +0100 (CET)","from mail-qt1-x830.google.com (mail-qt1-x830.google.com\n\t[IPv6:2607:f8b0:4864:20::830])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5B52161891\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  8 Jan 2025 10:53:24 +0100 (CET)","by mail-qt1-x830.google.com with SMTP id\n\td75a77b69052e-467a3c85e11so104168091cf.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 08 Jan 2025 01:53:24 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"icNb3rNR\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1736330003; x=1736934803;\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=ZGP48QQH6Weic2rgmU6HISzovNN0TKwC1qCzCNGUwGI=;\n\tb=icNb3rNRQ2n0ORaE6Zt5ahtie+yT1bnj5PbIFuOwrLKNRWzAWY9DkLEL17mvcLNOin\n\tqC0DPsFeetk6RfNoFuxTQX5TmaK9A9eaOSRtx/w3eiLgN2iH8aWrrKA8HFCkiOgZopWc\n\t9OFQg7SeCgyAK9Xrox8rdfC0bJIgB3DrMT4VIRR8AiHY6yaInrAGjBM9TIlxb3p4Ex6w\n\tz0W7oEzAah9JmIu7KMlh8GOAxpqtqQUMXmqaGx1GS2JgkqLes5wy7Lj9GzqJ1wnlmXNs\n\taSQIJiX7BpmDlNszXj3cdB1agDdZuuwJz0Sg+Uh1HR5oGLSSGQkPcu/G1Ay4J4B6NoqJ\n\tTXUg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1736330003; x=1736934803;\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=ZGP48QQH6Weic2rgmU6HISzovNN0TKwC1qCzCNGUwGI=;\n\tb=xGF7EGf4chtU0sgdFcMqot0t6Iw1gRrTHbABirnkS4P/7fnaUr+/gtdr+SX4T3+26R\n\tYEb5ZpodutmUGBIrp+bqPHAZqCVuL6lAS8CsNZwLetV/dqS9d+pCMf9dq+UsnswbCjtz\n\t6zSmFLtbdLAP3pUMChrqBp1hCY+l1jKGxbPf+HCzPZhlA5rMhDYKrgM5A193J/6yrNL7\n\tRkLmAGJFv6HgMK4QL/ERM2fJHoXHEp7PoXsdef5k1FY/axo7XY1qDl4ClfHmFzYQhMBE\n\tcD6FB3YT2+7iZMjolWGJKUJmHiNk3fMMla6XoZ5GU1fMiCfOy6WjZ7UqIsLB43edn19u\n\tUk0Q==","X-Gm-Message-State":"AOJu0YwsK0V/OlSqg80dv+zhyDz+j2gw4OLD36PVh5IUM7AVBw2rAN70\n\t6RqlH2BTbDAV9vF7bi2HPFXnWR1N+lRSQGLVqH2lSGpbd1BbsyurgGPszMllv0sZjCe3zLz/G+k\n\tWTGePYaqmrs1aFB+XTqJIiZS0gDtgv9nFvM0Z0g==","X-Gm-Gg":"ASbGnctDKew0/DKEgkkf4yT3k9SIAvv3UoOAAiYvW7AFql28zb7O3nJA6FnM9oqAud3\n\tPCL8Iqe7uGrrzICexyYHwaTY4mKNxWic4Q1o6khAJceqc7vXw4QxLLVqE+ptfzeUA8FWedQ==","X-Google-Smtp-Source":"AGHT+IHIjnYNywggrUaIiyO/ygosj2SZ3rDJEiDOQ/Cn7uRH/UEcFPHh6x2fG24pwPIQwgGbaOgtTpLAAuaWVl1MOGY=","X-Received":"by 2002:a05:6214:c23:b0:6d1:87f7:2924 with SMTP id\n\t6a1803df08f44-6df9b2eb1aamr32234296d6.47.1736330003297;\n\tWed, 08 Jan 2025 01:53:23 -0800 (PST)","MIME-Version":"1.0","References":"<20250108090329.3185026-1-naush@raspberrypi.com>\n\t<20250108090329.3185026-2-naush@raspberrypi.com>","In-Reply-To":"<20250108090329.3185026-2-naush@raspberrypi.com>","From":"David Plowman <david.plowman@raspberrypi.com>","Date":"Wed, 8 Jan 2025 09:53:12 +0000","X-Gm-Features":"AbW1kvbsxkwAnkeqV0zUp-wE554RwbSc6lVaoNvn5f6zq7LTCDqsT-QjfezA5lI","Message-ID":"<CAHW6GY+owT8tK2PCUVPTF7w_ZJ4yZcgsfeweLX2YfQG4_8thZA@mail.gmail.com>","Subject":"Re: [PATCH v1 2/3] ipa: rpi: Add cam_helper for imx415","To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org, \n\tDave Stevenson <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":32965,"web_url":"https://patchwork.libcamera.org/comment/32965/","msgid":"<CAPY8ntBzx9Osn6SbRkMhXSV3WgP87bsg-4oBnTTEosqe38uT=A@mail.gmail.com>","date":"2025-01-08T10:44:47","subject":"Re: [PATCH v1 2/3] ipa: rpi: Add cam_helper for imx415","submitter":{"id":27,"url":"https://patchwork.libcamera.org/api/people/27/","name":"Dave Stevenson","email":"dave.stevenson@raspberrypi.com"},"content":"Hi David\n\nOn Wed, 8 Jan 2025 at 09:53, David Plowman\n<david.plowman@raspberrypi.com> wrote:\n>\n> Hi everyone\n>\n> On Wed, 8 Jan 2025 at 09:03, Naushir Patuck <naush@raspberrypi.com> wrote:\n> >\n> > From: Dave Stevenson <dave.stevenson@raspberrypi.com>\n> >\n> > As another Starvis sensor, it is near identical to imx290/327.\n> >\n> > Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n>\n> If it's truly identical I suppose we could have re-registered the\n> imx290 helper under \"imx415\". But maybe we don't like that and this is\n> probably better!\n\nIMX290/327 are 1080p sensors, whilst IMX415 is 4k.\nI'd written the coment before the delays moved out to\ncamera_sensor_properties. With that removed it's more that all the\nStarvis sensors are using the same \"steps of 0.3dB\" for gain.\nframeIntegrationDiff does differ as 2 on 290/327 vs 8 here.\n\nIMHO It probably makes more sense to keep it separate.\n\n  Dave\n\n> Thanks\n> David\n>\n> > ---\n> >  src/ipa/rpi/cam_helper/cam_helper_imx415.cpp | 64 ++++++++++++++++++++\n> >  src/ipa/rpi/cam_helper/meson.build           |  1 +\n> >  2 files changed, 65 insertions(+)\n> >  create mode 100644 src/ipa/rpi/cam_helper/cam_helper_imx415.cpp\n> >\n> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp\n> > new file mode 100644\n> > index 000000000000..c0a09eee3dee\n> > --- /dev/null\n> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp\n> > @@ -0,0 +1,64 @@\n> > +/* SPDX-License-Identifier: BSD-2-Clause */\n> > +/*\n> > + * Copyright (C) 2025, Raspberry Pi Ltd\n> > + *\n> > + * camera helper for imx415 sensor\n> > + */\n> > +\n> > +#include <cmath>\n> > +\n> > +#include \"cam_helper.h\"\n> > +\n> > +using namespace RPiController;\n> > +\n> > +class CamHelperImx415 : public CamHelper\n> > +{\n> > +public:\n> > +       CamHelperImx415();\n> > +       uint32_t gainCode(double gain) const override;\n> > +       double gain(uint32_t gainCode) const override;\n> > +       unsigned int hideFramesStartup() const override;\n> > +       unsigned int hideFramesModeSwitch() const override;\n> > +\n> > +private:\n> > +       /*\n> > +        * Smallest difference between the frame length and integration time,\n> > +        * in units of lines.\n> > +        */\n> > +       static constexpr int frameIntegrationDiff = 8;\n> > +};\n> > +\n> > +CamHelperImx415::CamHelperImx415()\n> > +       : CamHelper({}, frameIntegrationDiff)\n> > +{\n> > +}\n> > +\n> > +uint32_t CamHelperImx415::gainCode(double gain) const\n> > +{\n> > +       int code = 66.6667 * std::log10(gain);\n> > +       return std::max(0, std::min(code, 0xf0));\n> > +}\n> > +\n> > +double CamHelperImx415::gain(uint32_t gainCode) const\n> > +{\n> > +       return std::pow(10, 0.015 * gainCode);\n> > +}\n> > +\n> > +unsigned int CamHelperImx415::hideFramesStartup() const\n> > +{\n> > +       /* On startup, we seem to get 1 bad frame. */\n> > +       return 1;\n> > +}\n> > +\n> > +unsigned int CamHelperImx415::hideFramesModeSwitch() const\n> > +{\n> > +       /* After a mode switch, we seem to get 1 bad frame. */\n> > +       return 1;\n> > +}\n> > +\n> > +static CamHelper *create()\n> > +{\n> > +       return new CamHelperImx415();\n> > +}\n> > +\n> > +static RegisterCamHelper reg(\"imx415\", &create);\n> > diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build\n> > index 03e88fe082e2..abf021474b5c 100644\n> > --- a/src/ipa/rpi/cam_helper/meson.build\n> > +++ b/src/ipa/rpi/cam_helper/meson.build\n> > @@ -7,6 +7,7 @@ rpi_ipa_cam_helper_sources = files([\n> >      'cam_helper_imx283.cpp',\n> >      'cam_helper_imx290.cpp',\n> >      'cam_helper_imx296.cpp',\n> > +    'cam_helper_imx415.cpp',\n> >      'cam_helper_imx477.cpp',\n> >      'cam_helper_imx519.cpp',\n> >      'cam_helper_imx708.cpp',\n> > --\n> > 2.43.0\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 0FD61BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  8 Jan 2025 10:45:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4D56061891;\n\tWed,  8 Jan 2025 11:45:10 +0100 (CET)","from mail-yb1-xb2a.google.com (mail-yb1-xb2a.google.com\n\t[IPv6:2607:f8b0:4864:20::b2a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B207F61884\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  8 Jan 2025 11:45:08 +0100 (CET)","by mail-yb1-xb2a.google.com with SMTP id\n\t3f1490d57ef6-e3a1cfeb711so19370281276.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 08 Jan 2025 02:45:08 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"BCk3Myk0\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1736333107; x=1736937907;\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=boWmhim0S1w6PcBLMaioo42TJ+2wWoLDsGynXBN9TNs=;\n\tb=BCk3Myk0jsPvuz43ktbNyHthMiu/xIB/clwUbh/ZAIfqny39XiavcBqJ+AJVQYKQj5\n\t4Gaso0TWgxrykspZFGTlSw1QujhEauYN/uibjk57zK8o6krLGu9V18M80SFFDGNXcD08\n\t7XLhRXnlMjxxYj7dh8Bagpq57421zvcmsNfUYXoqXAz/JuO7UEXAMBZdS1UFo74w3IUb\n\t4DKd8WH0xI8lFlzO8jtgllp/soTIo4PHAd3O3Z0y51W3PCKq3C8LVpdZltcBkEAEOQoB\n\tB14RvMeZQS2q0K2yWs0OpYwojisdcreNoQ5PfQwnS4K1ZB4UhS4gzrypnandMmaVuj1v\n\tzGKA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1736333107; x=1736937907;\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=boWmhim0S1w6PcBLMaioo42TJ+2wWoLDsGynXBN9TNs=;\n\tb=N1vq69OCDFJt9fZaYWAib8GSiIp3XiDDGGqT4HJKVOVthKZ4sO2VcrIAsE7dtWQtVC\n\tAvlnsdAJxFX3hX3BHpbnMXXBmrPWSza7Mg7AmgYY0gqb/qlvLpJlDvmXrnJN8Da+vcvY\n\tEz/XQa8BAzuYGyetsfl0ZbDVE5FTxsl6fOWZdsKGgNrIPyzTkJxilAGik47rHm65bCP/\n\tHJ5boOEfwgAjQi5pQV8XYzpZxGK0kGhwZdx0G4A0rfrmOr92s8FVXa69AaH3k1/9fJPf\n\tQJfQb6hU1lLmy6GEaNRP7ky1O+mYR9tNSCI6JBGrjdbnZSw4GsT6Z3oBIEDRWidhjYwc\n\t0LTg==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCUjloTVVnujDa+5X5mmEN6CewWq+xijxQnVQkzlG5My+1VQDPXhi033VxKJ0yjScwy88gDsKPDe2VXquGq7GyU=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YznBQUMvWZlvY1lF1SUWQ/okyjKWjWDxDDo6bumvAeSYOUJBbtW\n\tybNLZU2/aQtBFoRHnxpJ8u3g8R/ev7VNK01M0eg2RAbPM/rqixCWWFyAaC4IYL2GJeb5ltVEmLs\n\tTEH187MNdnMM2wZ1jRqe4bGZWatvoWneR7DFSVw==","X-Gm-Gg":"ASbGnctwini2e2CyrHQA1iLVeWbbDpPQTejttvlZuKZdnFP7Yv1R2YEJXn30dKmpAk8\n\tAoYMUjVmGYOkoBlr9TRuP0EBprU0w2xT1aDqryg==","X-Google-Smtp-Source":"AGHT+IGX7IKlIGD0jHFT0GO00qBZ+n/44VTLtbZTVZFpwViavITVGmyFLF53BEUNaPfVJIu6LzSsceZ50OkmL6JeupE=","X-Received":"by 2002:a05:6902:72f:b0:e38:87bf:8e61 with SMTP id\n\t3f1490d57ef6-e54ee15b619mr1606419276.27.1736333107584;\n\tWed, 08 Jan 2025 02:45:07 -0800 (PST)","MIME-Version":"1.0","References":"<20250108090329.3185026-1-naush@raspberrypi.com>\n\t<20250108090329.3185026-2-naush@raspberrypi.com>\n\t<CAHW6GY+owT8tK2PCUVPTF7w_ZJ4yZcgsfeweLX2YfQG4_8thZA@mail.gmail.com>","In-Reply-To":"<CAHW6GY+owT8tK2PCUVPTF7w_ZJ4yZcgsfeweLX2YfQG4_8thZA@mail.gmail.com>","From":"Dave Stevenson <dave.stevenson@raspberrypi.com>","Date":"Wed, 8 Jan 2025 10:44:47 +0000","X-Gm-Features":"AbW1kvZGkra-u4fUdB-yNhn-Mqs3NaWTB5wZ1Paqgj14zSr0UxIAqrbYHxBBVeU","Message-ID":"<CAPY8ntBzx9Osn6SbRkMhXSV3WgP87bsg-4oBnTTEosqe38uT=A@mail.gmail.com>","Subject":"Re: [PATCH v1 2/3] ipa: rpi: Add cam_helper for imx415","To":"David Plowman <david.plowman@raspberrypi.com>","Cc":"Naushir Patuck <naush@raspberrypi.com>,\n\tlibcamera-devel@lists.libcamera.org","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>"}}]