mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 06:08:08 +00:00
20ea6adbf1
Build system: x86_64 Build-tested: bcm2708, bcm2709, bcm2710, bcm2711 Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B Signed-off-by: Marty Jones <mj8263788@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
170 lines
5.9 KiB
Diff
170 lines
5.9 KiB
Diff
From 4811914a840943a821dd362a9124aea62d228732 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
|
|
hantro
|
|
imx-uapi
|
|
+ bcm2835-isp
|
|
max2175
|
|
meye-uapi
|
|
omap3isp-uapi
|
|
--- a/include/uapi/linux/v4l2-controls.h
|
|
+++ b/include/uapi/linux/v4l2-controls.h
|
|
@@ -212,6 +212,10 @@ enum v4l2_colorfx {
|
|
*/
|
|
#define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
|
|
|
|
+/* 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 */
|