Documentation/admin-guide/media/qcom_camss.rst
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
This file documents the Qualcomm Camera Subsystem driver located under drivers/media/platform/qcom/camss.
The current version of the driver supports the Camera Subsystem found on Qualcomm MSM8916/APQ8016 and MSM8996/APQ8096 processors.
The driver implements V4L2, Media controller and V4L2 subdev interfaces. Camera sensor using V4L2 subdev interface in the kernel is supported.
The driver is implemented using as a reference the Qualcomm Camera Subsystem driver for Android as found in Code Linaro [#f1]_ [#f2]_.
The Camera Subsystem hardware found on 8x16 / 8x96 processors and supported by the driver consists of:
The current version of the driver supports:
Input from camera sensor via CSIPHY;
Generation of test input data by the TG in CSID;
RDI interface of VFE
Raw dump of the input data to memory.
Supported formats:
(8x96 only) Format conversion of the input data.
Supported input formats:
Supported output formats:
PIX interface of VFE
Format conversion of the input data.
Supported input formats:
Supported output formats:
Scaling support. Configuration of the VFE Encoder Scale module for downscalling with ratio up to 16x.
Cropping support. Configuration of the VFE Encoder Crop module.
Concurrent and independent usage of two (8x96: three) data inputs - could be camera sensors and/or TG.
The driver implements the V4L2 subdev interface. With the goal to model the hardware links between the modules and to expose a clean, logical and usable interface, the driver is split into V4L2 sub-devices as follows (8x16 / 8x96):
The considerations to split the driver in this particular way are as follows:
Each VFE sub-device is linked to a separate video device node.
The media controller pipeline graph is as follows (with connected two / three OV5645 camera sensors):
.. _qcom_camss_graph:
.. kernel-figure:: qcom_camss_graph.dot :alt: qcom_camss_graph.dot :align: center
Media pipeline graph 8x16
.. kernel-figure:: qcom_camss_8x96_graph.dot :alt: qcom_camss_8x96_graph.dot :align: center
Media pipeline graph 8x96
Runtime configuration of the hardware (updating settings while streaming) is not required to implement the currently supported functionality. The complete configuration on each hardware module is applied on STREAMON ioctl based on the current active media links, formats and controls set.
The output size of the scaler module in the VFE is configured with the actual compose selection rectangle on the sink pad of the 'msm_vfe0_pix' entity.
The crop output area of the crop module in the VFE is configured with the actual crop selection rectangle on the source pad of the 'msm_vfe0_pix' entity.
APQ8016 Specification: https://developer.qualcomm.com/download/sd410/snapdragon-410-processor-device-specification.pdf Referenced 2016-11-24.
APQ8096 Specification: https://developer.qualcomm.com/download/sd820e/qualcomm-snapdragon-820e-processor-apq8096sge-device-specification.pdf Referenced 2018-06-22.
.. [#f1] https://git.codelinaro.org/clo/la/kernel/msm-3.10/ .. [#f2] https://git.codelinaro.org/clo/la/kernel/msm-3.18/