[v7,0/5] ipa: libipa: Introduce V4L2Params
mbox series

Message ID 20251215-v4l2-params-v7-0-be2b8c75ad09@ideasonboard.com
Headers show
Series
  • ipa: libipa: Introduce V4L2Params
Related show

Message

Jacopo Mondi Dec. 15, 2025, 3:11 p.m. UTC
Linux v6.19 will see the the introduction of the v4l2-isp framework in
the Linux kernel and of the Mali C55 ISP driver which will use v4l2-isp
for handling parameters.

This series
1) Imports stddef.h and v4l2-isp.h in libcamera from v6.19
2) Update the Mali C55 header and IPA to compile with the version that
   will land in v6.19
3) Introduces V4L2Params by generalizing RkISP1Params
4) Ports the Mali C55 IPA to use the newly introduced V4L2Params

Tested on rkisp1 and rzv2h

Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
Changes in v7:
- Re-import headers based on v6.19
- Fix mali-c55 buffer versioning

Changes in v6:
- Apply Dan's comments on documentation
- Assert with Fatal if we run out of space

Changes in v5:
- Update to v6 of v4l2 isp
- Import linux/stddef.h instead of re-defining __counted_by()
- Properly memset the whole mali-c55 buffer in the transitory patch
  before MaliC55Params introduction

Changes in v4:
- Mark RkISP1ParamBlock final
- Fix code examples as suggested by Barnabas

Changes in v3:
- Fix Mali-C55 and re-work RkISP1
  The Mali and RkISP1 IPA have a different requirements:

	struct mali_c55_params_awb_gains {
		struct v4l2_params_block_header header;
		__u16 gain00;
		__u16 gain01;
		__u16 gain10;
		__u16 gain11;
	};

	struct rkisp1_ext_params_awb_gain_config {
		struct rkisp1_ext_params_block_header header;
		struct rkisp1_cif_isp_awb_gain_config config;
	} __attribute__((aligned(8)));

  The RkISP1 IPA needs to support legacy and extensible parameter
  formats, and wants to operate on 'struct rkisp1_cif_isp_' basically
  discarding the header.

  The Mali IPA (and all other IPA compatible with v4l2-isp) operates on
  the whole structure and do not need to discard the header.

  Rework V4L2ParamsBlock to return a Span<> matching the whole structure
  (header included) to support Mali correctly.

  This means the RkISP1ParamsBlock derived class has to override all the
  dereference operators to discard the header and allow the IPA to work
  with both the legacy and extensible formats.

  Tested with Mali C55, RkISP1 in extensible and legacy modes.

- Link to v2: https://lore.kernel.org/r/20250916-v4l2-params-v2-0-764471ed6435@ideasonboard.com

Changes in v2:
- Address Barnabas' reviwe that allows to remove the block() overload in
  MaliC55
- Link to v1: https://lore.kernel.org/r/20250829-v4l2-params-v1-0-340773fb69ff@ideasonboard.com

---
Jacopo Mondi (5):
      include: linux: Add stddef.h
      include: linux: Add v4l2-isp.h
      ipa: mali-c55: Update header file and adjust IPA
      ipa: libipa: Introduce V4L2Params
      ipa: mali-c55: Introduce MaliC55Params

 include/linux/mali-c55-config.h         | 170 +++------------------
 include/linux/media/v4l2-isp.h          | 102 +++++++++++++
 include/linux/stddef.h                  |  74 ++++++++++
 src/ipa/libipa/meson.build              |   2 +
 src/ipa/libipa/v4l2_params.cpp          | 253 ++++++++++++++++++++++++++++++++
 src/ipa/libipa/v4l2_params.h            | 152 +++++++++++++++++++
 src/ipa/mali-c55/algorithms/agc.cpp     |  87 +++++------
 src/ipa/mali-c55/algorithms/agc.h       |  14 +-
 src/ipa/mali-c55/algorithms/algorithm.h |   2 +-
 src/ipa/mali-c55/algorithms/awb.cpp     |  64 ++++----
 src/ipa/mali-c55/algorithms/awb.h       |  10 +-
 src/ipa/mali-c55/algorithms/blc.cpp     |  20 +--
 src/ipa/mali-c55/algorithms/blc.h       |   3 +-
 src/ipa/mali-c55/algorithms/lsc.cpp     |  58 +++-----
 src/ipa/mali-c55/algorithms/lsc.h       |   8 +-
 src/ipa/mali-c55/mali-c55.cpp           |  19 +--
 src/ipa/mali-c55/module.h               |   3 +-
 src/ipa/mali-c55/params.h               |  77 ++++++++++
 src/ipa/rkisp1/params.cpp               |  93 +-----------
 src/ipa/rkisp1/params.h                 | 175 ++++++++++++----------
 src/ipa/rkisp1/rkisp1.cpp               |   2 +-
 utils/update-kernel-headers.sh          |   2 +
 22 files changed, 904 insertions(+), 486 deletions(-)
---
base-commit: e44fb8f44031ceabf4b7d647a344b18bddd7cfbb
change-id: 20250829-v4l2-params-d42aa599e78a

Best regards,