Show a patch.

GET /api/1.1/patches/18552/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 18552,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/18552/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/18552/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20230426131057.21550-5-naush@raspberrypi.com>",
    "date": "2023-04-26T13:10:48",
    "name": "[libcamera-devel,04/13] ipa: raspberrypi: Refactor and move IPA code",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "8b5892a2466a5a73b4e44e25b18606700338137a",
    "submitter": {
        "id": 34,
        "url": "https://patchwork.libcamera.org/api/1.1/people/34/?format=api",
        "name": "Naushir Patuck",
        "email": "naush@raspberrypi.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/18552/mbox/",
    "series": [
        {
            "id": 3847,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3847/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3847",
            "date": "2023-04-26T13:10:44",
            "name": "Raspberry Pi: Code refactoring",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/3847/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/18552/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/18552/checks/",
    "tags": {},
    "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 B7019BDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 Apr 2023 13:13:19 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 56F01627F3;\n\tWed, 26 Apr 2023 15:13:19 +0200 (CEST)",
            "from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com\n\t[IPv6:2a00:1450:4864:20::42b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BB400627EA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Apr 2023 15:13:15 +0200 (CEST)",
            "by mail-wr1-x42b.google.com with SMTP id\n\tffacd0b85a97d-2f46348728eso4340367f8f.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Apr 2023 06:13:15 -0700 (PDT)",
            "from localhost.localdomain ([93.93.133.154])\n\tby smtp.gmail.com with ESMTPSA id\n\tk5-20020adff5c5000000b002f103ca90cdsm15780949wrp.101.2023.04.26.06.13.13\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 26 Apr 2023 06:13:13 -0700 (PDT)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1682514799;\n\tbh=Jyxinqtrg7A2JprM3fFwZZUqheTHCrjiVnEKJvYDb5Q=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=QnvhB1kpSH7hF9DouJVzktGTzHfJ+El3wHjYXOlPoojRypvJ0cJtwDGZBEar+xEzH\n\tQUXQ2lMXU/qOQW4P32CoVfSyjQ7CgZCcpj7Wqhu7OkqnY3x4wnE31vikS1/gBYVC31\n\t2LLuhlVAUBJ2eG8f4wUG2Omoc8m4OTyfcN/Sg6gpHKCsWuf5OB2uRutdqIvhcQwUi8\n\tFxAOuGx98rcEcjUZWL8nqdtfXTV02EgG9LyP1YXH2u5sgXw6zmFus7F6boIu+aAhK6\n\t31RYTH7wzwunemUcTzPS30o9MVC/r/51nECezrdZagp/FlpReCAkihv2B+MHQss/GD\n\tDvcru/3nMh5EQ==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1682514795; x=1685106795;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=PJ+IkmiZXDc1Kgr01RThPI7WHOWq+rDuJQy3cVcYU7k=;\n\tb=iglKZ3ZP0UGTz14bxsCJxeLP7TKmjDfEz/hKP1gCI6HTxjRFUIESNArYUeIB27arB1\n\tax0ohV65fpPFHmuH7Xk2/uuHHRd8Z3C3HjFhAUIjrwUqv6npk2ZVB7xgfUc1rcWa5S+4\n\tKKvO+KDiKsKf+aQyWVrlVx/YmiGWVX4XXSOLO7jule10AjE7CJxK5aL0Ec2JrrJQq6VW\n\trTuqaYrnAxjQiRu+8VhS4wg2bcBXayzQQjiUK/xTZ1/agcwcOwk+iuQBGq7fIGPK6xOk\n\t+34P6dRSXW+x1M6MRExSxq0vqBvexPb7Z8e4zvD8G7/wumI5DntBq+2uhGuVbxDVJdSE\n\tuqYQ=="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"iglKZ3ZP\"; dkim-atps=neutral",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20221208; t=1682514795; x=1685106795;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=PJ+IkmiZXDc1Kgr01RThPI7WHOWq+rDuJQy3cVcYU7k=;\n\tb=Rg1lk9oBsx6D7q9Xus7X+jCyKJwbgqWFqI40WnGxIHhquJrQiGV56CSqVf6OqtzH66\n\tnFcqRe8pM81Ms86DQCQ2njGPUJx0ToIy5ZhW4z2iEXDrNpoasYp9tzrJUPYY3n0jwnZY\n\tFn3z16BzbbdrN7wkYsVqJaD19BHphQWHYJ8zy2qvBgFYFWkBP7pHnOL1IUIjxK60oR6e\n\tuRi5DWqZTtt06K47mlmtBrjMU3sVrC+zgylWO2rII69pCe2mzgexDcRnwGKVuitdK7ZL\n\tNsgFuNA/4rfUB9rPtGi7esLplKjUmWy4hM+vx3L0ecBMP/CxeYGBRQR8z8zKdyCRIz09\n\tUVIQ==",
        "X-Gm-Message-State": "AAQBX9ddZu7CVCY9/KvdjEvma/z9lktsrQ1f0zHaFTddhEq20lLfmVLc\n\tBYBvfW9IC+E5y8HBNY8zHnRTSgIwAVK8/vPcPH22Pg==",
        "X-Google-Smtp-Source": "AKy350bKMKr7FqtRNVZ6IoktqIpr3Dak5ZL2FiJLIOZRx0ex0IKQh3PCIpd8URklDaHW7+c8fGfhHA==",
        "X-Received": "by 2002:adf:eac5:0:b0:303:c151:8e69 with SMTP id\n\to5-20020adfeac5000000b00303c1518e69mr11982324wrn.40.1682514794494; \n\tWed, 26 Apr 2023 06:13:14 -0700 (PDT)",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Wed, 26 Apr 2023 14:10:48 +0100",
        "Message-Id": "<20230426131057.21550-5-naush@raspberrypi.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20230426131057.21550-1-naush@raspberrypi.com>",
        "References": "<20230426131057.21550-1-naush@raspberrypi.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 04/13] ipa: raspberrypi: Refactor and move\n\tIPA code",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Split the Raspberry Pi IPA code into common and VC4/BCM2835 specific\nfile structures.\n\nThe common code files now live in src/ipa/rpi/{cam_helper,controller}/\nand the vc4 specific files in src/ipa/rpi/vc4/.\n\nTo build the IPA, the meson configuration option to select\nthe Raspberry Pi IPA has now changed from \"raspberrypi\" to\n\"rpi/vc4\":\n\nmeson setup build --Dipas=rpi/vc4\n\nWith this change, the camera tuning files are now installed under\nshare/libcamera/ipa/rpi/vc4/\n\nSigned-off-by: Naushir Patuck <naush@raspberrypi.com>\n---\n Documentation/environment_variables.rst       |  2 +-\n meson_options.txt                             |  2 +-\n src/ipa/meson.build                           | 10 +++\n src/ipa/raspberrypi/meson.build               | 66 -------------------\n src/ipa/{raspberrypi => rpi}/README.md        |  0\n .../cam_helper}/cam_helper.cpp                |  0\n .../cam_helper}/cam_helper.h                  |  2 +-\n .../cam_helper}/cam_helper_imx219.cpp         |  0\n .../cam_helper}/cam_helper_imx290.cpp         |  0\n .../cam_helper}/cam_helper_imx296.cpp         |  0\n .../cam_helper}/cam_helper_imx477.cpp         |  0\n .../cam_helper}/cam_helper_imx519.cpp         |  0\n .../cam_helper}/cam_helper_imx708.cpp         |  0\n .../cam_helper}/cam_helper_ov5647.cpp         |  0\n .../cam_helper}/cam_helper_ov9281.cpp         |  0\n .../cam_helper}/md_parser.h                   |  0\n .../cam_helper}/md_parser_smia.cpp            |  0\n src/ipa/rpi/cam_helper/meson.build            | 14 ++++\n .../controller/af_algorithm.h                 |  0\n .../controller/af_status.h                    |  0\n .../controller/agc_algorithm.h                |  0\n .../controller/agc_status.h                   |  0\n .../controller/algorithm.cpp                  |  0\n .../controller/algorithm.h                    |  0\n .../controller/alsc_status.h                  |  0\n .../controller/awb_algorithm.h                |  0\n .../controller/awb_status.h                   |  0\n .../controller/black_level_status.h           |  0\n .../controller/camera_mode.h                  |  0\n .../controller/ccm_algorithm.h                |  0\n .../controller/ccm_status.h                   |  0\n .../controller/contrast_algorithm.h           |  0\n .../controller/contrast_status.h              |  0\n .../controller/controller.cpp                 |  0\n .../controller/controller.h                   |  0\n .../controller/denoise_algorithm.h            |  0\n .../controller/denoise_status.h               |  0\n .../controller/device_status.cpp              |  0\n .../controller/device_status.h                |  0\n .../controller/dpc_status.h                   |  0\n .../controller/geq_status.h                   |  0\n .../controller/histogram.cpp                  |  0\n .../controller/histogram.h                    |  0\n .../controller/lux_status.h                   |  0\n src/ipa/rpi/controller/meson.build            | 22 +++++++\n .../controller/metadata.h                     |  0\n .../controller/noise_status.h                 |  0\n .../controller/pdaf_data.h                    |  0\n .../{raspberrypi => rpi}/controller/pwl.cpp   |  0\n src/ipa/{raspberrypi => rpi}/controller/pwl.h |  0\n .../controller/region_stats.h                 |  0\n .../controller/rpi/af.cpp                     |  0\n .../{raspberrypi => rpi}/controller/rpi/af.h  |  0\n .../controller/rpi/agc.cpp                    |  0\n .../{raspberrypi => rpi}/controller/rpi/agc.h |  0\n .../controller/rpi/alsc.cpp                   |  0\n .../controller/rpi/alsc.h                     |  0\n .../controller/rpi/awb.cpp                    |  0\n .../{raspberrypi => rpi}/controller/rpi/awb.h |  0\n .../controller/rpi/black_level.cpp            |  0\n .../controller/rpi/black_level.h              |  0\n .../controller/rpi/ccm.cpp                    |  0\n .../{raspberrypi => rpi}/controller/rpi/ccm.h |  0\n .../controller/rpi/contrast.cpp               |  0\n .../controller/rpi/contrast.h                 |  0\n .../controller/rpi/dpc.cpp                    |  0\n .../{raspberrypi => rpi}/controller/rpi/dpc.h |  0\n .../controller/rpi/focus.h                    |  0\n .../controller/rpi/geq.cpp                    |  0\n .../{raspberrypi => rpi}/controller/rpi/geq.h |  0\n .../controller/rpi/lux.cpp                    |  0\n .../{raspberrypi => rpi}/controller/rpi/lux.h |  0\n .../controller/rpi/noise.cpp                  |  0\n .../controller/rpi/noise.h                    |  0\n .../controller/rpi/sdn.cpp                    |  0\n .../{raspberrypi => rpi}/controller/rpi/sdn.h |  0\n .../controller/rpi/sharpen.cpp                |  0\n .../controller/rpi/sharpen.h                  |  0\n .../controller/sharpen_algorithm.h            |  0\n .../controller/sharpen_status.h               |  0\n .../controller}/statistics.h                  |  0\n .../{raspberrypi => rpi/vc4}/data/imx219.json |  0\n .../vc4}/data/imx219_noir.json                |  0\n .../{raspberrypi => rpi/vc4}/data/imx290.json |  0\n .../{raspberrypi => rpi/vc4}/data/imx296.json |  0\n .../vc4}/data/imx296_mono.json                |  0\n .../{raspberrypi => rpi/vc4}/data/imx378.json |  0\n .../{raspberrypi => rpi/vc4}/data/imx477.json |  0\n .../vc4}/data/imx477_noir.json                |  0\n .../vc4}/data/imx477_scientific.json          |  0\n .../vc4}/data/imx477_v1.json                  |  0\n .../{raspberrypi => rpi/vc4}/data/imx519.json |  0\n .../{raspberrypi => rpi/vc4}/data/imx708.json |  0\n .../vc4}/data/imx708_noir.json                |  0\n .../vc4}/data/imx708_wide.json                |  0\n .../vc4}/data/imx708_wide_noir.json           |  0\n .../{raspberrypi => rpi/vc4}/data/meson.build |  2 +-\n .../{raspberrypi => rpi/vc4}/data/ov5647.json |  0\n .../vc4}/data/ov5647_noir.json                |  0\n .../vc4}/data/ov9281_mono.json                |  0\n .../vc4}/data/se327m12.json                   |  0\n .../vc4}/data/uncalibrated.json               |  0\n src/ipa/rpi/vc4/meson.build                   | 40 +++++++++++\n .../{raspberrypi => rpi/vc4}/raspberrypi.cpp  | 48 +++++++-------\n .../pipeline/rpi/vc4/raspberrypi.cpp          |  2 +-\n 105 files changed, 115 insertions(+), 95 deletions(-)\n delete mode 100644 src/ipa/raspberrypi/meson.build\n rename src/ipa/{raspberrypi => rpi}/README.md (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.h (99%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx219.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx290.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx296.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx477.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx519.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx708.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov5647.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov9281.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser.h (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser_smia.cpp (100%)\n create mode 100644 src/ipa/rpi/cam_helper/meson.build\n rename src/ipa/{raspberrypi => rpi}/controller/af_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/af_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/agc_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/agc_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/algorithm.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/alsc_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/awb_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/awb_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/black_level_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/camera_mode.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/ccm_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/ccm_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/contrast_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/contrast_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/controller.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/controller.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/denoise_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/denoise_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/device_status.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/device_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/dpc_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/geq_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/histogram.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/histogram.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/lux_status.h (100%)\n create mode 100644 src/ipa/rpi/controller/meson.build\n rename src/ipa/{raspberrypi => rpi}/controller/metadata.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/noise_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/pdaf_data.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/pwl.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/pwl.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/region_stats.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/focus.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/sharpen_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/sharpen_status.h (100%)\n rename src/ipa/{raspberrypi => rpi/controller}/statistics.h (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx290.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296_mono.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx378.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_scientific.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_v1.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx519.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/meson.build (89%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/ov9281_mono.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/se327m12.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/uncalibrated.json (100%)\n create mode 100644 src/ipa/rpi/vc4/meson.build\n rename src/ipa/{raspberrypi => rpi/vc4}/raspberrypi.cpp (98%)",
    "diff": "diff --git a/Documentation/environment_variables.rst b/Documentation/environment_variables.rst\nindex 4bf38b877897..888707785ee1 100644\n--- a/Documentation/environment_variables.rst\n+++ b/Documentation/environment_variables.rst\n@@ -143,7 +143,7 @@ contain tuning parameters for the algorithms, in JSON format.\n The ``LIBCAMERA_IPA_CONFIG_PATH`` variable can be used to specify custom\n storage locations to search for those configuration files.\n \n-`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/raspberrypi/data>`__\n+`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/rpi/data>`__\n \n IPA module\n ~~~~~~~~~~\ndiff --git a/meson_options.txt b/meson_options.txt\nindex e1f4c205aa94..596f813ea5e5 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -27,7 +27,7 @@ option('gstreamer',\n \n option('ipas',\n         type : 'array',\n-        choices : ['ipu3', 'raspberrypi', 'rkisp1', 'vimc'],\n+        choices : ['ipu3', 'rpi/vc4', 'rkisp1', 'vimc'],\n         description : 'Select which IPA modules to build')\n \n option('lc-compliance',\ndiff --git a/src/ipa/meson.build b/src/ipa/meson.build\nindex 76ad5b445601..10d3b44ca7b6 100644\n--- a/src/ipa/meson.build\n+++ b/src/ipa/meson.build\n@@ -37,6 +37,16 @@ endif\n \n enabled_ipa_modules = []\n \n+# If the Raspberry Pi VC4 IPA is enabled, ensure we include the  rpi/cam_helper\n+# and rpi/controller subdirectories in the build.\n+#\n+# This is done here and not within rpi/vc4/meson.build as meson does not\n+# allow the subdir command to traverse up the directory tree.\n+if pipelines.contains('rpi/vc4')\n+    subdir('rpi/cam_helper')\n+    subdir('rpi/controller')\n+endif\n+\n # The ipa-sign-install.sh script which uses the ipa_names variable will itself\n # prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name, therefore we\n # must not include the prefix string here.\ndiff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\ndeleted file mode 100644\nindex de78cbd80f9c..000000000000\n--- a/src/ipa/raspberrypi/meson.build\n+++ /dev/null\n@@ -1,66 +0,0 @@\n-# SPDX-License-Identifier: CC0-1.0\n-\n-ipa_name = 'ipa_rpi'\n-\n-rpi_ipa_deps = [\n-    libcamera_private,\n-    libatomic,\n-]\n-\n-rpi_ipa_includes = [\n-    ipa_includes,\n-    libipa_includes,\n-    include_directories('controller')\n-]\n-\n-rpi_ipa_sources = files([\n-    'raspberrypi.cpp',\n-    'md_parser_smia.cpp',\n-    'cam_helper.cpp',\n-    'cam_helper_ov5647.cpp',\n-    'cam_helper_imx219.cpp',\n-    'cam_helper_imx290.cpp',\n-    'cam_helper_imx296.cpp',\n-    'cam_helper_imx477.cpp',\n-    'cam_helper_imx519.cpp',\n-    'cam_helper_imx708.cpp',\n-    'cam_helper_ov9281.cpp',\n-    'controller/controller.cpp',\n-    'controller/histogram.cpp',\n-    'controller/algorithm.cpp',\n-    'controller/rpi/af.cpp',\n-    'controller/rpi/alsc.cpp',\n-    'controller/rpi/awb.cpp',\n-    'controller/rpi/sharpen.cpp',\n-    'controller/rpi/black_level.cpp',\n-    'controller/rpi/geq.cpp',\n-    'controller/rpi/noise.cpp',\n-    'controller/rpi/lux.cpp',\n-    'controller/rpi/agc.cpp',\n-    'controller/rpi/dpc.cpp',\n-    'controller/rpi/ccm.cpp',\n-    'controller/rpi/contrast.cpp',\n-    'controller/rpi/sdn.cpp',\n-    'controller/pwl.cpp',\n-    'controller/device_status.cpp',\n-])\n-\n-mod = shared_module(ipa_name,\n-                    [rpi_ipa_sources, libcamera_generated_ipa_headers],\n-                    name_prefix : '',\n-                    include_directories : rpi_ipa_includes,\n-                    dependencies : rpi_ipa_deps,\n-                    link_with : libipa,\n-                    install : true,\n-                    install_dir : ipa_install_dir)\n-\n-if ipa_sign_module\n-    custom_target(ipa_name + '.so.sign',\n-                  input : mod,\n-                  output : ipa_name + '.so.sign',\n-                  command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],\n-                  install : false,\n-                  build_by_default : true)\n-endif\n-\n-subdir('data')\ndiff --git a/src/ipa/raspberrypi/README.md b/src/ipa/rpi/README.md\nsimilarity index 100%\nrename from src/ipa/raspberrypi/README.md\nrename to src/ipa/rpi/README.md\ndiff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/rpi/cam_helper/cam_helper.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper.h b/src/ipa/rpi/cam_helper/cam_helper.h\nsimilarity index 99%\nrename from src/ipa/raspberrypi/cam_helper.h\nrename to src/ipa/rpi/cam_helper/cam_helper.h\nindex b3f8c9803094..58a4b202d5a8 100644\n--- a/src/ipa/raspberrypi/cam_helper.h\n+++ b/src/ipa/rpi/cam_helper/cam_helper.h\n@@ -13,7 +13,7 @@\n #include <libcamera/base/span.h>\n #include <libcamera/base/utils.h>\n \n-#include \"camera_mode.h\"\n+#include \"controller/camera_mode.h\"\n #include \"controller/controller.h\"\n #include \"controller/metadata.h\"\n #include \"md_parser.h\"\ndiff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_imx219.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_imx219.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper_imx290.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_imx290.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_imx290.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper_imx296.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_imx296.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_imx296.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_imx477.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_imx477.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper_imx519.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_imx519.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_imx519.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper_imx708.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_imx708.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_imx708.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper_ov5647.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_ov5647.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp\ndiff --git a/src/ipa/raspberrypi/cam_helper_ov9281.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/cam_helper_ov9281.cpp\nrename to src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp\ndiff --git a/src/ipa/raspberrypi/md_parser.h b/src/ipa/rpi/cam_helper/md_parser.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/md_parser.h\nrename to src/ipa/rpi/cam_helper/md_parser.h\ndiff --git a/src/ipa/raspberrypi/md_parser_smia.cpp b/src/ipa/rpi/cam_helper/md_parser_smia.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/md_parser_smia.cpp\nrename to src/ipa/rpi/cam_helper/md_parser_smia.cpp\ndiff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build\nnew file mode 100644\nindex 000000000000..aa42ae91f69d\n--- /dev/null\n+++ b/src/ipa/rpi/cam_helper/meson.build\n@@ -0,0 +1,14 @@\n+# SPDX-License-Identifier: CC0-1.0\n+\n+rpi_ipa_cam_helper_sources = files([\n+    'cam_helper.cpp',\n+    'cam_helper_ov5647.cpp',\n+    'cam_helper_imx219.cpp',\n+    'cam_helper_imx290.cpp',\n+    'cam_helper_imx296.cpp',\n+    'cam_helper_imx477.cpp',\n+    'cam_helper_imx519.cpp',\n+    'cam_helper_imx708.cpp',\n+    'cam_helper_ov9281.cpp',\n+    'md_parser_smia.cpp',\n+])\ndiff --git a/src/ipa/raspberrypi/controller/af_algorithm.h b/src/ipa/rpi/controller/af_algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/af_algorithm.h\nrename to src/ipa/rpi/controller/af_algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/af_status.h b/src/ipa/rpi/controller/af_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/af_status.h\nrename to src/ipa/rpi/controller/af_status.h\ndiff --git a/src/ipa/raspberrypi/controller/agc_algorithm.h b/src/ipa/rpi/controller/agc_algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/agc_algorithm.h\nrename to src/ipa/rpi/controller/agc_algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/agc_status.h b/src/ipa/rpi/controller/agc_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/agc_status.h\nrename to src/ipa/rpi/controller/agc_status.h\ndiff --git a/src/ipa/raspberrypi/controller/algorithm.cpp b/src/ipa/rpi/controller/algorithm.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/algorithm.cpp\nrename to src/ipa/rpi/controller/algorithm.cpp\ndiff --git a/src/ipa/raspberrypi/controller/algorithm.h b/src/ipa/rpi/controller/algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/algorithm.h\nrename to src/ipa/rpi/controller/algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/alsc_status.h b/src/ipa/rpi/controller/alsc_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/alsc_status.h\nrename to src/ipa/rpi/controller/alsc_status.h\ndiff --git a/src/ipa/raspberrypi/controller/awb_algorithm.h b/src/ipa/rpi/controller/awb_algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/awb_algorithm.h\nrename to src/ipa/rpi/controller/awb_algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/awb_status.h b/src/ipa/rpi/controller/awb_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/awb_status.h\nrename to src/ipa/rpi/controller/awb_status.h\ndiff --git a/src/ipa/raspberrypi/controller/black_level_status.h b/src/ipa/rpi/controller/black_level_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/black_level_status.h\nrename to src/ipa/rpi/controller/black_level_status.h\ndiff --git a/src/ipa/raspberrypi/controller/camera_mode.h b/src/ipa/rpi/controller/camera_mode.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/camera_mode.h\nrename to src/ipa/rpi/controller/camera_mode.h\ndiff --git a/src/ipa/raspberrypi/controller/ccm_algorithm.h b/src/ipa/rpi/controller/ccm_algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/ccm_algorithm.h\nrename to src/ipa/rpi/controller/ccm_algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/ccm_status.h b/src/ipa/rpi/controller/ccm_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/ccm_status.h\nrename to src/ipa/rpi/controller/ccm_status.h\ndiff --git a/src/ipa/raspberrypi/controller/contrast_algorithm.h b/src/ipa/rpi/controller/contrast_algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/contrast_algorithm.h\nrename to src/ipa/rpi/controller/contrast_algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/contrast_status.h b/src/ipa/rpi/controller/contrast_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/contrast_status.h\nrename to src/ipa/rpi/controller/contrast_status.h\ndiff --git a/src/ipa/raspberrypi/controller/controller.cpp b/src/ipa/rpi/controller/controller.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/controller.cpp\nrename to src/ipa/rpi/controller/controller.cpp\ndiff --git a/src/ipa/raspberrypi/controller/controller.h b/src/ipa/rpi/controller/controller.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/controller.h\nrename to src/ipa/rpi/controller/controller.h\ndiff --git a/src/ipa/raspberrypi/controller/denoise_algorithm.h b/src/ipa/rpi/controller/denoise_algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/denoise_algorithm.h\nrename to src/ipa/rpi/controller/denoise_algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/denoise_status.h b/src/ipa/rpi/controller/denoise_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/denoise_status.h\nrename to src/ipa/rpi/controller/denoise_status.h\ndiff --git a/src/ipa/raspberrypi/controller/device_status.cpp b/src/ipa/rpi/controller/device_status.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/device_status.cpp\nrename to src/ipa/rpi/controller/device_status.cpp\ndiff --git a/src/ipa/raspberrypi/controller/device_status.h b/src/ipa/rpi/controller/device_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/device_status.h\nrename to src/ipa/rpi/controller/device_status.h\ndiff --git a/src/ipa/raspberrypi/controller/dpc_status.h b/src/ipa/rpi/controller/dpc_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/dpc_status.h\nrename to src/ipa/rpi/controller/dpc_status.h\ndiff --git a/src/ipa/raspberrypi/controller/geq_status.h b/src/ipa/rpi/controller/geq_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/geq_status.h\nrename to src/ipa/rpi/controller/geq_status.h\ndiff --git a/src/ipa/raspberrypi/controller/histogram.cpp b/src/ipa/rpi/controller/histogram.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/histogram.cpp\nrename to src/ipa/rpi/controller/histogram.cpp\ndiff --git a/src/ipa/raspberrypi/controller/histogram.h b/src/ipa/rpi/controller/histogram.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/histogram.h\nrename to src/ipa/rpi/controller/histogram.h\ndiff --git a/src/ipa/raspberrypi/controller/lux_status.h b/src/ipa/rpi/controller/lux_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/lux_status.h\nrename to src/ipa/rpi/controller/lux_status.h\ndiff --git a/src/ipa/rpi/controller/meson.build b/src/ipa/rpi/controller/meson.build\nnew file mode 100644\nindex 000000000000..90a67412444e\n--- /dev/null\n+++ b/src/ipa/rpi/controller/meson.build\n@@ -0,0 +1,22 @@\n+# SPDX-License-Identifier: CC0-1.0\n+\n+rpi_ipa_controller_sources = files([\n+    'algorithm.cpp',\n+    'controller.cpp',\n+    'device_status.cpp',\n+    'histogram.cpp',\n+    'pwl.cpp',\n+    'rpi/af.cpp',\n+    'rpi/agc.cpp',\n+    'rpi/alsc.cpp',\n+    'rpi/awb.cpp',\n+    'rpi/black_level.cpp',\n+    'rpi/ccm.cpp',\n+    'rpi/contrast.cpp',\n+    'rpi/dpc.cpp',\n+    'rpi/geq.cpp',\n+    'rpi/lux.cpp',\n+    'rpi/noise.cpp',\n+    'rpi/sdn.cpp',\n+    'rpi/sharpen.cpp',\n+])\ndiff --git a/src/ipa/raspberrypi/controller/metadata.h b/src/ipa/rpi/controller/metadata.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/metadata.h\nrename to src/ipa/rpi/controller/metadata.h\ndiff --git a/src/ipa/raspberrypi/controller/noise_status.h b/src/ipa/rpi/controller/noise_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/noise_status.h\nrename to src/ipa/rpi/controller/noise_status.h\ndiff --git a/src/ipa/raspberrypi/controller/pdaf_data.h b/src/ipa/rpi/controller/pdaf_data.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/pdaf_data.h\nrename to src/ipa/rpi/controller/pdaf_data.h\ndiff --git a/src/ipa/raspberrypi/controller/pwl.cpp b/src/ipa/rpi/controller/pwl.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/pwl.cpp\nrename to src/ipa/rpi/controller/pwl.cpp\ndiff --git a/src/ipa/raspberrypi/controller/pwl.h b/src/ipa/rpi/controller/pwl.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/pwl.h\nrename to src/ipa/rpi/controller/pwl.h\ndiff --git a/src/ipa/raspberrypi/controller/region_stats.h b/src/ipa/rpi/controller/region_stats.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/region_stats.h\nrename to src/ipa/rpi/controller/region_stats.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/af.cpp b/src/ipa/rpi/controller/rpi/af.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/af.cpp\nrename to src/ipa/rpi/controller/rpi/af.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/af.h b/src/ipa/rpi/controller/rpi/af.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/af.h\nrename to src/ipa/rpi/controller/rpi/af.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/agc.cpp b/src/ipa/rpi/controller/rpi/agc.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/agc.cpp\nrename to src/ipa/rpi/controller/rpi/agc.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/agc.h b/src/ipa/rpi/controller/rpi/agc.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/agc.h\nrename to src/ipa/rpi/controller/rpi/agc.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/alsc.cpp b/src/ipa/rpi/controller/rpi/alsc.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/alsc.cpp\nrename to src/ipa/rpi/controller/rpi/alsc.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/alsc.h b/src/ipa/rpi/controller/rpi/alsc.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/alsc.h\nrename to src/ipa/rpi/controller/rpi/alsc.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/awb.cpp\nrename to src/ipa/rpi/controller/rpi/awb.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/awb.h b/src/ipa/rpi/controller/rpi/awb.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/awb.h\nrename to src/ipa/rpi/controller/rpi/awb.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/black_level.cpp b/src/ipa/rpi/controller/rpi/black_level.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/black_level.cpp\nrename to src/ipa/rpi/controller/rpi/black_level.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/black_level.h b/src/ipa/rpi/controller/rpi/black_level.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/black_level.h\nrename to src/ipa/rpi/controller/rpi/black_level.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/ccm.cpp b/src/ipa/rpi/controller/rpi/ccm.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/ccm.cpp\nrename to src/ipa/rpi/controller/rpi/ccm.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/ccm.h b/src/ipa/rpi/controller/rpi/ccm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/ccm.h\nrename to src/ipa/rpi/controller/rpi/ccm.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/contrast.cpp b/src/ipa/rpi/controller/rpi/contrast.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/contrast.cpp\nrename to src/ipa/rpi/controller/rpi/contrast.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/contrast.h b/src/ipa/rpi/controller/rpi/contrast.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/contrast.h\nrename to src/ipa/rpi/controller/rpi/contrast.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/dpc.cpp b/src/ipa/rpi/controller/rpi/dpc.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/dpc.cpp\nrename to src/ipa/rpi/controller/rpi/dpc.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/dpc.h b/src/ipa/rpi/controller/rpi/dpc.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/dpc.h\nrename to src/ipa/rpi/controller/rpi/dpc.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/focus.h b/src/ipa/rpi/controller/rpi/focus.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/focus.h\nrename to src/ipa/rpi/controller/rpi/focus.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/geq.cpp b/src/ipa/rpi/controller/rpi/geq.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/geq.cpp\nrename to src/ipa/rpi/controller/rpi/geq.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/geq.h b/src/ipa/rpi/controller/rpi/geq.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/geq.h\nrename to src/ipa/rpi/controller/rpi/geq.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/lux.cpp b/src/ipa/rpi/controller/rpi/lux.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/lux.cpp\nrename to src/ipa/rpi/controller/rpi/lux.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/lux.h b/src/ipa/rpi/controller/rpi/lux.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/lux.h\nrename to src/ipa/rpi/controller/rpi/lux.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/noise.cpp b/src/ipa/rpi/controller/rpi/noise.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/noise.cpp\nrename to src/ipa/rpi/controller/rpi/noise.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/noise.h b/src/ipa/rpi/controller/rpi/noise.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/noise.h\nrename to src/ipa/rpi/controller/rpi/noise.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/sdn.cpp b/src/ipa/rpi/controller/rpi/sdn.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/sdn.cpp\nrename to src/ipa/rpi/controller/rpi/sdn.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/sdn.h b/src/ipa/rpi/controller/rpi/sdn.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/sdn.h\nrename to src/ipa/rpi/controller/rpi/sdn.h\ndiff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.cpp b/src/ipa/rpi/controller/rpi/sharpen.cpp\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/sharpen.cpp\nrename to src/ipa/rpi/controller/rpi/sharpen.cpp\ndiff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.h b/src/ipa/rpi/controller/rpi/sharpen.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/rpi/sharpen.h\nrename to src/ipa/rpi/controller/rpi/sharpen.h\ndiff --git a/src/ipa/raspberrypi/controller/sharpen_algorithm.h b/src/ipa/rpi/controller/sharpen_algorithm.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/sharpen_algorithm.h\nrename to src/ipa/rpi/controller/sharpen_algorithm.h\ndiff --git a/src/ipa/raspberrypi/controller/sharpen_status.h b/src/ipa/rpi/controller/sharpen_status.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/controller/sharpen_status.h\nrename to src/ipa/rpi/controller/sharpen_status.h\ndiff --git a/src/ipa/raspberrypi/statistics.h b/src/ipa/rpi/controller/statistics.h\nsimilarity index 100%\nrename from src/ipa/raspberrypi/statistics.h\nrename to src/ipa/rpi/controller/statistics.h\ndiff --git a/src/ipa/raspberrypi/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx219.json\nrename to src/ipa/rpi/vc4/data/imx219.json\ndiff --git a/src/ipa/raspberrypi/data/imx219_noir.json b/src/ipa/rpi/vc4/data/imx219_noir.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx219_noir.json\nrename to src/ipa/rpi/vc4/data/imx219_noir.json\ndiff --git a/src/ipa/raspberrypi/data/imx290.json b/src/ipa/rpi/vc4/data/imx290.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx290.json\nrename to src/ipa/rpi/vc4/data/imx290.json\ndiff --git a/src/ipa/raspberrypi/data/imx296.json b/src/ipa/rpi/vc4/data/imx296.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx296.json\nrename to src/ipa/rpi/vc4/data/imx296.json\ndiff --git a/src/ipa/raspberrypi/data/imx296_mono.json b/src/ipa/rpi/vc4/data/imx296_mono.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx296_mono.json\nrename to src/ipa/rpi/vc4/data/imx296_mono.json\ndiff --git a/src/ipa/raspberrypi/data/imx378.json b/src/ipa/rpi/vc4/data/imx378.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx378.json\nrename to src/ipa/rpi/vc4/data/imx378.json\ndiff --git a/src/ipa/raspberrypi/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx477.json\nrename to src/ipa/rpi/vc4/data/imx477.json\ndiff --git a/src/ipa/raspberrypi/data/imx477_noir.json b/src/ipa/rpi/vc4/data/imx477_noir.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx477_noir.json\nrename to src/ipa/rpi/vc4/data/imx477_noir.json\ndiff --git a/src/ipa/raspberrypi/data/imx477_scientific.json b/src/ipa/rpi/vc4/data/imx477_scientific.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx477_scientific.json\nrename to src/ipa/rpi/vc4/data/imx477_scientific.json\ndiff --git a/src/ipa/raspberrypi/data/imx477_v1.json b/src/ipa/rpi/vc4/data/imx477_v1.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx477_v1.json\nrename to src/ipa/rpi/vc4/data/imx477_v1.json\ndiff --git a/src/ipa/raspberrypi/data/imx519.json b/src/ipa/rpi/vc4/data/imx519.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx519.json\nrename to src/ipa/rpi/vc4/data/imx519.json\ndiff --git a/src/ipa/raspberrypi/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx708.json\nrename to src/ipa/rpi/vc4/data/imx708.json\ndiff --git a/src/ipa/raspberrypi/data/imx708_noir.json b/src/ipa/rpi/vc4/data/imx708_noir.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx708_noir.json\nrename to src/ipa/rpi/vc4/data/imx708_noir.json\ndiff --git a/src/ipa/raspberrypi/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx708_wide.json\nrename to src/ipa/rpi/vc4/data/imx708_wide.json\ndiff --git a/src/ipa/raspberrypi/data/imx708_wide_noir.json b/src/ipa/rpi/vc4/data/imx708_wide_noir.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/imx708_wide_noir.json\nrename to src/ipa/rpi/vc4/data/imx708_wide_noir.json\ndiff --git a/src/ipa/raspberrypi/data/meson.build b/src/ipa/rpi/vc4/data/meson.build\nsimilarity index 89%\nrename from src/ipa/raspberrypi/data/meson.build\nrename to src/ipa/rpi/vc4/data/meson.build\nindex b163a052f57c..327462fa2420 100644\n--- a/src/ipa/raspberrypi/data/meson.build\n+++ b/src/ipa/rpi/vc4/data/meson.build\n@@ -23,4 +23,4 @@ conf_files = files([\n ])\n \n install_data(conf_files,\n-             install_dir : ipa_data_dir / 'raspberrypi')\n+             install_dir : ipa_data_dir / 'rpi/vc4')\ndiff --git a/src/ipa/raspberrypi/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/ov5647.json\nrename to src/ipa/rpi/vc4/data/ov5647.json\ndiff --git a/src/ipa/raspberrypi/data/ov5647_noir.json b/src/ipa/rpi/vc4/data/ov5647_noir.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/ov5647_noir.json\nrename to src/ipa/rpi/vc4/data/ov5647_noir.json\ndiff --git a/src/ipa/raspberrypi/data/ov9281_mono.json b/src/ipa/rpi/vc4/data/ov9281_mono.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/ov9281_mono.json\nrename to src/ipa/rpi/vc4/data/ov9281_mono.json\ndiff --git a/src/ipa/raspberrypi/data/se327m12.json b/src/ipa/rpi/vc4/data/se327m12.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/se327m12.json\nrename to src/ipa/rpi/vc4/data/se327m12.json\ndiff --git a/src/ipa/raspberrypi/data/uncalibrated.json b/src/ipa/rpi/vc4/data/uncalibrated.json\nsimilarity index 100%\nrename from src/ipa/raspberrypi/data/uncalibrated.json\nrename to src/ipa/rpi/vc4/data/uncalibrated.json\ndiff --git a/src/ipa/rpi/vc4/meson.build b/src/ipa/rpi/vc4/meson.build\nnew file mode 100644\nindex 000000000000..992d0f1ab5a7\n--- /dev/null\n+++ b/src/ipa/rpi/vc4/meson.build\n@@ -0,0 +1,40 @@\n+# SPDX-License-Identifier: CC0-1.0\n+\n+ipa_name = 'ipa_vc4'\n+\n+vc4_ipa_deps = [\n+    libcamera_private,\n+    libatomic,\n+]\n+\n+vc4_ipa_includes = [\n+    ipa_includes,\n+    libipa_includes,\n+]\n+\n+vc4_ipa_sources = files([\n+    'raspberrypi.cpp',\n+])\n+\n+vc4_ipa_includes += include_directories('..')\n+vc4_ipa_sources += [rpi_ipa_cam_helper_sources, rpi_ipa_controller_sources]\n+\n+mod = shared_module(ipa_name,\n+                    [vc4_ipa_sources, libcamera_generated_ipa_headers],\n+                    name_prefix : '',\n+                    include_directories : vc4_ipa_includes,\n+                    dependencies : vc4_ipa_deps,\n+                    link_with : libipa,\n+                    install : true,\n+                    install_dir : ipa_install_dir)\n+\n+if ipa_sign_module\n+    custom_target(ipa_name + '.so.sign',\n+                  input : mod,\n+                  output : ipa_name + '.so.sign',\n+                  command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],\n+                  install : false,\n+                  build_by_default : true)\n+endif\n+\n+subdir('data')\ndiff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/rpi/vc4/raspberrypi.cpp\nsimilarity index 98%\nrename from src/ipa/raspberrypi/raspberrypi.cpp\nrename to src/ipa/rpi/vc4/raspberrypi.cpp\nindex 9c29fa9a5e5c..841635ccde2b 100644\n--- a/src/ipa/raspberrypi/raspberrypi.cpp\n+++ b/src/ipa/rpi/vc4/raspberrypi.cpp\n@@ -33,29 +33,29 @@\n \n #include \"libcamera/internal/mapped_framebuffer.h\"\n \n-#include \"af_algorithm.h\"\n-#include \"af_status.h\"\n-#include \"agc_algorithm.h\"\n-#include \"agc_status.h\"\n-#include \"alsc_status.h\"\n-#include \"awb_algorithm.h\"\n-#include \"awb_status.h\"\n-#include \"black_level_status.h\"\n-#include \"cam_helper.h\"\n-#include \"ccm_algorithm.h\"\n-#include \"ccm_status.h\"\n-#include \"contrast_algorithm.h\"\n-#include \"contrast_status.h\"\n-#include \"controller.h\"\n-#include \"denoise_algorithm.h\"\n-#include \"denoise_status.h\"\n-#include \"dpc_status.h\"\n-#include \"geq_status.h\"\n-#include \"lux_status.h\"\n-#include \"metadata.h\"\n-#include \"sharpen_algorithm.h\"\n-#include \"sharpen_status.h\"\n-#include \"statistics.h\"\n+#include \"cam_helper/cam_helper.h\"\n+#include \"controller/af_algorithm.h\"\n+#include \"controller/af_status.h\"\n+#include \"controller/agc_algorithm.h\"\n+#include \"controller/agc_status.h\"\n+#include \"controller/alsc_status.h\"\n+#include \"controller/awb_algorithm.h\"\n+#include \"controller/awb_status.h\"\n+#include \"controller/black_level_status.h\"\n+#include \"controller/ccm_algorithm.h\"\n+#include \"controller/ccm_status.h\"\n+#include \"controller/contrast_algorithm.h\"\n+#include \"controller/contrast_status.h\"\n+#include \"controller/controller.h\"\n+#include \"controller/denoise_algorithm.h\"\n+#include \"controller/denoise_status.h\"\n+#include \"controller/dpc_status.h\"\n+#include \"controller/geq_status.h\"\n+#include \"controller/lux_status.h\"\n+#include \"controller/metadata.h\"\n+#include \"controller/sharpen_algorithm.h\"\n+#include \"controller/sharpen_status.h\"\n+#include \"controller/statistics.h\"\n \n namespace libcamera {\n \n@@ -1840,7 +1840,7 @@ const struct IPAModuleInfo ipaModuleInfo = {\n \tIPA_MODULE_API_VERSION,\n \t1,\n \t\"PipelineHandlerRPi\",\n-\t\"raspberrypi\",\n+\t\"vc4\",\n };\n \n IPAInterface *ipaCreate()\ndiff --git a/src/libcamera/pipeline/rpi/vc4/raspberrypi.cpp b/src/libcamera/pipeline/rpi/vc4/raspberrypi.cpp\nindex 4595773d2517..cfde7f2e2229 100644\n--- a/src/libcamera/pipeline/rpi/vc4/raspberrypi.cpp\n+++ b/src/libcamera/pipeline/rpi/vc4/raspberrypi.cpp\n@@ -1668,7 +1668,7 @@ int RPiCameraData::loadIPA(ipa::RPi::IPAInitResult *result)\n \t\tstd::string model = sensor_->model();\n \t\tif (isMonoSensor(sensor_))\n \t\t\tmodel += \"_mono\";\n-\t\tconfigurationFile = ipa_->configurationFile(model + \".json\", \"\");\n+\t\tconfigurationFile = ipa_->configurationFile(model + \".json\", \"rpi\");\n \t} else {\n \t\tconfigurationFile = std::string(configFromEnv);\n \t}\n",
    "prefixes": [
        "libcamera-devel",
        "04/13"
    ]
}