Linux Media Controller development
 help / color / mirror / Atom feed
* [PATCH v7 0/12] media: rkisp1: Extensible parameters and companding
@ 2024-07-24  8:49 Jacopo Mondi
  2024-07-24  8:49 ` [PATCH v7 01/12] media: uapi: rkisp1-config: Add extensible params format Jacopo Mondi
                   ` (12 more replies)
  0 siblings, 13 replies; 31+ messages in thread
From: Jacopo Mondi @ 2024-07-24  8:49 UTC (permalink / raw)
  To: Linux Media Mailing List
  Cc: Jacopo Mondi, Laurent Pinchart, Sakari Ailus, Hans Verkuil,
	Stefan Klug, Paul Elder, Daniel Scally, Kieran Bingham,
	Umang Jain, Dafna Hirschfeld, Mauro Carvalho Chehab,
	Heiko Stuebner

v6->v7:
- Collect [PATCH v2 0/5] media: rkisp1: Add support for the companding block
- Fix GOC handling
- Fix newly introduced errors in checkstyle and documentation reported by
  https://gitlab.freedesktop.org/linux-media/users/jmondi/-/pipelines/1231492

v5->v6:
- Collect [v5.2 6/7] from Laurent
- Collect Paul's tags
- Add extra validation for unexpected data after the payload end as
  suggested by Sakari

v4->v5:
- Refine validation of the ext params buffer following Laurent's suggestion
- perform memcpy of the parameters buffer after sizes validation

v3->v4:
- Introduce 'union rkisp1_ext_params_config' to avoid casts in the block
  handlers

v2->v3:
- Address Laurent's comments on the uAPI:
  - rename $block_config with  just 'config'
  - reduce header size
  - rename a few fields/blocks

- Address Laurent's comment on the params node:
  - Use the plane payload for memcpy() and buffer validation
  - drop buf_out_validate() and use buf_prepare() only
  - validate the total buffer size against the buffer payload
  - use const pointers where possible

v1->v2:
- re-order patches to introduce parameters buffer caching for the existing
  "fixed" format before introducing the "extensible" format
- align all structures to 64-bit boundaries in the uAPI
- remove NO_CHANGE enablement state and cache a bitmask of enabled blocks
- address review comments in documentation

The VeriSilicon ISP8000 IP, supported through the rkisp1 driver in the Linux
kernel, is integrated in several SoCs from different vendors. Different
revisions of the IP differ in the number of supported features and in the
register space location assigned to specific ISP blocks.

The current configuration parameters format, defined in
include/uapi/linux/rkisp1-config.h is realized by a C structure (struct
rkisp1_params_cfg) which wraps other structures that allows to configure
specific ISP blocks. The layout of the parameters buffer is part of the Linux
kernel uAPI and can hardly be extended or modified to adapt it to different
revisions of the same IP.

This series proposes the introduction of a new parameters format for the RkISP1
(without dropping support for the existing one) which is designed with the goals
of being:

1) versioned: can be changed without breaking existing applications
2) extensible: new blocks and parameters can be added without breaking the uABI

To do so, a new 'struct rkisp1_ext_params_cfg' type is introduced. It wraps an
header and a data buffer, which userspace fills with configuration blocks
for each ISP block it intends to configure. The parameters buffer is thus of
different effective sizes, depending on the number of blocks userspace intends
to configure.

The kernel driver parses the data block and decides, based on the versioning
number and the platform it operates on, how to handle each block.

The parameters format is very similar to the parameters format implemented
in the in-review Mali C55 ISP driver [1]

CI pipeline [2]

[1] https://lore.kernel.org/linux-media/20240529152858.183799-15-dan.scally@ideasonboard.com/
[2] https://gitlab.freedesktop.org/linux-media/users/jmondi/-/pipelines/1231500

Jacopo Mondi (7):
  media: uapi: rkisp1-config: Add extensible params format
  media: uapi: videodev2: Add V4L2_META_FMT_RK_ISP1_EXT_PARAMS
  media: rkisp1: Add struct rkisp1_params_buffer
  media: rkisp1: Copy the parameters buffer
  media: rkisp1: Cache the currently active format
  media: rkisp1: Implement extensible params support
  media: rkisp1: Implement s_fmt/try_fmt

Laurent Pinchart (2):
  media: rkisp1: Add helper function to swap colour channels
  media: rkisp1: Add features mask to extensible block handlers

Paul Elder (3):
  media: rkisp1: Add register definitions for the companding block
  media: rkisp1: Add feature flags for BLS and compand
  media: rkisp1: Add support for the companding block

 Documentation/admin-guide/media/rkisp1.rst    |   11 +-
 .../media/v4l/metafmt-rkisp1.rst              |   57 +-
 .../platform/rockchip/rkisp1/rkisp1-common.c  |   14 +
 .../platform/rockchip/rkisp1/rkisp1-common.h  |   38 +-
 .../platform/rockchip/rkisp1/rkisp1-dev.c     |    9 +-
 .../platform/rockchip/rkisp1/rkisp1-params.c  | 1016 +++++++++++++++--
 .../platform/rockchip/rkisp1/rkisp1-regs.h    |   23 +
 .../platform/rockchip/rkisp1/rkisp1-stats.c   |   51 +-
 drivers/media/v4l2-core/v4l2-ioctl.c          |    1 +
 include/uapi/linux/rkisp1-config.h            |  576 ++++++++++
 include/uapi/linux/videodev2.h                |    1 +
 11 files changed, 1640 insertions(+), 157 deletions(-)

--
2.45.2


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2024-08-06 11:20 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-24  8:49 [PATCH v7 0/12] media: rkisp1: Extensible parameters and companding Jacopo Mondi
2024-07-24  8:49 ` [PATCH v7 01/12] media: uapi: rkisp1-config: Add extensible params format Jacopo Mondi
2024-07-30 12:11   ` Hans Verkuil
2024-07-30 12:14     ` Hans Verkuil
2024-07-30 12:19       ` Laurent Pinchart
2024-07-30 12:18     ` Laurent Pinchart
2024-07-30 12:37       ` Hans Verkuil
2024-08-05 11:52         ` Sakari Ailus
2024-08-06  7:30           ` Jacopo Mondi
2024-08-06  8:52             ` Laurent Pinchart
2024-08-06  8:53             ` Sakari Ailus
2024-08-06  9:05               ` Jacopo Mondi
2024-08-06  7:27         ` Jacopo Mondi
2024-08-06  8:17           ` Hans Verkuil
2024-08-06  8:24             ` Jacopo Mondi
2024-08-06  9:06               ` Laurent Pinchart
2024-08-06  9:16                 ` Jacopo Mondi
2024-08-06  9:32                   ` Laurent Pinchart
2024-08-06 11:20                     ` Sakari Ailus
2024-07-24  8:49 ` [PATCH v7 02/12] media: uapi: videodev2: Add V4L2_META_FMT_RK_ISP1_EXT_PARAMS Jacopo Mondi
2024-07-24  8:49 ` [PATCH v7 03/12] media: rkisp1: Add struct rkisp1_params_buffer Jacopo Mondi
2024-07-24  8:49 ` [PATCH v7 04/12] media: rkisp1: Copy the parameters buffer Jacopo Mondi
2024-07-24  8:49 ` [PATCH v7 05/12] media: rkisp1: Cache the currently active format Jacopo Mondi
2024-07-24  8:49 ` [PATCH v7 06/12] media: rkisp1: Implement extensible params support Jacopo Mondi
2024-07-24  8:49 ` [PATCH v7 07/12] media: rkisp1: Implement s_fmt/try_fmt Jacopo Mondi
2024-07-24  8:49 ` [PATCH v7 08/12] media: rkisp1: Add helper function to swap colour channels Jacopo Mondi
2024-07-24  8:50 ` [PATCH v7 09/12] media: rkisp1: Add features mask to extensible block handlers Jacopo Mondi
2024-07-24  8:50 ` [PATCH v7 10/12] media: rkisp1: Add register definitions for the companding block Jacopo Mondi
2024-07-24  8:50 ` [PATCH v7 11/12] media: rkisp1: Add feature flags for BLS and compand Jacopo Mondi
2024-07-24  8:50 ` [PATCH v7 12/12] media: rkisp1: Add support for the companding block Jacopo Mondi
2024-07-24 10:44 ` [PATCH v7 0/12] media: rkisp1: Extensible parameters and companding Kieran Bingham

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox