| .. SPDX-License-Identifier: GPL-2.0 |
| |
| V4L2 generic ISP parameters and statistics support |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Design rationale |
| ================ |
| |
| ISP configuration parameters and statistics are processed and collected by |
| drivers and exchanged with userspace through data types that usually |
| reflect the ISP peripheral registers layout. |
| |
| Each ISP driver defines its own metadata output format for parameters and |
| a metadata capture format for statistics. The buffer layout is realized by a |
| set of C structures that reflects the registers layout. The number and types |
| of C structures is fixed by the format definition and becomes part of the Linux |
| kernel uAPI/uABI interface. |
| |
| Because of the hard requirement of backward compatibility when extending the |
| user API/ABI interface, modifying an ISP driver capture or output metadata |
| format after it has been accepted by mainline is very hard if not impossible. |
| |
| It generally happens, in fact, that after the first accepted revision of an ISP |
| driver the buffers layout need to be modified, either to support new hardware |
| blocks, to fix bugs or to support different revisions of the hardware. |
| |
| Each of these situations would require defining a new metadata format, making it |
| really hard to maintain and extend drivers and requiring userspace to use |
| the correct format depending on the kernel revision in use. |
| |
| V4L2 ISP configuration parameters |
| ================================= |
| |
| For these reasons, Video4Linux2 defines generic types for ISP configuration |
| parameters and statistics. Drivers are still expected to define their own |
| formats for their metadata output and capture nodes, but the buffers layout can |
| be defined using the extensible and versioned types defined by |
| include/uapi/linux/media/v4l2-isp.h. |
| |
| Drivers are expected to provide the definitions of their supported ISP blocks |
| and the expected maximum size of a buffer. |
| |
| For driver developers a set of helper functions to assist them with validation |
| of the buffer received from userspace is available in |
| drivers/media/v4l2-core/v4l2-isp.c |
| |
| V4L2 ISP support driver documentation |
| ===================================== |
| .. kernel-doc:: include/media/v4l2-isp.h |