mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Add the file 'c3-isp.rst' that documents the c3-isp driver. 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>
101 lines
4 KiB
ReStructuredText
101 lines
4 KiB
ReStructuredText
.. 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.
|