Documentation: media: Add documentation file metafmt-c3-isp.rst
Add the file 'metafmt-c3-isp.rst' that documents the meta format of c3-isp. Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Keke Li <keke.li@amlogic.com> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>pull/1112/head
parent
fb2e135208
commit
f0d3a857ae
|
|
@ -12,6 +12,7 @@ These formats are used for the :ref:`metadata` interface only.
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
metafmt-c3-isp
|
||||
metafmt-d4xx
|
||||
metafmt-generic
|
||||
metafmt-intel-ipu3
|
||||
|
|
|
|||
|
|
@ -0,0 +1,86 @@
|
|||
.. SPDX-License-Identifier: (GPL-2.0-only OR MIT)
|
||||
|
||||
.. _v4l2-meta-fmt-c3isp-stats:
|
||||
.. _v4l2-meta-fmt-c3isp-params:
|
||||
|
||||
***********************************************************************
|
||||
V4L2_META_FMT_C3ISP_STATS ('C3ST'), V4L2_META_FMT_C3ISP_PARAMS ('C3PM')
|
||||
***********************************************************************
|
||||
|
||||
.. c3_isp_stats_info
|
||||
|
||||
3A Statistics
|
||||
=============
|
||||
|
||||
The C3 ISP can collect different statistics over an input Bayer frame.
|
||||
Those statistics are obtained from the "c3-isp-stats" metadata capture video nodes,
|
||||
using the :c:type:`v4l2_meta_format` interface.
|
||||
They are formatted as described by the :c:type:`c3_isp_stats_info` structure.
|
||||
|
||||
The statistics collected are Auto-white balance,
|
||||
Auto-exposure and Auto-focus information.
|
||||
|
||||
.. c3_isp_params_cfg
|
||||
|
||||
Configuration Parameters
|
||||
========================
|
||||
|
||||
The configuration parameters are passed to the c3-isp-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 C3-ISP
|
||||
are defined as distinct structs or "blocks" which may be added to the data
|
||||
member of :c:type:`c3_isp_params_cfg`. Userspace is responsible for
|
||||
populating the data member with the blocks that need to be configured by the driver, but
|
||||
need not populate it with **all** the blocks, or indeed with any at all if there
|
||||
are no configuration changes to make. Populated blocks **must** be consecutive
|
||||
in the buffer. To assist both userspace and the driver in identifying the
|
||||
blocks each block-specific struct embeds
|
||||
:c:type:`c3_isp_params_block_header` as its first member and userspace
|
||||
must populate the type member with a value from
|
||||
:c:type:`c3_isp_params_block_type`. Once the blocks have been populated
|
||||
into the data buffer, the combined size of all populated blocks shall be set in
|
||||
the data_size member of :c:type:`c3_isp_params_cfg`. For example:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
struct c3_isp_params_cfg *params =
|
||||
(struct c3_isp_params_cfg *)buffer;
|
||||
|
||||
params->version = C3_ISP_PARAM_BUFFER_V0;
|
||||
params->data_size = 0;
|
||||
|
||||
void *data = (void *)params->data;
|
||||
|
||||
struct c3_isp_params_awb_gains *gains =
|
||||
(struct c3_isp_params_awb_gains *)data;
|
||||
|
||||
gains->header.type = C3_ISP_PARAMS_BLOCK_AWB_GAINS;
|
||||
gains->header.flags = C3_ISP_PARAMS_BLOCK_FL_ENABLE;
|
||||
gains->header.size = sizeof(struct c3_isp_params_awb_gains);
|
||||
|
||||
gains->gr_gain = 256;
|
||||
gains->r_gain = 256;
|
||||
gains->b_gain = 256;
|
||||
gains->gb_gain = 256;
|
||||
|
||||
data += sizeof(struct c3_isp__params_awb_gains);
|
||||
params->data_size += sizeof(struct c3_isp_params_awb_gains);
|
||||
|
||||
struct c3_isp_params_awb_config *awb_cfg =
|
||||
(struct c3_isp_params_awb_config *)data;
|
||||
|
||||
awb_cfg->header.type = C3_ISP_PARAMS_BLOCK_AWB_CONFIG;
|
||||
awb_cfg->header.flags = C3_ISP_PARAMS_BLOCK_FL_ENABLE;
|
||||
awb_cfg->header.size = sizeof(struct c3_isp_params_awb_config);
|
||||
|
||||
awb_cfg->tap_point = C3_ISP_AWB_STATS_TAP_BEFORE_WB;
|
||||
awb_cfg->satur = 1;
|
||||
awb_cfg->horiz_zones_num = 32;
|
||||
awb_cfg->vert_zones_num = 24;
|
||||
|
||||
params->data_size += sizeof(struct c3_isp_params_awb_config);
|
||||
|
||||
Amlogic C3 ISP uAPI data types
|
||||
===============================
|
||||
|
||||
.. kernel-doc:: include/uapi/linux/media/amlogic/c3-isp-config.h
|
||||
|
|
@ -1259,6 +1259,7 @@ M: Keke Li <keke.li@amlogic.com>
|
|||
L: linux-media@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/media/amlogic,c3-isp.yaml
|
||||
F: Documentation/userspace-api/media/v4l/metafmt-c3-isp.rst
|
||||
F: drivers/media/platform/amlogic/c3/isp/
|
||||
F: include/uapi/linux/media/amlogic/
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue