| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- .. SPDX-License-Identifier: (GPL-2.0-only OR MIT)
- .. include:: <isonum.txt>
- =================================================
- Amlogic C3 Image Signal Processing (C3ISP) driver
- =================================================
- Introduction
- ============
- This file documents the Amlogic C3ISP driver located under
- drivers/media/platform/amlogic/c3/isp.
- The current version of the driver supports the C3ISP found on
- Amlogic C308L processor.
- The driver implements V4L2, Media controller and V4L2 subdev interfaces.
- Camera sensor using V4L2 subdev interface in the kernel is supported.
- The driver has been tested on AW419-C308L-Socket platform.
- Amlogic C3 ISP
- ==============
- The Camera hardware found on C308L processors and supported by
- the driver consists of:
- - 1 MIPI-CSI-2 module: handles the physical layer of the MIPI CSI-2 receiver and
- receives data from the connected camera sensor.
- - 1 MIPI-ADAPTER module: organizes MIPI data to meet ISP input requirements and
- send MIPI data to ISP.
- - 1 ISP (Image Signal Processing) module: contains a pipeline of image processing
- hardware blocks. The ISP pipeline contains three resizers at the end each of
- them connected to a DMA interface which writes the output data to memory.
- A high-level functional view of the C3 ISP is presented below.::
- +----------+ +-------+
- | Resizer |--->| WRMIF |
- +---------+ +------------+ +--------------+ +-------+ |----------+ +-------+
- | Sensor |--->| MIPI CSI-2 |--->| MIPI ADAPTER |--->| ISP |---|----------+ +-------+
- +---------+ +------------+ +--------------+ +-------+ | Resizer |--->| WRMIF |
- +----------+ +-------+
- |----------+ +-------+
- | Resizer |--->| WRMIF |
- +----------+ +-------+
- Driver architecture and design
- ==============================
- With the goal to model the hardware links between the modules and to expose a
- clean, logical and usable interface, the driver registers the following V4L2
- sub-devices:
- - 1 `c3-mipi-csi2` sub-device - the MIPI CSI-2 receiver
- - 1 `c3-mipi-adapter` sub-device - the MIPI adapter
- - 1 `c3-isp-core` sub-device - the ISP core
- - 3 `c3-isp-resizer` sub-devices - the ISP resizers
- The `c3-isp-core` sub-device is linked to 2 video device nodes for statistics
- capture and parameters programming:
- - the `c3-isp-stats` capture video device node for statistics capture
- - the `c3-isp-params` output video device for parameters programming
- Each `c3-isp-resizer` sub-device is linked to a capture video device node where
- frames are captured from:
- - `c3-isp-resizer0` is linked to the `c3-isp-cap0` capture video device
- - `c3-isp-resizer1` is linked to the `c3-isp-cap1` capture video device
- - `c3-isp-resizer2` is linked to the `c3-isp-cap2` capture video device
- The media controller pipeline graph is as follows (with connected a
- IMX290 camera sensor):
- .. _isp_topology_graph:
- .. kernel-figure:: c3-isp.dot
- :alt: c3-isp.dot
- :align: center
- Media pipeline topology
- Implementation
- ==============
- Runtime configuration of the ISP hardware is performed on the `c3-isp-params`
- video device node using the :ref:`V4L2_META_FMT_C3ISP_PARAMS
- <v4l2-meta-fmt-c3isp-params>` as data format. The buffer structure is defined by
- :c:type:`c3_isp_params_cfg`.
- Statistics are captured from the `c3-isp-stats` video device node using the
- :ref:`V4L2_META_FMT_C3ISP_STATS <v4l2-meta-fmt-c3isp-stats>` data format.
- The final picture size and format is configured using the V4L2 video
- capture interface on the `c3-isp-cap[0, 2]` video device nodes.
- The Amlogic C3 ISP is supported by `libcamera <https://libcamera.org>`_ with a
- dedicated pipeline handler and algorithms that perform run-time image correction
- and enhancement.
|