mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			169 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 4c210495e0961dcd097575679259c019cd99a643 Mon Sep 17 00:00:00 2001
 | |
| From: Naushir Patuck <naush@raspberrypi.com>
 | |
| Date: Tue, 21 Apr 2020 15:06:19 +0100
 | |
| Subject: [PATCH] media: uapi: v4l-ctrls: Add CID base for the bcm2835-isp
 | |
|  driver
 | |
| 
 | |
| We are reserving controls for the new bcm2835-isp driver.
 | |
| 
 | |
| Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
 | |
| ---
 | |
|  .../admin-guide/media/bcm2835-isp.rst         | 127 ++++++++++++++++++
 | |
|  .../userspace-api/media/drivers/index.rst     |   1 +
 | |
|  include/uapi/linux/v4l2-controls.h            |   4 +
 | |
|  3 files changed, 132 insertions(+)
 | |
|  create mode 100644 Documentation/admin-guide/media/bcm2835-isp.rst
 | |
| 
 | |
| --- /dev/null
 | |
| +++ b/Documentation/admin-guide/media/bcm2835-isp.rst
 | |
| @@ -0,0 +1,127 @@
 | |
| +.. 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
 | |
| --- a/Documentation/userspace-api/media/drivers/index.rst
 | |
| +++ b/Documentation/userspace-api/media/drivers/index.rst
 | |
| @@ -35,6 +35,7 @@ For more details see the file COPYING in
 | |
|  	cx2341x-uapi
 | |
|  	dw100
 | |
|  	imx-uapi
 | |
| +	bcm2835-isp
 | |
|  	max2175
 | |
|  	meye-uapi
 | |
|  	omap3isp-uapi
 | |
| --- a/include/uapi/linux/v4l2-controls.h
 | |
| +++ b/include/uapi/linux/v4l2-controls.h
 | |
| @@ -231,6 +231,10 @@ enum v4l2_colorfx {
 | |
|   */
 | |
|  #define V4L2_CID_USER_DW100_BASE		(V4L2_CID_USER_BASE + 0x1190)
 | |
|  
 | |
| +/* The base for the bcm2835-isp driver controls.
 | |
| + * We reserve 16 controls for this driver. */
 | |
| +#define V4L2_CID_USER_BCM2835_ISP_BASE		(V4L2_CID_USER_BASE + 0x10f0)
 | |
| +
 | |
|  /* MPEG-class control IDs */
 | |
|  /* The MPEG controls are applicable to all codec controls
 | |
|   * and the 'MPEG' part of the define is historical */
 |