forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.3 KiB
127 lines
4.3 KiB
.. 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 <V4L2-PIX-FMT-SRGGB8>`, |
|
:ref:`RAW10P <V4L2-PIX-FMT-SRGGB10P>`, |
|
:ref:`RAW12P <V4L2-PIX-FMT-SRGGB12P>`, |
|
:ref:`RAW14P <V4L2-PIX-FMT-SRGGB14P>`, |
|
:ref:`RAW16 <V4L2-PIX-FMT-SRGGB16>`, |
|
:ref:`RGB24/BGR24 <V4L2-PIX-FMT-RGB24>`, |
|
:ref:`YUYV <V4L2-PIX-FMT-YUYV>`, |
|
:ref:`YVYU <V4L2-PIX-FMT-YVYU>`, |
|
:ref:`UYVY <V4L2-PIX-FMT-UYVY>`, |
|
:ref:`VYUY <V4L2-PIX-FMT-VYUY>`, |
|
:ref:`YUV420/YVU420 <V4L2-PIX-FMT-YUV420>` |
|
|
|
* - "bcm2835-isp0-capture1" |
|
- source |
|
- High resolution YUV or RGB processed output from the ISP. |
|
- :ref:`RGB565 <V4L2-PIX-FMT-RGB565>`, |
|
:ref:`RGB24/BGR24 <V4L2-PIX-FMT-RGB24>`, |
|
:ref:`ABGR32 <V4L2-PIX-FMT-ABGR32>`, |
|
:ref:`YUYV <V4L2-PIX-FMT-YUYV>`, |
|
:ref:`YVYU <V4L2-PIX-FMT-YVYU>`, |
|
:ref:`UYVY <V4L2-PIX-FMT-UYVY>`, |
|
:ref:`VYUY <V4L2-PIX-FMT-VYUY>`. |
|
:ref:`YUV420/YVU420 <V4L2-PIX-FMT-YUV420>`, |
|
:ref:`NV12/NV21 <V4L2-PIX-FMT-NV12>`, |
|
|
|
* - "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 <V4L2-PIX-FMT-YUYV>`, |
|
:ref:`YVYU <V4L2-PIX-FMT-YVYU>`, |
|
:ref:`UYVY <V4L2-PIX-FMT-UYVY>`, |
|
:ref:`VYUY <V4L2-PIX-FMT-VYUY>`. |
|
:ref:`YUV420/YVU420 <V4L2-PIX-FMT-YUV420>`, |
|
:ref:`NV12/NV21 <V4L2-PIX-FMT-NV12>`, |
|
|
|
* - "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 <VIDIOC_G_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
|
|
|