.. SPDX-License-Identifier: GPL-2.0 BCM2835 ISP Driver ================== Introduction ------------ The BCM2835 Image Sensor Pipeline (ISP) is a fixed function hardware pipeline for performing image processing operations. Images are fed to the input of the ISP through memory frame buffers. These images may be in various YUV, RGB, or Bayer formats. A typical use case would have Bayer images obtained from an image sensor by the BCM2835 Unicam peripheral, written to a memory frame buffer, and finally fed into the input of the ISP. Two concurrent output images may be generated in YUV or RGB format at different resolutions. Statistics output is also generated for Bayer input images. The bcm2835-isp driver exposes the following media pads as V4L2 device nodes: .. tabularcolumns:: |l|l|l|l| .. cssclass: longtable .. flat-table:: * - *Pad* - *Direction* - *Purpose* - *Formats* * - "bcm2835-isp0-output0" - sink - Accepts Bayer, RGB or YUV format frame buffers as input to the ISP HW pipeline. - :ref:`RAW8 `, :ref:`RAW10P `, :ref:`RAW12P `, :ref:`RAW14P `, :ref:`RAW16 `, :ref:`RGB24/BGR24 `, :ref:`YUYV `, :ref:`YVYU `, :ref:`UYVY `, :ref:`VYUY `, :ref:`YUV420/YVU420 ` * - "bcm2835-isp0-capture1" - source - High resolution YUV or RGB processed output from the ISP. - :ref:`RGB565 `, :ref:`RGB24/BGR24 `, :ref:`ABGR32 `, :ref:`YUYV `, :ref:`YVYU `, :ref:`UYVY `, :ref:`VYUY `. :ref:`YUV420/YVU420 `, :ref:`NV12/NV21 `, * - "bcm2835-isp0-capture2" - source - Low resolution YUV processed output from the ISP. The output of this pad cannot have a resolution larger than the "bcm2835-isp0-capture1" pad in any dimension. - :ref:`YUYV `, :ref:`YVYU `, :ref:`UYVY `, :ref:`VYUY `. :ref:`YUV420/YVU420 `, :ref:`NV12/NV21 `, * - "bcm2835-isp0-capture1" - source - Image statistics calculated from the input image provided on the "bcm2835-isp0-output0" pad. Statistics are only available for Bayer format input images. - :ref:`v4l2-meta-fmt-bcm2835-isp-stats`. Pipeline Configuration ---------------------- The ISP pipeline can be configure through user-space by calling :ref:`VIDIOC_S_EXT_CTRLS ` on the “bcm2835-isp0-output0” node with the appropriate parameters as shown in the table below. .. tabularcolumns:: |p{2cm}|p{5.0cm}| .. cssclass: longtable .. flat-table:: * - *id* - *Parameter* * - ``V4L2_CID_USER_BCM2835_ISP_CC_MATRIX`` - struct :c:type:`bcm2835_isp_custom_ccm` * - ``V4L2_CID_USER_BCM2835_ISP_LENS_SHADING`` - struct :c:type:`bcm2835_isp_lens_shading` * - ``V4L2_CID_USER_BCM2835_ISP_BLACK_LEVEL`` - struct :c:type:`bcm2835_isp_black_level` * - ``V4L2_CID_USER_BCM2835_ISP_GEQ`` - struct :c:type:`bcm2835_isp_geq` * - ``V4L2_CID_USER_BCM2835_ISP_GAMMA`` - struct :c:type:`bcm2835_isp_gamma` * - ``V4L2_CID_USER_BCM2835_ISP_DENOISE`` - struct :c:type:`bcm2835_isp_denoise` * - ``V4L2_CID_USER_BCM2835_ISP_SHARPEN`` - struct :c:type:`bcm2835_isp_sharpen` * - ``V4L2_CID_USER_BCM2835_ISP_DPC`` - struct :c:type:`bcm2835_isp_dpc` ++++++++++++++++++++++++ Configuration Parameters ++++++++++++++++++++++++ .. kernel-doc:: include/uapi/linux/bcm2835-isp.h :functions: bcm2835_isp_rational bcm2835_isp_ccm bcm2835_isp_custom_ccm bcm2835_isp_gain_format bcm2835_isp_lens_shading bcm2835_isp_black_level bcm2835_isp_geq bcm2835_isp_gamma bcm2835_isp_denoise bcm2835_isp_sharpen bcm2835_isp_dpc_mode bcm2835_isp_dpc