[libcamera-devel,06/13] ipa: raspberrypi: Refactor and move IPA code
diff mbox series

Message ID 20230503122035.32026-7-naush@raspberrypi.com
State Superseded
Headers show
Series
  • Raspberry Pi: Code refactoring
Related show

Commit Message

Naushir Patuck May 3, 2023, 12:20 p.m. UTC
Split the Raspberry Pi IPA code into common and VC4/BCM2835 specific
file structures.

The common code files now live in src/ipa/rpi/{cam_helper,controller}/
and the vc4 specific files in src/ipa/rpi/vc4/.

To build the IPA, the meson configuration option to select
the Raspberry Pi IPA has now changed from "raspberrypi" to
"rpi/vc4":

meson setup build --Dipas=rpi/vc4

With this change, the camera tuning files are now installed under
share/libcamera/ipa/rpi/vc4/

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
 Documentation/environment_variables.rst       |  2 +-
 meson_options.txt                             |  2 +-
 src/ipa/raspberrypi/meson.build               | 68 -------------------
 src/ipa/{raspberrypi => rpi}/README.md        |  0
 .../cam_helper}/cam_helper.cpp                |  0
 .../cam_helper}/cam_helper.h                  |  2 +-
 .../cam_helper}/cam_helper_imx219.cpp         |  0
 .../cam_helper}/cam_helper_imx290.cpp         |  0
 .../cam_helper}/cam_helper_imx296.cpp         |  0
 .../cam_helper}/cam_helper_imx477.cpp         |  0
 .../cam_helper}/cam_helper_imx519.cpp         |  0
 .../cam_helper}/cam_helper_imx708.cpp         |  0
 .../cam_helper}/cam_helper_ov5647.cpp         |  0
 .../cam_helper}/cam_helper_ov9281.cpp         |  0
 .../cam_helper}/md_parser.h                   |  0
 .../cam_helper}/md_parser_smia.cpp            |  0
 src/ipa/rpi/cam_helper/meson.build            | 26 +++++++
 .../controller/af_algorithm.h                 |  0
 .../controller/af_status.h                    |  0
 .../controller/agc_algorithm.h                |  0
 .../controller/agc_status.h                   |  0
 .../controller/algorithm.cpp                  |  0
 .../controller/algorithm.h                    |  0
 .../controller/alsc_status.h                  |  0
 .../controller/awb_algorithm.h                |  0
 .../controller/awb_status.h                   |  0
 .../controller/black_level_status.h           |  0
 .../controller/camera_mode.h                  |  0
 .../controller/ccm_algorithm.h                |  0
 .../controller/ccm_status.h                   |  0
 .../controller/contrast_algorithm.h           |  0
 .../controller/contrast_status.h              |  0
 .../controller/controller.cpp                 |  0
 .../controller/controller.h                   |  0
 .../controller/denoise_algorithm.h            |  0
 .../controller/denoise_status.h               |  0
 .../controller/device_status.cpp              |  0
 .../controller/device_status.h                |  0
 .../controller/dpc_status.h                   |  0
 .../controller/geq_status.h                   |  0
 .../controller/histogram.cpp                  |  0
 .../controller/histogram.h                    |  0
 .../controller/lux_status.h                   |  0
 src/ipa/rpi/controller/meson.build            | 29 ++++++++
 .../controller/metadata.h                     |  0
 .../controller/noise_status.h                 |  0
 .../controller/pdaf_data.h                    |  0
 .../{raspberrypi => rpi}/controller/pwl.cpp   |  0
 src/ipa/{raspberrypi => rpi}/controller/pwl.h |  0
 .../controller/region_stats.h                 |  0
 .../controller/rpi/af.cpp                     |  0
 .../{raspberrypi => rpi}/controller/rpi/af.h  |  0
 .../controller/rpi/agc.cpp                    |  0
 .../{raspberrypi => rpi}/controller/rpi/agc.h |  0
 .../controller/rpi/alsc.cpp                   |  0
 .../controller/rpi/alsc.h                     |  0
 .../controller/rpi/awb.cpp                    |  0
 .../{raspberrypi => rpi}/controller/rpi/awb.h |  0
 .../controller/rpi/black_level.cpp            |  0
 .../controller/rpi/black_level.h              |  0
 .../controller/rpi/ccm.cpp                    |  0
 .../{raspberrypi => rpi}/controller/rpi/ccm.h |  0
 .../controller/rpi/contrast.cpp               |  0
 .../controller/rpi/contrast.h                 |  0
 .../controller/rpi/dpc.cpp                    |  0
 .../{raspberrypi => rpi}/controller/rpi/dpc.h |  0
 .../controller/rpi/focus.h                    |  0
 .../controller/rpi/geq.cpp                    |  0
 .../{raspberrypi => rpi}/controller/rpi/geq.h |  0
 .../controller/rpi/lux.cpp                    |  0
 .../{raspberrypi => rpi}/controller/rpi/lux.h |  0
 .../controller/rpi/noise.cpp                  |  0
 .../controller/rpi/noise.h                    |  0
 .../controller/rpi/sdn.cpp                    |  0
 .../{raspberrypi => rpi}/controller/rpi/sdn.h |  0
 .../controller/rpi/sharpen.cpp                |  0
 .../controller/rpi/sharpen.h                  |  0
 .../controller/sharpen_algorithm.h            |  0
 .../controller/sharpen_status.h               |  0
 .../controller}/statistics.h                  |  0
 src/ipa/rpi/meson.build                       | 13 ++++
 .../{raspberrypi => rpi/vc4}/data/imx219.json |  0
 .../vc4}/data/imx219_noir.json                |  0
 .../{raspberrypi => rpi/vc4}/data/imx290.json |  0
 .../{raspberrypi => rpi/vc4}/data/imx296.json |  0
 .../vc4}/data/imx296_mono.json                |  0
 .../{raspberrypi => rpi/vc4}/data/imx378.json |  0
 .../{raspberrypi => rpi/vc4}/data/imx477.json |  0
 .../vc4}/data/imx477_noir.json                |  0
 .../vc4}/data/imx477_scientific.json          |  0
 .../vc4}/data/imx477_v1.json                  |  0
 .../{raspberrypi => rpi/vc4}/data/imx519.json |  0
 .../{raspberrypi => rpi/vc4}/data/imx708.json |  0
 .../vc4}/data/imx708_noir.json                |  0
 .../vc4}/data/imx708_wide.json                |  0
 .../vc4}/data/imx708_wide_noir.json           |  0
 .../{raspberrypi => rpi/vc4}/data/meson.build |  2 +-
 .../{raspberrypi => rpi/vc4}/data/ov5647.json |  0
 .../vc4}/data/ov5647_noir.json                |  0
 .../vc4}/data/ov9281_mono.json                |  0
 .../vc4}/data/se327m12.json                   |  0
 .../vc4}/data/uncalibrated.json               |  0
 src/ipa/rpi/vc4/meson.build                   | 48 +++++++++++++
 .../{raspberrypi => rpi/vc4}/raspberrypi.cpp  | 48 ++++++-------
 104 files changed, 144 insertions(+), 96 deletions(-)
 delete mode 100644 src/ipa/raspberrypi/meson.build
 rename src/ipa/{raspberrypi => rpi}/README.md (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.h (99%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx219.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx290.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx296.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx477.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx519.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx708.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov5647.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov9281.cpp (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser.h (100%)
 rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser_smia.cpp (100%)
 create mode 100644 src/ipa/rpi/cam_helper/meson.build
 rename src/ipa/{raspberrypi => rpi}/controller/af_algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/af_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/agc_algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/agc_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/algorithm.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/alsc_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/awb_algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/awb_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/black_level_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/camera_mode.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/ccm_algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/ccm_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/contrast_algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/contrast_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/controller.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/controller.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/denoise_algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/denoise_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/device_status.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/device_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/dpc_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/geq_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/histogram.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/histogram.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/lux_status.h (100%)
 create mode 100644 src/ipa/rpi/controller/meson.build
 rename src/ipa/{raspberrypi => rpi}/controller/metadata.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/noise_status.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/pdaf_data.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/pwl.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/pwl.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/region_stats.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/focus.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.cpp (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/sharpen_algorithm.h (100%)
 rename src/ipa/{raspberrypi => rpi}/controller/sharpen_status.h (100%)
 rename src/ipa/{raspberrypi => rpi/controller}/statistics.h (100%)
 create mode 100644 src/ipa/rpi/meson.build
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219_noir.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx290.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296_mono.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx378.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_noir.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_scientific.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_v1.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx519.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_noir.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide_noir.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/meson.build (89%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647_noir.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/ov9281_mono.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/se327m12.json (100%)
 rename src/ipa/{raspberrypi => rpi/vc4}/data/uncalibrated.json (100%)
 create mode 100644 src/ipa/rpi/vc4/meson.build
 rename src/ipa/{raspberrypi => rpi/vc4}/raspberrypi.cpp (98%)

Comments

Laurent Pinchart May 4, 2023, 4:33 p.m. UTC | #1
Hi Naush,

Thank you for the patch.

On Wed, May 03, 2023 at 01:20:28PM +0100, Naushir Patuck via libcamera-devel wrote:
> Split the Raspberry Pi IPA code into common and VC4/BCM2835 specific
> file structures.
> 
> The common code files now live in src/ipa/rpi/{cam_helper,controller}/
> and the vc4 specific files in src/ipa/rpi/vc4/.

s/vc4 specific/vc4-specific/

> To build the IPA, the meson configuration option to select
> the Raspberry Pi IPA has now changed from "raspberrypi" to
> "rpi/vc4":
> 
> meson setup build --Dipas=rpi/vc4
> 
> With this change, the camera tuning files are now installed under
> share/libcamera/ipa/rpi/vc4/
> 
> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> ---
>  Documentation/environment_variables.rst       |  2 +-
>  meson_options.txt                             |  2 +-
>  src/ipa/raspberrypi/meson.build               | 68 -------------------
>  src/ipa/{raspberrypi => rpi}/README.md        |  0
>  .../cam_helper}/cam_helper.cpp                |  0
>  .../cam_helper}/cam_helper.h                  |  2 +-
>  .../cam_helper}/cam_helper_imx219.cpp         |  0
>  .../cam_helper}/cam_helper_imx290.cpp         |  0
>  .../cam_helper}/cam_helper_imx296.cpp         |  0
>  .../cam_helper}/cam_helper_imx477.cpp         |  0
>  .../cam_helper}/cam_helper_imx519.cpp         |  0
>  .../cam_helper}/cam_helper_imx708.cpp         |  0
>  .../cam_helper}/cam_helper_ov5647.cpp         |  0
>  .../cam_helper}/cam_helper_ov9281.cpp         |  0
>  .../cam_helper}/md_parser.h                   |  0
>  .../cam_helper}/md_parser_smia.cpp            |  0
>  src/ipa/rpi/cam_helper/meson.build            | 26 +++++++
>  .../controller/af_algorithm.h                 |  0
>  .../controller/af_status.h                    |  0
>  .../controller/agc_algorithm.h                |  0
>  .../controller/agc_status.h                   |  0
>  .../controller/algorithm.cpp                  |  0
>  .../controller/algorithm.h                    |  0
>  .../controller/alsc_status.h                  |  0
>  .../controller/awb_algorithm.h                |  0
>  .../controller/awb_status.h                   |  0
>  .../controller/black_level_status.h           |  0
>  .../controller/camera_mode.h                  |  0
>  .../controller/ccm_algorithm.h                |  0
>  .../controller/ccm_status.h                   |  0
>  .../controller/contrast_algorithm.h           |  0
>  .../controller/contrast_status.h              |  0
>  .../controller/controller.cpp                 |  0
>  .../controller/controller.h                   |  0
>  .../controller/denoise_algorithm.h            |  0
>  .../controller/denoise_status.h               |  0
>  .../controller/device_status.cpp              |  0
>  .../controller/device_status.h                |  0
>  .../controller/dpc_status.h                   |  0
>  .../controller/geq_status.h                   |  0
>  .../controller/histogram.cpp                  |  0
>  .../controller/histogram.h                    |  0
>  .../controller/lux_status.h                   |  0
>  src/ipa/rpi/controller/meson.build            | 29 ++++++++
>  .../controller/metadata.h                     |  0
>  .../controller/noise_status.h                 |  0
>  .../controller/pdaf_data.h                    |  0
>  .../{raspberrypi => rpi}/controller/pwl.cpp   |  0
>  src/ipa/{raspberrypi => rpi}/controller/pwl.h |  0
>  .../controller/region_stats.h                 |  0
>  .../controller/rpi/af.cpp                     |  0
>  .../{raspberrypi => rpi}/controller/rpi/af.h  |  0
>  .../controller/rpi/agc.cpp                    |  0
>  .../{raspberrypi => rpi}/controller/rpi/agc.h |  0
>  .../controller/rpi/alsc.cpp                   |  0
>  .../controller/rpi/alsc.h                     |  0
>  .../controller/rpi/awb.cpp                    |  0
>  .../{raspberrypi => rpi}/controller/rpi/awb.h |  0
>  .../controller/rpi/black_level.cpp            |  0
>  .../controller/rpi/black_level.h              |  0
>  .../controller/rpi/ccm.cpp                    |  0
>  .../{raspberrypi => rpi}/controller/rpi/ccm.h |  0
>  .../controller/rpi/contrast.cpp               |  0
>  .../controller/rpi/contrast.h                 |  0
>  .../controller/rpi/dpc.cpp                    |  0
>  .../{raspberrypi => rpi}/controller/rpi/dpc.h |  0
>  .../controller/rpi/focus.h                    |  0
>  .../controller/rpi/geq.cpp                    |  0
>  .../{raspberrypi => rpi}/controller/rpi/geq.h |  0
>  .../controller/rpi/lux.cpp                    |  0
>  .../{raspberrypi => rpi}/controller/rpi/lux.h |  0
>  .../controller/rpi/noise.cpp                  |  0
>  .../controller/rpi/noise.h                    |  0
>  .../controller/rpi/sdn.cpp                    |  0
>  .../{raspberrypi => rpi}/controller/rpi/sdn.h |  0
>  .../controller/rpi/sharpen.cpp                |  0
>  .../controller/rpi/sharpen.h                  |  0
>  .../controller/sharpen_algorithm.h            |  0
>  .../controller/sharpen_status.h               |  0
>  .../controller}/statistics.h                  |  0
>  src/ipa/rpi/meson.build                       | 13 ++++
>  .../{raspberrypi => rpi/vc4}/data/imx219.json |  0
>  .../vc4}/data/imx219_noir.json                |  0
>  .../{raspberrypi => rpi/vc4}/data/imx290.json |  0
>  .../{raspberrypi => rpi/vc4}/data/imx296.json |  0
>  .../vc4}/data/imx296_mono.json                |  0
>  .../{raspberrypi => rpi/vc4}/data/imx378.json |  0
>  .../{raspberrypi => rpi/vc4}/data/imx477.json |  0
>  .../vc4}/data/imx477_noir.json                |  0
>  .../vc4}/data/imx477_scientific.json          |  0
>  .../vc4}/data/imx477_v1.json                  |  0
>  .../{raspberrypi => rpi/vc4}/data/imx519.json |  0
>  .../{raspberrypi => rpi/vc4}/data/imx708.json |  0
>  .../vc4}/data/imx708_noir.json                |  0
>  .../vc4}/data/imx708_wide.json                |  0
>  .../vc4}/data/imx708_wide_noir.json           |  0
>  .../{raspberrypi => rpi/vc4}/data/meson.build |  2 +-
>  .../{raspberrypi => rpi/vc4}/data/ov5647.json |  0
>  .../vc4}/data/ov5647_noir.json                |  0
>  .../vc4}/data/ov9281_mono.json                |  0
>  .../vc4}/data/se327m12.json                   |  0
>  .../vc4}/data/uncalibrated.json               |  0
>  src/ipa/rpi/vc4/meson.build                   | 48 +++++++++++++
>  .../{raspberrypi => rpi/vc4}/raspberrypi.cpp  | 48 ++++++-------
>  104 files changed, 144 insertions(+), 96 deletions(-)
>  delete mode 100644 src/ipa/raspberrypi/meson.build
>  rename src/ipa/{raspberrypi => rpi}/README.md (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.h (99%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx219.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx290.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx296.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx477.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx519.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx708.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov5647.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov9281.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser.h (100%)
>  rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser_smia.cpp (100%)
>  create mode 100644 src/ipa/rpi/cam_helper/meson.build
>  rename src/ipa/{raspberrypi => rpi}/controller/af_algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/af_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/agc_algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/agc_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/algorithm.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/alsc_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/awb_algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/awb_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/black_level_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/camera_mode.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/ccm_algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/ccm_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/contrast_algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/contrast_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/controller.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/controller.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/denoise_algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/denoise_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/device_status.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/device_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/dpc_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/geq_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/histogram.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/histogram.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/lux_status.h (100%)
>  create mode 100644 src/ipa/rpi/controller/meson.build
>  rename src/ipa/{raspberrypi => rpi}/controller/metadata.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/noise_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/pdaf_data.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/pwl.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/pwl.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/region_stats.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/focus.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.cpp (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/sharpen_algorithm.h (100%)
>  rename src/ipa/{raspberrypi => rpi}/controller/sharpen_status.h (100%)
>  rename src/ipa/{raspberrypi => rpi/controller}/statistics.h (100%)
>  create mode 100644 src/ipa/rpi/meson.build
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219_noir.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx290.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296_mono.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx378.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_noir.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_scientific.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_v1.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx519.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_noir.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide_noir.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/meson.build (89%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647_noir.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/ov9281_mono.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/se327m12.json (100%)
>  rename src/ipa/{raspberrypi => rpi/vc4}/data/uncalibrated.json (100%)
>  create mode 100644 src/ipa/rpi/vc4/meson.build
>  rename src/ipa/{raspberrypi => rpi/vc4}/raspberrypi.cpp (98%)

You're missing a s@raspberrypi@rpi/vc4@ rename in .reuse/dep5.

> 
> diff --git a/Documentation/environment_variables.rst b/Documentation/environment_variables.rst
> index 4bf38b877897..a9b230bcd93e 100644
> --- a/Documentation/environment_variables.rst
> +++ b/Documentation/environment_variables.rst
> @@ -143,7 +143,7 @@ contain tuning parameters for the algorithms, in JSON format.
>  The ``LIBCAMERA_IPA_CONFIG_PATH`` variable can be used to specify custom
>  storage locations to search for those configuration files.
>  
> -`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/raspberrypi/data>`__
> +`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/rpi/vc4/data>`__
>  
>  IPA module
>  ~~~~~~~~~~
> diff --git a/meson_options.txt b/meson_options.txt
> index b4afb8e591a8..c8cd53b49ba1 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -27,7 +27,7 @@ option('gstreamer',
>  
>  option('ipas',
>          type : 'array',
> -        choices : ['ipu3', 'raspberrypi', 'rkisp1', 'vimc'],
> +        choices : ['ipu3', 'rkisp1', 'rpi/vc4', 'vimc'],
>          description : 'Select which IPA modules to build')
>  
>  option('lc-compliance',
> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> deleted file mode 100644
> index 95437cbcc962..000000000000
> --- a/src/ipa/raspberrypi/meson.build
> +++ /dev/null
> @@ -1,68 +0,0 @@
> -# SPDX-License-Identifier: CC0-1.0
> -
> -ipa_name = 'ipa_rpi'
> -
> -rpi_ipa_deps = [
> -    libcamera_private,
> -    libatomic,
> -]
> -
> -rpi_ipa_includes = [
> -    ipa_includes,
> -    libipa_includes,
> -    include_directories('controller')
> -]
> -
> -rpi_ipa_sources = files([
> -    'raspberrypi.cpp',
> -    'md_parser_smia.cpp',
> -    'cam_helper.cpp',
> -    'cam_helper_ov5647.cpp',
> -    'cam_helper_imx219.cpp',
> -    'cam_helper_imx290.cpp',
> -    'cam_helper_imx296.cpp',
> -    'cam_helper_imx477.cpp',
> -    'cam_helper_imx519.cpp',
> -    'cam_helper_imx708.cpp',
> -    'cam_helper_ov9281.cpp',
> -    'controller/controller.cpp',
> -    'controller/histogram.cpp',
> -    'controller/algorithm.cpp',
> -    'controller/rpi/af.cpp',
> -    'controller/rpi/alsc.cpp',
> -    'controller/rpi/awb.cpp',
> -    'controller/rpi/sharpen.cpp',
> -    'controller/rpi/black_level.cpp',
> -    'controller/rpi/geq.cpp',
> -    'controller/rpi/noise.cpp',
> -    'controller/rpi/lux.cpp',
> -    'controller/rpi/agc.cpp',
> -    'controller/rpi/dpc.cpp',
> -    'controller/rpi/ccm.cpp',
> -    'controller/rpi/contrast.cpp',
> -    'controller/rpi/sdn.cpp',
> -    'controller/pwl.cpp',
> -    'controller/device_status.cpp',
> -])
> -
> -mod = shared_module(ipa_name,
> -                    [rpi_ipa_sources, libcamera_generated_ipa_headers],
> -                    name_prefix : '',
> -                    include_directories : rpi_ipa_includes,
> -                    dependencies : rpi_ipa_deps,
> -                    link_with : libipa,
> -                    install : true,
> -                    install_dir : ipa_install_dir)
> -
> -if ipa_sign_module
> -    custom_target(ipa_name + '.so.sign',
> -                  input : mod,
> -                  output : ipa_name + '.so.sign',
> -                  command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],
> -                  install : false,
> -                  build_by_default : true)
> -endif
> -
> -subdir('data')
> -
> -ipa_names += ipa_name
> diff --git a/src/ipa/raspberrypi/README.md b/src/ipa/rpi/README.md
> similarity index 100%
> rename from src/ipa/raspberrypi/README.md
> rename to src/ipa/rpi/README.md
> diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/rpi/cam_helper/cam_helper.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper.h b/src/ipa/rpi/cam_helper/cam_helper.h
> similarity index 99%
> rename from src/ipa/raspberrypi/cam_helper.h
> rename to src/ipa/rpi/cam_helper/cam_helper.h
> index b3f8c9803094..58a4b202d5a8 100644
> --- a/src/ipa/raspberrypi/cam_helper.h
> +++ b/src/ipa/rpi/cam_helper/cam_helper.h
> @@ -13,7 +13,7 @@
>  #include <libcamera/base/span.h>
>  #include <libcamera/base/utils.h>
>  
> -#include "camera_mode.h"
> +#include "controller/camera_mode.h"
>  #include "controller/controller.h"
>  #include "controller/metadata.h"
>  #include "md_parser.h"
> diff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_imx219.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper_imx290.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_imx290.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper_imx296.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_imx296.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_imx477.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper_imx519.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_imx519.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper_imx708.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_imx708.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper_ov5647.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_ov5647.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> diff --git a/src/ipa/raspberrypi/cam_helper_ov9281.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/cam_helper_ov9281.cpp
> rename to src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> diff --git a/src/ipa/raspberrypi/md_parser.h b/src/ipa/rpi/cam_helper/md_parser.h
> similarity index 100%
> rename from src/ipa/raspberrypi/md_parser.h
> rename to src/ipa/rpi/cam_helper/md_parser.h
> diff --git a/src/ipa/raspberrypi/md_parser_smia.cpp b/src/ipa/rpi/cam_helper/md_parser_smia.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/md_parser_smia.cpp
> rename to src/ipa/rpi/cam_helper/md_parser_smia.cpp
> diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build
> new file mode 100644
> index 000000000000..bdf2db8eb742
> --- /dev/null
> +++ b/src/ipa/rpi/cam_helper/meson.build
> @@ -0,0 +1,26 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
> +rpi_ipa_cam_helper_sources = files([
> +    'cam_helper.cpp',
> +    'cam_helper_ov5647.cpp',
> +    'cam_helper_imx219.cpp',
> +    'cam_helper_imx290.cpp',
> +    'cam_helper_imx296.cpp',
> +    'cam_helper_imx477.cpp',
> +    'cam_helper_imx519.cpp',
> +    'cam_helper_imx708.cpp',
> +    'cam_helper_ov9281.cpp',
> +    'md_parser_smia.cpp',
> +])
> +
> +rpi_ipa_cam_helper_includes = [
> +    include_directories('..'),
> +]
> +
> +rpi_ipa_cam_helper_deps = [
> +    libcamera_private,
> +]
> +
> +rpi_ipa_cam_helper_lib = static_library('rpi_ipa_cam_helper', rpi_ipa_cam_helper_sources,
> +                                        include_directories : rpi_ipa_cam_helper_includes,
> +                                        dependencies : rpi_ipa_cam_helper_deps)
> diff --git a/src/ipa/raspberrypi/controller/af_algorithm.h b/src/ipa/rpi/controller/af_algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/af_algorithm.h
> rename to src/ipa/rpi/controller/af_algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/af_status.h b/src/ipa/rpi/controller/af_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/af_status.h
> rename to src/ipa/rpi/controller/af_status.h
> diff --git a/src/ipa/raspberrypi/controller/agc_algorithm.h b/src/ipa/rpi/controller/agc_algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/agc_algorithm.h
> rename to src/ipa/rpi/controller/agc_algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/agc_status.h b/src/ipa/rpi/controller/agc_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/agc_status.h
> rename to src/ipa/rpi/controller/agc_status.h
> diff --git a/src/ipa/raspberrypi/controller/algorithm.cpp b/src/ipa/rpi/controller/algorithm.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/algorithm.cpp
> rename to src/ipa/rpi/controller/algorithm.cpp
> diff --git a/src/ipa/raspberrypi/controller/algorithm.h b/src/ipa/rpi/controller/algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/algorithm.h
> rename to src/ipa/rpi/controller/algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/alsc_status.h b/src/ipa/rpi/controller/alsc_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/alsc_status.h
> rename to src/ipa/rpi/controller/alsc_status.h
> diff --git a/src/ipa/raspberrypi/controller/awb_algorithm.h b/src/ipa/rpi/controller/awb_algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/awb_algorithm.h
> rename to src/ipa/rpi/controller/awb_algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/awb_status.h b/src/ipa/rpi/controller/awb_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/awb_status.h
> rename to src/ipa/rpi/controller/awb_status.h
> diff --git a/src/ipa/raspberrypi/controller/black_level_status.h b/src/ipa/rpi/controller/black_level_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/black_level_status.h
> rename to src/ipa/rpi/controller/black_level_status.h
> diff --git a/src/ipa/raspberrypi/controller/camera_mode.h b/src/ipa/rpi/controller/camera_mode.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/camera_mode.h
> rename to src/ipa/rpi/controller/camera_mode.h
> diff --git a/src/ipa/raspberrypi/controller/ccm_algorithm.h b/src/ipa/rpi/controller/ccm_algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/ccm_algorithm.h
> rename to src/ipa/rpi/controller/ccm_algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/ccm_status.h b/src/ipa/rpi/controller/ccm_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/ccm_status.h
> rename to src/ipa/rpi/controller/ccm_status.h
> diff --git a/src/ipa/raspberrypi/controller/contrast_algorithm.h b/src/ipa/rpi/controller/contrast_algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/contrast_algorithm.h
> rename to src/ipa/rpi/controller/contrast_algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/contrast_status.h b/src/ipa/rpi/controller/contrast_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/contrast_status.h
> rename to src/ipa/rpi/controller/contrast_status.h
> diff --git a/src/ipa/raspberrypi/controller/controller.cpp b/src/ipa/rpi/controller/controller.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/controller.cpp
> rename to src/ipa/rpi/controller/controller.cpp
> diff --git a/src/ipa/raspberrypi/controller/controller.h b/src/ipa/rpi/controller/controller.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/controller.h
> rename to src/ipa/rpi/controller/controller.h
> diff --git a/src/ipa/raspberrypi/controller/denoise_algorithm.h b/src/ipa/rpi/controller/denoise_algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/denoise_algorithm.h
> rename to src/ipa/rpi/controller/denoise_algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/denoise_status.h b/src/ipa/rpi/controller/denoise_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/denoise_status.h
> rename to src/ipa/rpi/controller/denoise_status.h
> diff --git a/src/ipa/raspberrypi/controller/device_status.cpp b/src/ipa/rpi/controller/device_status.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/device_status.cpp
> rename to src/ipa/rpi/controller/device_status.cpp
> diff --git a/src/ipa/raspberrypi/controller/device_status.h b/src/ipa/rpi/controller/device_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/device_status.h
> rename to src/ipa/rpi/controller/device_status.h
> diff --git a/src/ipa/raspberrypi/controller/dpc_status.h b/src/ipa/rpi/controller/dpc_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/dpc_status.h
> rename to src/ipa/rpi/controller/dpc_status.h
> diff --git a/src/ipa/raspberrypi/controller/geq_status.h b/src/ipa/rpi/controller/geq_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/geq_status.h
> rename to src/ipa/rpi/controller/geq_status.h
> diff --git a/src/ipa/raspberrypi/controller/histogram.cpp b/src/ipa/rpi/controller/histogram.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/histogram.cpp
> rename to src/ipa/rpi/controller/histogram.cpp
> diff --git a/src/ipa/raspberrypi/controller/histogram.h b/src/ipa/rpi/controller/histogram.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/histogram.h
> rename to src/ipa/rpi/controller/histogram.h
> diff --git a/src/ipa/raspberrypi/controller/lux_status.h b/src/ipa/rpi/controller/lux_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/lux_status.h
> rename to src/ipa/rpi/controller/lux_status.h
> diff --git a/src/ipa/rpi/controller/meson.build b/src/ipa/rpi/controller/meson.build
> new file mode 100644
> index 000000000000..feb0334e8bb4
> --- /dev/null
> +++ b/src/ipa/rpi/controller/meson.build
> @@ -0,0 +1,29 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
> +rpi_ipa_controller_sources = files([
> +    'algorithm.cpp',
> +    'controller.cpp',
> +    'device_status.cpp',
> +    'histogram.cpp',
> +    'pwl.cpp',
> +    'rpi/af.cpp',
> +    'rpi/agc.cpp',
> +    'rpi/alsc.cpp',
> +    'rpi/awb.cpp',
> +    'rpi/black_level.cpp',
> +    'rpi/ccm.cpp',
> +    'rpi/contrast.cpp',
> +    'rpi/dpc.cpp',
> +    'rpi/geq.cpp',
> +    'rpi/lux.cpp',
> +    'rpi/noise.cpp',
> +    'rpi/sdn.cpp',
> +    'rpi/sharpen.cpp',
> +])
> +
> +rpi_ipa_controller_deps = [
> +    libcamera_private,
> +]
> +
> +rpi_ipa_controller_lib = static_library('rpi_ipa_controller', rpi_ipa_controller_sources,
> +                                        dependencies : rpi_ipa_controller_deps)
> diff --git a/src/ipa/raspberrypi/controller/metadata.h b/src/ipa/rpi/controller/metadata.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/metadata.h
> rename to src/ipa/rpi/controller/metadata.h
> diff --git a/src/ipa/raspberrypi/controller/noise_status.h b/src/ipa/rpi/controller/noise_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/noise_status.h
> rename to src/ipa/rpi/controller/noise_status.h
> diff --git a/src/ipa/raspberrypi/controller/pdaf_data.h b/src/ipa/rpi/controller/pdaf_data.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/pdaf_data.h
> rename to src/ipa/rpi/controller/pdaf_data.h
> diff --git a/src/ipa/raspberrypi/controller/pwl.cpp b/src/ipa/rpi/controller/pwl.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/pwl.cpp
> rename to src/ipa/rpi/controller/pwl.cpp
> diff --git a/src/ipa/raspberrypi/controller/pwl.h b/src/ipa/rpi/controller/pwl.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/pwl.h
> rename to src/ipa/rpi/controller/pwl.h
> diff --git a/src/ipa/raspberrypi/controller/region_stats.h b/src/ipa/rpi/controller/region_stats.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/region_stats.h
> rename to src/ipa/rpi/controller/region_stats.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/af.cpp b/src/ipa/rpi/controller/rpi/af.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/af.cpp
> rename to src/ipa/rpi/controller/rpi/af.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/af.h b/src/ipa/rpi/controller/rpi/af.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/af.h
> rename to src/ipa/rpi/controller/rpi/af.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/agc.cpp b/src/ipa/rpi/controller/rpi/agc.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/agc.cpp
> rename to src/ipa/rpi/controller/rpi/agc.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/agc.h b/src/ipa/rpi/controller/rpi/agc.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/agc.h
> rename to src/ipa/rpi/controller/rpi/agc.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/alsc.cpp b/src/ipa/rpi/controller/rpi/alsc.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/alsc.cpp
> rename to src/ipa/rpi/controller/rpi/alsc.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/alsc.h b/src/ipa/rpi/controller/rpi/alsc.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/alsc.h
> rename to src/ipa/rpi/controller/rpi/alsc.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/awb.cpp
> rename to src/ipa/rpi/controller/rpi/awb.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/awb.h b/src/ipa/rpi/controller/rpi/awb.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/awb.h
> rename to src/ipa/rpi/controller/rpi/awb.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/black_level.cpp b/src/ipa/rpi/controller/rpi/black_level.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/black_level.cpp
> rename to src/ipa/rpi/controller/rpi/black_level.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/black_level.h b/src/ipa/rpi/controller/rpi/black_level.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/black_level.h
> rename to src/ipa/rpi/controller/rpi/black_level.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/ccm.cpp b/src/ipa/rpi/controller/rpi/ccm.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/ccm.cpp
> rename to src/ipa/rpi/controller/rpi/ccm.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/ccm.h b/src/ipa/rpi/controller/rpi/ccm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/ccm.h
> rename to src/ipa/rpi/controller/rpi/ccm.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/contrast.cpp b/src/ipa/rpi/controller/rpi/contrast.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/contrast.cpp
> rename to src/ipa/rpi/controller/rpi/contrast.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/contrast.h b/src/ipa/rpi/controller/rpi/contrast.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/contrast.h
> rename to src/ipa/rpi/controller/rpi/contrast.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/dpc.cpp b/src/ipa/rpi/controller/rpi/dpc.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/dpc.cpp
> rename to src/ipa/rpi/controller/rpi/dpc.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/dpc.h b/src/ipa/rpi/controller/rpi/dpc.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/dpc.h
> rename to src/ipa/rpi/controller/rpi/dpc.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/focus.h b/src/ipa/rpi/controller/rpi/focus.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/focus.h
> rename to src/ipa/rpi/controller/rpi/focus.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/geq.cpp b/src/ipa/rpi/controller/rpi/geq.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/geq.cpp
> rename to src/ipa/rpi/controller/rpi/geq.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/geq.h b/src/ipa/rpi/controller/rpi/geq.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/geq.h
> rename to src/ipa/rpi/controller/rpi/geq.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/lux.cpp b/src/ipa/rpi/controller/rpi/lux.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/lux.cpp
> rename to src/ipa/rpi/controller/rpi/lux.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/lux.h b/src/ipa/rpi/controller/rpi/lux.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/lux.h
> rename to src/ipa/rpi/controller/rpi/lux.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/noise.cpp b/src/ipa/rpi/controller/rpi/noise.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/noise.cpp
> rename to src/ipa/rpi/controller/rpi/noise.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/noise.h b/src/ipa/rpi/controller/rpi/noise.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/noise.h
> rename to src/ipa/rpi/controller/rpi/noise.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.cpp b/src/ipa/rpi/controller/rpi/sdn.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/sdn.cpp
> rename to src/ipa/rpi/controller/rpi/sdn.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.h b/src/ipa/rpi/controller/rpi/sdn.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/sdn.h
> rename to src/ipa/rpi/controller/rpi/sdn.h
> diff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.cpp b/src/ipa/rpi/controller/rpi/sharpen.cpp
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/sharpen.cpp
> rename to src/ipa/rpi/controller/rpi/sharpen.cpp
> diff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.h b/src/ipa/rpi/controller/rpi/sharpen.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/rpi/sharpen.h
> rename to src/ipa/rpi/controller/rpi/sharpen.h
> diff --git a/src/ipa/raspberrypi/controller/sharpen_algorithm.h b/src/ipa/rpi/controller/sharpen_algorithm.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/sharpen_algorithm.h
> rename to src/ipa/rpi/controller/sharpen_algorithm.h
> diff --git a/src/ipa/raspberrypi/controller/sharpen_status.h b/src/ipa/rpi/controller/sharpen_status.h
> similarity index 100%
> rename from src/ipa/raspberrypi/controller/sharpen_status.h
> rename to src/ipa/rpi/controller/sharpen_status.h
> diff --git a/src/ipa/raspberrypi/statistics.h b/src/ipa/rpi/controller/statistics.h
> similarity index 100%
> rename from src/ipa/raspberrypi/statistics.h
> rename to src/ipa/rpi/controller/statistics.h
> diff --git a/src/ipa/rpi/meson.build b/src/ipa/rpi/meson.build
> new file mode 100644
> index 000000000000..7d7a61f7cea7
> --- /dev/null
> +++ b/src/ipa/rpi/meson.build
> @@ -0,0 +1,13 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
> +subdir('cam_helper')
> +subdir('controller')
> +
> +foreach pipeline : pipelines
> +    pipeline = pipeline.split('/')
> +    if pipeline.length() < 2 or pipeline[0] != 'rpi'
> +        continue
> +    endif
> +
> +    subdir(pipeline[1])
> +endforeach
> diff --git a/src/ipa/raspberrypi/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx219.json
> rename to src/ipa/rpi/vc4/data/imx219.json
> diff --git a/src/ipa/raspberrypi/data/imx219_noir.json b/src/ipa/rpi/vc4/data/imx219_noir.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx219_noir.json
> rename to src/ipa/rpi/vc4/data/imx219_noir.json
> diff --git a/src/ipa/raspberrypi/data/imx290.json b/src/ipa/rpi/vc4/data/imx290.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx290.json
> rename to src/ipa/rpi/vc4/data/imx290.json
> diff --git a/src/ipa/raspberrypi/data/imx296.json b/src/ipa/rpi/vc4/data/imx296.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx296.json
> rename to src/ipa/rpi/vc4/data/imx296.json
> diff --git a/src/ipa/raspberrypi/data/imx296_mono.json b/src/ipa/rpi/vc4/data/imx296_mono.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx296_mono.json
> rename to src/ipa/rpi/vc4/data/imx296_mono.json
> diff --git a/src/ipa/raspberrypi/data/imx378.json b/src/ipa/rpi/vc4/data/imx378.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx378.json
> rename to src/ipa/rpi/vc4/data/imx378.json
> diff --git a/src/ipa/raspberrypi/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx477.json
> rename to src/ipa/rpi/vc4/data/imx477.json
> diff --git a/src/ipa/raspberrypi/data/imx477_noir.json b/src/ipa/rpi/vc4/data/imx477_noir.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx477_noir.json
> rename to src/ipa/rpi/vc4/data/imx477_noir.json
> diff --git a/src/ipa/raspberrypi/data/imx477_scientific.json b/src/ipa/rpi/vc4/data/imx477_scientific.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx477_scientific.json
> rename to src/ipa/rpi/vc4/data/imx477_scientific.json
> diff --git a/src/ipa/raspberrypi/data/imx477_v1.json b/src/ipa/rpi/vc4/data/imx477_v1.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx477_v1.json
> rename to src/ipa/rpi/vc4/data/imx477_v1.json
> diff --git a/src/ipa/raspberrypi/data/imx519.json b/src/ipa/rpi/vc4/data/imx519.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx519.json
> rename to src/ipa/rpi/vc4/data/imx519.json
> diff --git a/src/ipa/raspberrypi/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx708.json
> rename to src/ipa/rpi/vc4/data/imx708.json
> diff --git a/src/ipa/raspberrypi/data/imx708_noir.json b/src/ipa/rpi/vc4/data/imx708_noir.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx708_noir.json
> rename to src/ipa/rpi/vc4/data/imx708_noir.json
> diff --git a/src/ipa/raspberrypi/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx708_wide.json
> rename to src/ipa/rpi/vc4/data/imx708_wide.json
> diff --git a/src/ipa/raspberrypi/data/imx708_wide_noir.json b/src/ipa/rpi/vc4/data/imx708_wide_noir.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/imx708_wide_noir.json
> rename to src/ipa/rpi/vc4/data/imx708_wide_noir.json
> diff --git a/src/ipa/raspberrypi/data/meson.build b/src/ipa/rpi/vc4/data/meson.build
> similarity index 89%
> rename from src/ipa/raspberrypi/data/meson.build
> rename to src/ipa/rpi/vc4/data/meson.build
> index b163a052f57c..bcf5658ba5d2 100644
> --- a/src/ipa/raspberrypi/data/meson.build
> +++ b/src/ipa/rpi/vc4/data/meson.build
> @@ -23,4 +23,4 @@ conf_files = files([
>  ])
>  
>  install_data(conf_files,
> -             install_dir : ipa_data_dir / 'raspberrypi')
> +             install_dir : ipa_data_dir / 'rpi' / 'vc4')
> diff --git a/src/ipa/raspberrypi/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/ov5647.json
> rename to src/ipa/rpi/vc4/data/ov5647.json
> diff --git a/src/ipa/raspberrypi/data/ov5647_noir.json b/src/ipa/rpi/vc4/data/ov5647_noir.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/ov5647_noir.json
> rename to src/ipa/rpi/vc4/data/ov5647_noir.json
> diff --git a/src/ipa/raspberrypi/data/ov9281_mono.json b/src/ipa/rpi/vc4/data/ov9281_mono.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/ov9281_mono.json
> rename to src/ipa/rpi/vc4/data/ov9281_mono.json
> diff --git a/src/ipa/raspberrypi/data/se327m12.json b/src/ipa/rpi/vc4/data/se327m12.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/se327m12.json
> rename to src/ipa/rpi/vc4/data/se327m12.json
> diff --git a/src/ipa/raspberrypi/data/uncalibrated.json b/src/ipa/rpi/vc4/data/uncalibrated.json
> similarity index 100%
> rename from src/ipa/raspberrypi/data/uncalibrated.json
> rename to src/ipa/rpi/vc4/data/uncalibrated.json
> diff --git a/src/ipa/rpi/vc4/meson.build b/src/ipa/rpi/vc4/meson.build
> new file mode 100644
> index 000000000000..cbd4dec62659
> --- /dev/null
> +++ b/src/ipa/rpi/vc4/meson.build
> @@ -0,0 +1,48 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
> +ipa_name = 'ipa_rpi_vc4'
> +
> +vc4_ipa_deps = [
> +    libcamera_private,
> +    libatomic,
> +]
> +
> +vc4_ipa_libs = [
> +    rpi_ipa_cam_helper_lib,
> +    rpi_ipa_controller_lib
> +]
> +
> +vc4_ipa_includes = [
> +    ipa_includes,
> +    libipa_includes,
> +]
> +
> +vc4_ipa_sources = files([
> +    'raspberrypi.cpp',
> +])
> +
> +vc4_ipa_includes += include_directories('..')
> +
> +mod = shared_module(ipa_name,
> +                    [vc4_ipa_sources, libcamera_generated_ipa_headers],
> +                    name_prefix : '',
> +                    include_directories : vc4_ipa_includes,
> +                    dependencies : vc4_ipa_deps,
> +                    link_with : libipa,
> +                    link_whole : vc4_ipa_libs,
> +                    install : true,
> +                    install_dir : ipa_install_dir)
> +
> +if ipa_sign_module
> +    custom_target(ipa_name + '.so.sign',
> +                  input : mod,
> +                  output : ipa_name + '.so.sign',
> +                  command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],
> +                  install : false,
> +                  build_by_default : true)
> +endif
> +
> +subdir('data')
> +
> +ipa_names += ipa_name
> +

Extra blank line.

I'll fix those issues when applying.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/rpi/vc4/raspberrypi.cpp
> similarity index 98%
> rename from src/ipa/raspberrypi/raspberrypi.cpp
> rename to src/ipa/rpi/vc4/raspberrypi.cpp
> index 9c29fa9a5e5c..5d3bf4caf3da 100644
> --- a/src/ipa/raspberrypi/raspberrypi.cpp
> +++ b/src/ipa/rpi/vc4/raspberrypi.cpp
> @@ -33,29 +33,29 @@
>  
>  #include "libcamera/internal/mapped_framebuffer.h"
>  
> -#include "af_algorithm.h"
> -#include "af_status.h"
> -#include "agc_algorithm.h"
> -#include "agc_status.h"
> -#include "alsc_status.h"
> -#include "awb_algorithm.h"
> -#include "awb_status.h"
> -#include "black_level_status.h"
> -#include "cam_helper.h"
> -#include "ccm_algorithm.h"
> -#include "ccm_status.h"
> -#include "contrast_algorithm.h"
> -#include "contrast_status.h"
> -#include "controller.h"
> -#include "denoise_algorithm.h"
> -#include "denoise_status.h"
> -#include "dpc_status.h"
> -#include "geq_status.h"
> -#include "lux_status.h"
> -#include "metadata.h"
> -#include "sharpen_algorithm.h"
> -#include "sharpen_status.h"
> -#include "statistics.h"
> +#include "cam_helper/cam_helper.h"
> +#include "controller/af_algorithm.h"
> +#include "controller/af_status.h"
> +#include "controller/agc_algorithm.h"
> +#include "controller/agc_status.h"
> +#include "controller/alsc_status.h"
> +#include "controller/awb_algorithm.h"
> +#include "controller/awb_status.h"
> +#include "controller/black_level_status.h"
> +#include "controller/ccm_algorithm.h"
> +#include "controller/ccm_status.h"
> +#include "controller/contrast_algorithm.h"
> +#include "controller/contrast_status.h"
> +#include "controller/controller.h"
> +#include "controller/denoise_algorithm.h"
> +#include "controller/denoise_status.h"
> +#include "controller/dpc_status.h"
> +#include "controller/geq_status.h"
> +#include "controller/lux_status.h"
> +#include "controller/metadata.h"
> +#include "controller/sharpen_algorithm.h"
> +#include "controller/sharpen_status.h"
> +#include "controller/statistics.h"
>  
>  namespace libcamera {
>  
> @@ -1840,7 +1840,7 @@ const struct IPAModuleInfo ipaModuleInfo = {
>  	IPA_MODULE_API_VERSION,
>  	1,
>  	"PipelineHandlerRPi",
> -	"raspberrypi",
> +	"rpi/vc4",
>  };
>  
>  IPAInterface *ipaCreate()

Patch
diff mbox series

diff --git a/Documentation/environment_variables.rst b/Documentation/environment_variables.rst
index 4bf38b877897..a9b230bcd93e 100644
--- a/Documentation/environment_variables.rst
+++ b/Documentation/environment_variables.rst
@@ -143,7 +143,7 @@  contain tuning parameters for the algorithms, in JSON format.
 The ``LIBCAMERA_IPA_CONFIG_PATH`` variable can be used to specify custom
 storage locations to search for those configuration files.
 
-`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/raspberrypi/data>`__
+`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/rpi/vc4/data>`__
 
 IPA module
 ~~~~~~~~~~
diff --git a/meson_options.txt b/meson_options.txt
index b4afb8e591a8..c8cd53b49ba1 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -27,7 +27,7 @@  option('gstreamer',
 
 option('ipas',
         type : 'array',
-        choices : ['ipu3', 'raspberrypi', 'rkisp1', 'vimc'],
+        choices : ['ipu3', 'rkisp1', 'rpi/vc4', 'vimc'],
         description : 'Select which IPA modules to build')
 
 option('lc-compliance',
diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
deleted file mode 100644
index 95437cbcc962..000000000000
--- a/src/ipa/raspberrypi/meson.build
+++ /dev/null
@@ -1,68 +0,0 @@ 
-# SPDX-License-Identifier: CC0-1.0
-
-ipa_name = 'ipa_rpi'
-
-rpi_ipa_deps = [
-    libcamera_private,
-    libatomic,
-]
-
-rpi_ipa_includes = [
-    ipa_includes,
-    libipa_includes,
-    include_directories('controller')
-]
-
-rpi_ipa_sources = files([
-    'raspberrypi.cpp',
-    'md_parser_smia.cpp',
-    'cam_helper.cpp',
-    'cam_helper_ov5647.cpp',
-    'cam_helper_imx219.cpp',
-    'cam_helper_imx290.cpp',
-    'cam_helper_imx296.cpp',
-    'cam_helper_imx477.cpp',
-    'cam_helper_imx519.cpp',
-    'cam_helper_imx708.cpp',
-    'cam_helper_ov9281.cpp',
-    'controller/controller.cpp',
-    'controller/histogram.cpp',
-    'controller/algorithm.cpp',
-    'controller/rpi/af.cpp',
-    'controller/rpi/alsc.cpp',
-    'controller/rpi/awb.cpp',
-    'controller/rpi/sharpen.cpp',
-    'controller/rpi/black_level.cpp',
-    'controller/rpi/geq.cpp',
-    'controller/rpi/noise.cpp',
-    'controller/rpi/lux.cpp',
-    'controller/rpi/agc.cpp',
-    'controller/rpi/dpc.cpp',
-    'controller/rpi/ccm.cpp',
-    'controller/rpi/contrast.cpp',
-    'controller/rpi/sdn.cpp',
-    'controller/pwl.cpp',
-    'controller/device_status.cpp',
-])
-
-mod = shared_module(ipa_name,
-                    [rpi_ipa_sources, libcamera_generated_ipa_headers],
-                    name_prefix : '',
-                    include_directories : rpi_ipa_includes,
-                    dependencies : rpi_ipa_deps,
-                    link_with : libipa,
-                    install : true,
-                    install_dir : ipa_install_dir)
-
-if ipa_sign_module
-    custom_target(ipa_name + '.so.sign',
-                  input : mod,
-                  output : ipa_name + '.so.sign',
-                  command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],
-                  install : false,
-                  build_by_default : true)
-endif
-
-subdir('data')
-
-ipa_names += ipa_name
diff --git a/src/ipa/raspberrypi/README.md b/src/ipa/rpi/README.md
similarity index 100%
rename from src/ipa/raspberrypi/README.md
rename to src/ipa/rpi/README.md
diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/rpi/cam_helper/cam_helper.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper.cpp
rename to src/ipa/rpi/cam_helper/cam_helper.cpp
diff --git a/src/ipa/raspberrypi/cam_helper.h b/src/ipa/rpi/cam_helper/cam_helper.h
similarity index 99%
rename from src/ipa/raspberrypi/cam_helper.h
rename to src/ipa/rpi/cam_helper/cam_helper.h
index b3f8c9803094..58a4b202d5a8 100644
--- a/src/ipa/raspberrypi/cam_helper.h
+++ b/src/ipa/rpi/cam_helper/cam_helper.h
@@ -13,7 +13,7 @@ 
 #include <libcamera/base/span.h>
 #include <libcamera/base/utils.h>
 
-#include "camera_mode.h"
+#include "controller/camera_mode.h"
 #include "controller/controller.h"
 #include "controller/metadata.h"
 #include "md_parser.h"
diff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_imx219.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx290.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_imx290.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx296.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_imx296.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_imx477.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx519.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_imx519.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx708.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_imx708.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_ov5647.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_ov5647.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_ov9281.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
similarity index 100%
rename from src/ipa/raspberrypi/cam_helper_ov9281.cpp
rename to src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
diff --git a/src/ipa/raspberrypi/md_parser.h b/src/ipa/rpi/cam_helper/md_parser.h
similarity index 100%
rename from src/ipa/raspberrypi/md_parser.h
rename to src/ipa/rpi/cam_helper/md_parser.h
diff --git a/src/ipa/raspberrypi/md_parser_smia.cpp b/src/ipa/rpi/cam_helper/md_parser_smia.cpp
similarity index 100%
rename from src/ipa/raspberrypi/md_parser_smia.cpp
rename to src/ipa/rpi/cam_helper/md_parser_smia.cpp
diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build
new file mode 100644
index 000000000000..bdf2db8eb742
--- /dev/null
+++ b/src/ipa/rpi/cam_helper/meson.build
@@ -0,0 +1,26 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
+rpi_ipa_cam_helper_sources = files([
+    'cam_helper.cpp',
+    'cam_helper_ov5647.cpp',
+    'cam_helper_imx219.cpp',
+    'cam_helper_imx290.cpp',
+    'cam_helper_imx296.cpp',
+    'cam_helper_imx477.cpp',
+    'cam_helper_imx519.cpp',
+    'cam_helper_imx708.cpp',
+    'cam_helper_ov9281.cpp',
+    'md_parser_smia.cpp',
+])
+
+rpi_ipa_cam_helper_includes = [
+    include_directories('..'),
+]
+
+rpi_ipa_cam_helper_deps = [
+    libcamera_private,
+]
+
+rpi_ipa_cam_helper_lib = static_library('rpi_ipa_cam_helper', rpi_ipa_cam_helper_sources,
+                                        include_directories : rpi_ipa_cam_helper_includes,
+                                        dependencies : rpi_ipa_cam_helper_deps)
diff --git a/src/ipa/raspberrypi/controller/af_algorithm.h b/src/ipa/rpi/controller/af_algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/af_algorithm.h
rename to src/ipa/rpi/controller/af_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/af_status.h b/src/ipa/rpi/controller/af_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/af_status.h
rename to src/ipa/rpi/controller/af_status.h
diff --git a/src/ipa/raspberrypi/controller/agc_algorithm.h b/src/ipa/rpi/controller/agc_algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/agc_algorithm.h
rename to src/ipa/rpi/controller/agc_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/agc_status.h b/src/ipa/rpi/controller/agc_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/agc_status.h
rename to src/ipa/rpi/controller/agc_status.h
diff --git a/src/ipa/raspberrypi/controller/algorithm.cpp b/src/ipa/rpi/controller/algorithm.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/algorithm.cpp
rename to src/ipa/rpi/controller/algorithm.cpp
diff --git a/src/ipa/raspberrypi/controller/algorithm.h b/src/ipa/rpi/controller/algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/algorithm.h
rename to src/ipa/rpi/controller/algorithm.h
diff --git a/src/ipa/raspberrypi/controller/alsc_status.h b/src/ipa/rpi/controller/alsc_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/alsc_status.h
rename to src/ipa/rpi/controller/alsc_status.h
diff --git a/src/ipa/raspberrypi/controller/awb_algorithm.h b/src/ipa/rpi/controller/awb_algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/awb_algorithm.h
rename to src/ipa/rpi/controller/awb_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/awb_status.h b/src/ipa/rpi/controller/awb_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/awb_status.h
rename to src/ipa/rpi/controller/awb_status.h
diff --git a/src/ipa/raspberrypi/controller/black_level_status.h b/src/ipa/rpi/controller/black_level_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/black_level_status.h
rename to src/ipa/rpi/controller/black_level_status.h
diff --git a/src/ipa/raspberrypi/controller/camera_mode.h b/src/ipa/rpi/controller/camera_mode.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/camera_mode.h
rename to src/ipa/rpi/controller/camera_mode.h
diff --git a/src/ipa/raspberrypi/controller/ccm_algorithm.h b/src/ipa/rpi/controller/ccm_algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/ccm_algorithm.h
rename to src/ipa/rpi/controller/ccm_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/ccm_status.h b/src/ipa/rpi/controller/ccm_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/ccm_status.h
rename to src/ipa/rpi/controller/ccm_status.h
diff --git a/src/ipa/raspberrypi/controller/contrast_algorithm.h b/src/ipa/rpi/controller/contrast_algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/contrast_algorithm.h
rename to src/ipa/rpi/controller/contrast_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/contrast_status.h b/src/ipa/rpi/controller/contrast_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/contrast_status.h
rename to src/ipa/rpi/controller/contrast_status.h
diff --git a/src/ipa/raspberrypi/controller/controller.cpp b/src/ipa/rpi/controller/controller.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/controller.cpp
rename to src/ipa/rpi/controller/controller.cpp
diff --git a/src/ipa/raspberrypi/controller/controller.h b/src/ipa/rpi/controller/controller.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/controller.h
rename to src/ipa/rpi/controller/controller.h
diff --git a/src/ipa/raspberrypi/controller/denoise_algorithm.h b/src/ipa/rpi/controller/denoise_algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/denoise_algorithm.h
rename to src/ipa/rpi/controller/denoise_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/denoise_status.h b/src/ipa/rpi/controller/denoise_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/denoise_status.h
rename to src/ipa/rpi/controller/denoise_status.h
diff --git a/src/ipa/raspberrypi/controller/device_status.cpp b/src/ipa/rpi/controller/device_status.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/device_status.cpp
rename to src/ipa/rpi/controller/device_status.cpp
diff --git a/src/ipa/raspberrypi/controller/device_status.h b/src/ipa/rpi/controller/device_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/device_status.h
rename to src/ipa/rpi/controller/device_status.h
diff --git a/src/ipa/raspberrypi/controller/dpc_status.h b/src/ipa/rpi/controller/dpc_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/dpc_status.h
rename to src/ipa/rpi/controller/dpc_status.h
diff --git a/src/ipa/raspberrypi/controller/geq_status.h b/src/ipa/rpi/controller/geq_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/geq_status.h
rename to src/ipa/rpi/controller/geq_status.h
diff --git a/src/ipa/raspberrypi/controller/histogram.cpp b/src/ipa/rpi/controller/histogram.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/histogram.cpp
rename to src/ipa/rpi/controller/histogram.cpp
diff --git a/src/ipa/raspberrypi/controller/histogram.h b/src/ipa/rpi/controller/histogram.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/histogram.h
rename to src/ipa/rpi/controller/histogram.h
diff --git a/src/ipa/raspberrypi/controller/lux_status.h b/src/ipa/rpi/controller/lux_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/lux_status.h
rename to src/ipa/rpi/controller/lux_status.h
diff --git a/src/ipa/rpi/controller/meson.build b/src/ipa/rpi/controller/meson.build
new file mode 100644
index 000000000000..feb0334e8bb4
--- /dev/null
+++ b/src/ipa/rpi/controller/meson.build
@@ -0,0 +1,29 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
+rpi_ipa_controller_sources = files([
+    'algorithm.cpp',
+    'controller.cpp',
+    'device_status.cpp',
+    'histogram.cpp',
+    'pwl.cpp',
+    'rpi/af.cpp',
+    'rpi/agc.cpp',
+    'rpi/alsc.cpp',
+    'rpi/awb.cpp',
+    'rpi/black_level.cpp',
+    'rpi/ccm.cpp',
+    'rpi/contrast.cpp',
+    'rpi/dpc.cpp',
+    'rpi/geq.cpp',
+    'rpi/lux.cpp',
+    'rpi/noise.cpp',
+    'rpi/sdn.cpp',
+    'rpi/sharpen.cpp',
+])
+
+rpi_ipa_controller_deps = [
+    libcamera_private,
+]
+
+rpi_ipa_controller_lib = static_library('rpi_ipa_controller', rpi_ipa_controller_sources,
+                                        dependencies : rpi_ipa_controller_deps)
diff --git a/src/ipa/raspberrypi/controller/metadata.h b/src/ipa/rpi/controller/metadata.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/metadata.h
rename to src/ipa/rpi/controller/metadata.h
diff --git a/src/ipa/raspberrypi/controller/noise_status.h b/src/ipa/rpi/controller/noise_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/noise_status.h
rename to src/ipa/rpi/controller/noise_status.h
diff --git a/src/ipa/raspberrypi/controller/pdaf_data.h b/src/ipa/rpi/controller/pdaf_data.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/pdaf_data.h
rename to src/ipa/rpi/controller/pdaf_data.h
diff --git a/src/ipa/raspberrypi/controller/pwl.cpp b/src/ipa/rpi/controller/pwl.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/pwl.cpp
rename to src/ipa/rpi/controller/pwl.cpp
diff --git a/src/ipa/raspberrypi/controller/pwl.h b/src/ipa/rpi/controller/pwl.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/pwl.h
rename to src/ipa/rpi/controller/pwl.h
diff --git a/src/ipa/raspberrypi/controller/region_stats.h b/src/ipa/rpi/controller/region_stats.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/region_stats.h
rename to src/ipa/rpi/controller/region_stats.h
diff --git a/src/ipa/raspberrypi/controller/rpi/af.cpp b/src/ipa/rpi/controller/rpi/af.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/af.cpp
rename to src/ipa/rpi/controller/rpi/af.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/af.h b/src/ipa/rpi/controller/rpi/af.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/af.h
rename to src/ipa/rpi/controller/rpi/af.h
diff --git a/src/ipa/raspberrypi/controller/rpi/agc.cpp b/src/ipa/rpi/controller/rpi/agc.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/agc.cpp
rename to src/ipa/rpi/controller/rpi/agc.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/agc.h b/src/ipa/rpi/controller/rpi/agc.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/agc.h
rename to src/ipa/rpi/controller/rpi/agc.h
diff --git a/src/ipa/raspberrypi/controller/rpi/alsc.cpp b/src/ipa/rpi/controller/rpi/alsc.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/alsc.cpp
rename to src/ipa/rpi/controller/rpi/alsc.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/alsc.h b/src/ipa/rpi/controller/rpi/alsc.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/alsc.h
rename to src/ipa/rpi/controller/rpi/alsc.h
diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/awb.cpp
rename to src/ipa/rpi/controller/rpi/awb.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/awb.h b/src/ipa/rpi/controller/rpi/awb.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/awb.h
rename to src/ipa/rpi/controller/rpi/awb.h
diff --git a/src/ipa/raspberrypi/controller/rpi/black_level.cpp b/src/ipa/rpi/controller/rpi/black_level.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/black_level.cpp
rename to src/ipa/rpi/controller/rpi/black_level.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/black_level.h b/src/ipa/rpi/controller/rpi/black_level.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/black_level.h
rename to src/ipa/rpi/controller/rpi/black_level.h
diff --git a/src/ipa/raspberrypi/controller/rpi/ccm.cpp b/src/ipa/rpi/controller/rpi/ccm.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/ccm.cpp
rename to src/ipa/rpi/controller/rpi/ccm.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/ccm.h b/src/ipa/rpi/controller/rpi/ccm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/ccm.h
rename to src/ipa/rpi/controller/rpi/ccm.h
diff --git a/src/ipa/raspberrypi/controller/rpi/contrast.cpp b/src/ipa/rpi/controller/rpi/contrast.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/contrast.cpp
rename to src/ipa/rpi/controller/rpi/contrast.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/contrast.h b/src/ipa/rpi/controller/rpi/contrast.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/contrast.h
rename to src/ipa/rpi/controller/rpi/contrast.h
diff --git a/src/ipa/raspberrypi/controller/rpi/dpc.cpp b/src/ipa/rpi/controller/rpi/dpc.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/dpc.cpp
rename to src/ipa/rpi/controller/rpi/dpc.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/dpc.h b/src/ipa/rpi/controller/rpi/dpc.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/dpc.h
rename to src/ipa/rpi/controller/rpi/dpc.h
diff --git a/src/ipa/raspberrypi/controller/rpi/focus.h b/src/ipa/rpi/controller/rpi/focus.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/focus.h
rename to src/ipa/rpi/controller/rpi/focus.h
diff --git a/src/ipa/raspberrypi/controller/rpi/geq.cpp b/src/ipa/rpi/controller/rpi/geq.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/geq.cpp
rename to src/ipa/rpi/controller/rpi/geq.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/geq.h b/src/ipa/rpi/controller/rpi/geq.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/geq.h
rename to src/ipa/rpi/controller/rpi/geq.h
diff --git a/src/ipa/raspberrypi/controller/rpi/lux.cpp b/src/ipa/rpi/controller/rpi/lux.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/lux.cpp
rename to src/ipa/rpi/controller/rpi/lux.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/lux.h b/src/ipa/rpi/controller/rpi/lux.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/lux.h
rename to src/ipa/rpi/controller/rpi/lux.h
diff --git a/src/ipa/raspberrypi/controller/rpi/noise.cpp b/src/ipa/rpi/controller/rpi/noise.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/noise.cpp
rename to src/ipa/rpi/controller/rpi/noise.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/noise.h b/src/ipa/rpi/controller/rpi/noise.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/noise.h
rename to src/ipa/rpi/controller/rpi/noise.h
diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.cpp b/src/ipa/rpi/controller/rpi/sdn.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/sdn.cpp
rename to src/ipa/rpi/controller/rpi/sdn.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.h b/src/ipa/rpi/controller/rpi/sdn.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/sdn.h
rename to src/ipa/rpi/controller/rpi/sdn.h
diff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.cpp b/src/ipa/rpi/controller/rpi/sharpen.cpp
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/sharpen.cpp
rename to src/ipa/rpi/controller/rpi/sharpen.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.h b/src/ipa/rpi/controller/rpi/sharpen.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/rpi/sharpen.h
rename to src/ipa/rpi/controller/rpi/sharpen.h
diff --git a/src/ipa/raspberrypi/controller/sharpen_algorithm.h b/src/ipa/rpi/controller/sharpen_algorithm.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/sharpen_algorithm.h
rename to src/ipa/rpi/controller/sharpen_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/sharpen_status.h b/src/ipa/rpi/controller/sharpen_status.h
similarity index 100%
rename from src/ipa/raspberrypi/controller/sharpen_status.h
rename to src/ipa/rpi/controller/sharpen_status.h
diff --git a/src/ipa/raspberrypi/statistics.h b/src/ipa/rpi/controller/statistics.h
similarity index 100%
rename from src/ipa/raspberrypi/statistics.h
rename to src/ipa/rpi/controller/statistics.h
diff --git a/src/ipa/rpi/meson.build b/src/ipa/rpi/meson.build
new file mode 100644
index 000000000000..7d7a61f7cea7
--- /dev/null
+++ b/src/ipa/rpi/meson.build
@@ -0,0 +1,13 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
+subdir('cam_helper')
+subdir('controller')
+
+foreach pipeline : pipelines
+    pipeline = pipeline.split('/')
+    if pipeline.length() < 2 or pipeline[0] != 'rpi'
+        continue
+    endif
+
+    subdir(pipeline[1])
+endforeach
diff --git a/src/ipa/raspberrypi/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx219.json
rename to src/ipa/rpi/vc4/data/imx219.json
diff --git a/src/ipa/raspberrypi/data/imx219_noir.json b/src/ipa/rpi/vc4/data/imx219_noir.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx219_noir.json
rename to src/ipa/rpi/vc4/data/imx219_noir.json
diff --git a/src/ipa/raspberrypi/data/imx290.json b/src/ipa/rpi/vc4/data/imx290.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx290.json
rename to src/ipa/rpi/vc4/data/imx290.json
diff --git a/src/ipa/raspberrypi/data/imx296.json b/src/ipa/rpi/vc4/data/imx296.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx296.json
rename to src/ipa/rpi/vc4/data/imx296.json
diff --git a/src/ipa/raspberrypi/data/imx296_mono.json b/src/ipa/rpi/vc4/data/imx296_mono.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx296_mono.json
rename to src/ipa/rpi/vc4/data/imx296_mono.json
diff --git a/src/ipa/raspberrypi/data/imx378.json b/src/ipa/rpi/vc4/data/imx378.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx378.json
rename to src/ipa/rpi/vc4/data/imx378.json
diff --git a/src/ipa/raspberrypi/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx477.json
rename to src/ipa/rpi/vc4/data/imx477.json
diff --git a/src/ipa/raspberrypi/data/imx477_noir.json b/src/ipa/rpi/vc4/data/imx477_noir.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx477_noir.json
rename to src/ipa/rpi/vc4/data/imx477_noir.json
diff --git a/src/ipa/raspberrypi/data/imx477_scientific.json b/src/ipa/rpi/vc4/data/imx477_scientific.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx477_scientific.json
rename to src/ipa/rpi/vc4/data/imx477_scientific.json
diff --git a/src/ipa/raspberrypi/data/imx477_v1.json b/src/ipa/rpi/vc4/data/imx477_v1.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx477_v1.json
rename to src/ipa/rpi/vc4/data/imx477_v1.json
diff --git a/src/ipa/raspberrypi/data/imx519.json b/src/ipa/rpi/vc4/data/imx519.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx519.json
rename to src/ipa/rpi/vc4/data/imx519.json
diff --git a/src/ipa/raspberrypi/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx708.json
rename to src/ipa/rpi/vc4/data/imx708.json
diff --git a/src/ipa/raspberrypi/data/imx708_noir.json b/src/ipa/rpi/vc4/data/imx708_noir.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx708_noir.json
rename to src/ipa/rpi/vc4/data/imx708_noir.json
diff --git a/src/ipa/raspberrypi/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx708_wide.json
rename to src/ipa/rpi/vc4/data/imx708_wide.json
diff --git a/src/ipa/raspberrypi/data/imx708_wide_noir.json b/src/ipa/rpi/vc4/data/imx708_wide_noir.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx708_wide_noir.json
rename to src/ipa/rpi/vc4/data/imx708_wide_noir.json
diff --git a/src/ipa/raspberrypi/data/meson.build b/src/ipa/rpi/vc4/data/meson.build
similarity index 89%
rename from src/ipa/raspberrypi/data/meson.build
rename to src/ipa/rpi/vc4/data/meson.build
index b163a052f57c..bcf5658ba5d2 100644
--- a/src/ipa/raspberrypi/data/meson.build
+++ b/src/ipa/rpi/vc4/data/meson.build
@@ -23,4 +23,4 @@  conf_files = files([
 ])
 
 install_data(conf_files,
-             install_dir : ipa_data_dir / 'raspberrypi')
+             install_dir : ipa_data_dir / 'rpi' / 'vc4')
diff --git a/src/ipa/raspberrypi/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json
similarity index 100%
rename from src/ipa/raspberrypi/data/ov5647.json
rename to src/ipa/rpi/vc4/data/ov5647.json
diff --git a/src/ipa/raspberrypi/data/ov5647_noir.json b/src/ipa/rpi/vc4/data/ov5647_noir.json
similarity index 100%
rename from src/ipa/raspberrypi/data/ov5647_noir.json
rename to src/ipa/rpi/vc4/data/ov5647_noir.json
diff --git a/src/ipa/raspberrypi/data/ov9281_mono.json b/src/ipa/rpi/vc4/data/ov9281_mono.json
similarity index 100%
rename from src/ipa/raspberrypi/data/ov9281_mono.json
rename to src/ipa/rpi/vc4/data/ov9281_mono.json
diff --git a/src/ipa/raspberrypi/data/se327m12.json b/src/ipa/rpi/vc4/data/se327m12.json
similarity index 100%
rename from src/ipa/raspberrypi/data/se327m12.json
rename to src/ipa/rpi/vc4/data/se327m12.json
diff --git a/src/ipa/raspberrypi/data/uncalibrated.json b/src/ipa/rpi/vc4/data/uncalibrated.json
similarity index 100%
rename from src/ipa/raspberrypi/data/uncalibrated.json
rename to src/ipa/rpi/vc4/data/uncalibrated.json
diff --git a/src/ipa/rpi/vc4/meson.build b/src/ipa/rpi/vc4/meson.build
new file mode 100644
index 000000000000..cbd4dec62659
--- /dev/null
+++ b/src/ipa/rpi/vc4/meson.build
@@ -0,0 +1,48 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
+ipa_name = 'ipa_rpi_vc4'
+
+vc4_ipa_deps = [
+    libcamera_private,
+    libatomic,
+]
+
+vc4_ipa_libs = [
+    rpi_ipa_cam_helper_lib,
+    rpi_ipa_controller_lib
+]
+
+vc4_ipa_includes = [
+    ipa_includes,
+    libipa_includes,
+]
+
+vc4_ipa_sources = files([
+    'raspberrypi.cpp',
+])
+
+vc4_ipa_includes += include_directories('..')
+
+mod = shared_module(ipa_name,
+                    [vc4_ipa_sources, libcamera_generated_ipa_headers],
+                    name_prefix : '',
+                    include_directories : vc4_ipa_includes,
+                    dependencies : vc4_ipa_deps,
+                    link_with : libipa,
+                    link_whole : vc4_ipa_libs,
+                    install : true,
+                    install_dir : ipa_install_dir)
+
+if ipa_sign_module
+    custom_target(ipa_name + '.so.sign',
+                  input : mod,
+                  output : ipa_name + '.so.sign',
+                  command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],
+                  install : false,
+                  build_by_default : true)
+endif
+
+subdir('data')
+
+ipa_names += ipa_name
+
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/rpi/vc4/raspberrypi.cpp
similarity index 98%
rename from src/ipa/raspberrypi/raspberrypi.cpp
rename to src/ipa/rpi/vc4/raspberrypi.cpp
index 9c29fa9a5e5c..5d3bf4caf3da 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/rpi/vc4/raspberrypi.cpp
@@ -33,29 +33,29 @@ 
 
 #include "libcamera/internal/mapped_framebuffer.h"
 
-#include "af_algorithm.h"
-#include "af_status.h"
-#include "agc_algorithm.h"
-#include "agc_status.h"
-#include "alsc_status.h"
-#include "awb_algorithm.h"
-#include "awb_status.h"
-#include "black_level_status.h"
-#include "cam_helper.h"
-#include "ccm_algorithm.h"
-#include "ccm_status.h"
-#include "contrast_algorithm.h"
-#include "contrast_status.h"
-#include "controller.h"
-#include "denoise_algorithm.h"
-#include "denoise_status.h"
-#include "dpc_status.h"
-#include "geq_status.h"
-#include "lux_status.h"
-#include "metadata.h"
-#include "sharpen_algorithm.h"
-#include "sharpen_status.h"
-#include "statistics.h"
+#include "cam_helper/cam_helper.h"
+#include "controller/af_algorithm.h"
+#include "controller/af_status.h"
+#include "controller/agc_algorithm.h"
+#include "controller/agc_status.h"
+#include "controller/alsc_status.h"
+#include "controller/awb_algorithm.h"
+#include "controller/awb_status.h"
+#include "controller/black_level_status.h"
+#include "controller/ccm_algorithm.h"
+#include "controller/ccm_status.h"
+#include "controller/contrast_algorithm.h"
+#include "controller/contrast_status.h"
+#include "controller/controller.h"
+#include "controller/denoise_algorithm.h"
+#include "controller/denoise_status.h"
+#include "controller/dpc_status.h"
+#include "controller/geq_status.h"
+#include "controller/lux_status.h"
+#include "controller/metadata.h"
+#include "controller/sharpen_algorithm.h"
+#include "controller/sharpen_status.h"
+#include "controller/statistics.h"
 
 namespace libcamera {
 
@@ -1840,7 +1840,7 @@  const struct IPAModuleInfo ipaModuleInfo = {
 	IPA_MODULE_API_VERSION,
 	1,
 	"PipelineHandlerRPi",
-	"raspberrypi",
+	"rpi/vc4",
 };
 
 IPAInterface *ipaCreate()