]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: uapi: Add meta pixel format for PiSP BE config
authorJacopo Mondi <jacopo.mondi@ideasonboard.com>
Wed, 26 Jun 2024 18:14:34 +0000 (20:14 +0200)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 27 Jun 2024 11:06:47 +0000 (13:06 +0200)
Add format description for the PiSP Back End configuration parameter
buffer.

Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Documentation/userspace-api/media/v4l/meta-formats.rst
Documentation/userspace-api/media/v4l/metafmt-pisp-be.rst [new file with mode: 0644]
drivers/media/v4l2-core/v4l2-ioctl.c
include/uapi/linux/videodev2.h

index c23aac823d2cf352846430587b5b09eb4f18ee2d..c6e56b5888bc9d4edc9b7b05a040b71237028d10 100644 (file)
@@ -15,6 +15,7 @@ These formats are used for the :ref:`metadata` interface only.
     metafmt-d4xx
     metafmt-generic
     metafmt-intel-ipu3
+    metafmt-pisp-be
     metafmt-rkisp1
     metafmt-uvc
     metafmt-vivid
diff --git a/Documentation/userspace-api/media/v4l/metafmt-pisp-be.rst b/Documentation/userspace-api/media/v4l/metafmt-pisp-be.rst
new file mode 100644 (file)
index 0000000..3281fe3
--- /dev/null
@@ -0,0 +1,56 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+.. _v4l2-meta-fmt-rpi-be-cfg:
+
+************************
+V4L2_META_FMT_RPI_BE_CFG
+************************
+
+Raspberry Pi PiSP Back End configuration format
+===============================================
+
+The Raspberry Pi PiSP Back End memory-to-memory image signal processor is
+configured by userspace by providing a buffer of configuration parameters
+to the `pispbe-config` output video device node using the
+:c:type:`v4l2_meta_format` interface.
+
+The PiSP Back End processes images in tiles, and its configuration requires
+specifying two different sets of parameters by populating the members of
+:c:type:`pisp_be_tiles_config` defined in the ``pisp_be_config.h`` header file.
+
+The `Raspberry Pi PiSP technical specification
+<https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf>`_
+provide detailed description of the ISP back end configuration and programming
+model.
+
+Global configuration data
+-------------------------
+
+The global configuration data describe how the pixels in a particular image are
+to be processed and is therefore shared across all the tiles of the image. So
+for example, LSC (Lens Shading Correction) or Denoise parameters would be common
+across all tiles from the same frame.
+
+Global configuration data are passed to the ISP by populating the member of
+:c:type:`pisp_be_config`.
+
+Tile parameters
+---------------
+
+As the ISP processes images in tiles, each set of tiles parameters describe how
+a single tile in an image is going to be processed. A single set of tile
+parameters consist of 160 bytes of data and to process a batch of tiles several
+sets of tiles parameters are required.
+
+Tiles parameters are passed to the ISP by populating the member of
+``pisp_tile`` and the ``num_tiles`` fields of :c:type:`pisp_be_tiles_config`.
+
+Raspberry Pi PiSP Back End uAPI data types
+==========================================
+
+This section describes the data types exposed to userspace by the Raspberry Pi
+PiSP Back End. The section is informative only, for a detailed description of
+each field refer to the `Raspberry Pi PiSP technical specification
+<https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf>`_.
+
+.. kernel-doc:: include/uapi/linux/media/raspberrypi/pisp_be_config.h
index ee97643ff3a7be72c73eb279ba61f6d8ea0de2dd..7c684788997c669955a2ce3ac8814fd1120d608a 100644 (file)
@@ -1465,6 +1465,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
        case V4L2_PIX_FMT_Y210:         descr = "10-bit YUYV Packed"; break;
        case V4L2_PIX_FMT_Y212:         descr = "12-bit YUYV Packed"; break;
        case V4L2_PIX_FMT_Y216:         descr = "16-bit YUYV Packed"; break;
+       case V4L2_META_FMT_RPI_BE_CFG:  descr = "RPi PiSP BE Config format"; break;
        case V4L2_META_FMT_GENERIC_8:   descr = "8-bit Generic Metadata"; break;
        case V4L2_META_FMT_GENERIC_CSI2_10:     descr = "8-bit Generic Meta, 10b CSI-2"; break;
        case V4L2_META_FMT_GENERIC_CSI2_12:     descr = "8-bit Generic Meta, 12b CSI-2"; break;
index dd6876380fe3813040f87c523ffbecf3aa797cda..96fc0456081e1945d45f826ae71b7a3dc4f0f371 100644 (file)
@@ -843,6 +843,9 @@ struct v4l2_pix_format {
 #define V4L2_META_FMT_RK_ISP1_PARAMS   v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */
 #define V4L2_META_FMT_RK_ISP1_STAT_3A  v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */
 
+/* Vendor specific - used for RaspberryPi PiSP */
+#define V4L2_META_FMT_RPI_BE_CFG       v4l2_fourcc('R', 'P', 'B', 'C') /* PiSP BE configuration */
+
 #ifdef __KERNEL__
 /*
  * Line-based metadata formats. Remember to update v4l_fill_fmtdesc() when