Documentation: media: mali-c55: Document the mali-c55 parameter setting

Document the mali-c55 parameter setting by expanding the relevant
pages in both admin-guide/ and userspace-api/.

Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Nayden Kanchev  <nayden.kanchev@arm.com>
Co-developed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
pull/1354/merge
Daniel Scally 2025-11-11 16:15:59 +00:00 committed by Hans Verkuil
parent 01535ea086
commit 87b214ddfe
2 changed files with 75 additions and 5 deletions

View File

@ -387,9 +387,24 @@ the processing flow the statistics can be drawn from::
+-------------+ | +-------------+
+--> AWB-1
At present all statistics are drawn from the 0th tap point for each algorithm;
By default all statistics are drawn from the 0th tap point for each algorithm;
I.E. AEXP statistics from AEXP-0 (A), AWB statistics from AWB-0 and AF
statistics from AF-0. In the future this will be configurable.
statistics from AF-0. This is configurable for AEXP and AWB statsistics through
programming the ISP's parameters.
.. _mali-c55-3a-params:
Programming ISP Parameters
==========================
The ISP can be programmed with various parameters from userspace to apply to the
hardware before and during video stream. This allows userspace to dynamically
change values such as black level, white balance and lens shading gains and so
on.
The buffer format and how to populate it are described by the
:ref:`V4L2_META_FMT_MALI_C55_PARAMS <v4l2-meta-fmt-mali-c55-params>` format,
which should be set as the data format for the `mali-c55 3a params` video node.
References
==========

View File

@ -1,10 +1,11 @@
.. SPDX-License-Identifier: GPL-2.0
.. _v4l2-meta-fmt-mali-c55-params:
.. _v4l2-meta-fmt-mali-c55-stats:
*************************************
V4L2_META_FMT_MALI_C55_STATS ('C55S')
*************************************
*****************************************************************************
V4L2_META_FMT_MALI_C55_STATS ('C55S'), V4L2_META_FMT_MALI_C55_PARAMS ('C55P')
*****************************************************************************
3A Statistics
=============
@ -23,6 +24,60 @@ of the C structure :c:type:`mali_c55_stats_buffer` defined in
For details of the statistics see :c:type:`mali_c55_stats_buffer`.
Configuration Parameters
========================
The configuration parameters are passed to the :ref:`mali-c55 3a params
<mali-c55-3a-params>` metadata output video node, using the
:c:type:`v4l2_meta_format` interface. Rather than a single struct containing
sub-structs for each configurable area of the ISP, parameters for the Mali-C55
use the v4l2-isp parameters system, through which groups of parameters are
defined as distinct structs or "blocks" which may be added to the data member of
:c:type:`v4l2_isp_params_buffer`. Userspace is responsible for populating the
data member with the blocks that need to be configured by the driver. Each
block-specific struct embeds :c:type:`v4l2_isp_params_block_header` as its first
member and userspace must populate the type member with a value from
:c:type:`mali_c55_param_block_type`.
.. code-block:: c
struct v4l2_isp_params_buffer *params =
(struct v4l2_isp_params_buffer *)buffer;
params->version = MALI_C55_PARAM_BUFFER_V1;
params->data_size = 0;
void *data = (void *)params->data;
struct mali_c55_params_awb_gains *gains =
(struct mali_c55_params_awb_gains *)data;
gains->header.type = MALI_C55_PARAM_BLOCK_AWB_GAINS;
gains->header.flags |= V4L2_ISP_PARAMS_FL_BLOCK_ENABLE;
gains->header.size = sizeof(struct mali_c55_params_awb_gains);
gains->gain00 = 256;
gains->gain00 = 256;
gains->gain00 = 256;
gains->gain00 = 256;
data += sizeof(struct mali_c55_params_awb_gains);
params->data_size += sizeof(struct mali_c55_params_awb_gains);
struct mali_c55_params_sensor_off_preshading *blc =
(struct mali_c55_params_sensor_off_preshading *)data;
blc->header.type = MALI_C55_PARAM_BLOCK_SENSOR_OFFS;
blc->header.flags |= V4L2_ISP_PARAMS_FL_BLOCK_ENABLE;
blc->header.size = sizeof(struct mali_c55_params_sensor_off_preshading);
blc->chan00 = 51200;
blc->chan01 = 51200;
blc->chan10 = 51200;
blc->chan11 = 51200;
params->data_size += sizeof(struct mali_c55_params_sensor_off_preshading);
Arm Mali-C55 uAPI data types
============================