On Tue Nov 11 16:15:59 2025 +0000, Daniel Scally wrote:
> Document the mali-c55 parameter setting by expanding the relevant
> pages in both admin-guide/ and userspace-api/.
> 
> Tested-by: Lad Prabhakar <[email protected]>
> Reviewed-by: Laurent Pinchart <[email protected]>
> Acked-by: Nayden Kanchev  <[email protected]>
> Co-developed-by: Jacopo Mondi <[email protected]>
> Signed-off-by: Jacopo Mondi <[email protected]>
> Signed-off-by: Daniel Scally <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 Documentation/admin-guide/media/mali-c55.rst       | 19 ++++++-
 .../media/v4l/metafmt-arm-mali-c55.rst             | 61 ++++++++++++++++++++--
 2 files changed, 75 insertions(+), 5 deletions(-)

---

diff --git a/Documentation/admin-guide/media/mali-c55.rst 
b/Documentation/admin-guide/media/mali-c55.rst
index 03723e0e8e43..315f982000c4 100644
--- a/Documentation/admin-guide/media/mali-c55.rst
+++ b/Documentation/admin-guide/media/mali-c55.rst
@@ -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
 ==========
diff --git a/Documentation/userspace-api/media/v4l/metafmt-arm-mali-c55.rst 
b/Documentation/userspace-api/media/v4l/metafmt-arm-mali-c55.rst
index 0bda9740a6be..696e0a645a7e 100644
--- a/Documentation/userspace-api/media/v4l/metafmt-arm-mali-c55.rst
+++ b/Documentation/userspace-api/media/v4l/metafmt-arm-mali-c55.rst
@@ -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
 ============================
 
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to