| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- .. SPDX-License-Identifier: GPL-2.0-only
- .. include:: <isonum.txt>
- .. _media-ccs-uapi:
- MIPI CCS camera sensor driver
- =============================
- The MIPI CCS camera sensor driver is a generic driver for `MIPI CCS
- <https://www.mipi.org/specifications/camera-command-set>`_ compliant
- camera sensors. It exposes three sub-devices representing the pixel array,
- the binner and the scaler.
- As the capabilities of individual devices vary, the driver exposes
- interfaces based on the capabilities that exist in hardware.
- Also see :ref:`the CCS driver kernel documentation <media-ccs-driver>`.
- Pixel Array sub-device
- ----------------------
- The pixel array sub-device represents the camera sensor's pixel matrix, as well
- as analogue crop functionality present in many compliant devices. The analogue
- crop is configured using the ``V4L2_SEL_TGT_CROP`` on the source pad (0) of the
- entity. The size of the pixel matrix can be obtained by getting the
- ``V4L2_SEL_TGT_NATIVE_SIZE`` target.
- Binner
- ------
- The binner sub-device represents the binning functionality on the sensor. For
- that purpose, selection target ``V4L2_SEL_TGT_COMPOSE`` is supported on the
- sink pad (0).
- Additionally, if a device has no scaler or digital crop functionality, the
- source pad (1) exposes another digital crop selection rectangle that can only
- crop at the end of the lines and frames.
- Scaler
- ------
- The scaler sub-device represents the digital crop and scaling functionality of
- the sensor. The V4L2 selection target ``V4L2_SEL_TGT_CROP`` is used to
- configure the digital crop on the sink pad (0) when digital crop is supported.
- Scaling is configured using selection target ``V4L2_SEL_TGT_COMPOSE`` on the
- sink pad (0) as well.
- Additionally, if the scaler sub-device exists, its source pad (1) exposes
- another digital crop selection rectangle that can only crop at the end of the
- lines and frames.
- Digital and analogue crop
- -------------------------
- Digital crop functionality is referred to as cropping that effectively works by
- dropping some data on the floor. Analogue crop, on the other hand, means that
- the cropped information is never retrieved. In case of camera sensors, the
- analogue data is never read from the pixel matrix that are outside the
- configured selection rectangle that designates crop. The difference has an
- effect in device timing and likely also in power consumption.
- Private controls
- ----------------
- The MIPI CCS driver implements a number of private controls under
- ``V4L2_CID_USER_BASE_CCS`` to control the MIPI CCS compliant camera sensors.
- Analogue gain model
- ~~~~~~~~~~~~~~~~~~~
- The CCS defines an analogue gain model where the gain can be calculated using
- the following formula:
- gain = m0 * x + c0 / (m1 * x + c1)
- Either m0 or c0 will be zero. The constants that are device specific, can be
- obtained from the following controls:
- V4L2_CID_CCS_ANALOGUE_GAIN_M0
- V4L2_CID_CCS_ANALOGUE_GAIN_M1
- V4L2_CID_CCS_ANALOGUE_GAIN_C0
- V4L2_CID_CCS_ANALOGUE_GAIN_C1
- The analogue gain (``x`` in the formula) is controlled through
- ``V4L2_CID_ANALOGUE_GAIN`` in this case.
- Alternate analogue gain model
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- The CCS defines another analogue gain model called alternate analogue gain. In
- this case, the formula to calculate actual gain consists of linear and
- exponential parts:
- gain = linear * 2 ^ exponent
- The ``linear`` and ``exponent`` factors can be set using the
- ``V4L2_CID_CCS_ANALOGUE_LINEAR_GAIN`` and
- ``V4L2_CID_CCS_ANALOGUE_EXPONENTIAL_GAIN`` controls, respectively
- Shading correction
- ~~~~~~~~~~~~~~~~~~
- The CCS standard supports lens shading correction. The feature can be controlled
- using ``V4L2_CID_CCS_SHADING_CORRECTION``. Additionally, the luminance
- correction level may be changed using
- ``V4L2_CID_CCS_LUMINANCE_CORRECTION_LEVEL``, where value 0 indicates no
- correction and 128 indicates correcting the luminance in corners to 10 % less
- than in the centre.
- Shading correction needs to be enabled for luminance correction level to have an
- effect.
- **Copyright** |copy| 2020 Intel Corporation
|