Patch Detail
Show a patch.
GET /api/1.1/patches/15254/?format=api
{ "id": 15254, "url": "https://patchwork.libcamera.org/api/1.1/patches/15254/?format=api", "web_url": "https://patchwork.libcamera.org/patch/15254/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20220105155539.5550-2-david.plowman@raspberrypi.com>", "date": "2022-01-05T15:55:37", "name": "[libcamera-devel,v3,1/3] include: linux: Update kernel headers to version v5.16-rc7", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "71cb86ad4217856dbfd2ea9620a89b60331fc92e", "submitter": { "id": 42, "url": "https://patchwork.libcamera.org/api/1.1/people/42/?format=api", "name": "David Plowman", "email": "david.plowman@raspberrypi.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/15254/mbox/", "series": [ { "id": 2879, "url": "https://patchwork.libcamera.org/api/1.1/series/2879/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2879", "date": "2022-01-05T15:55:36", "name": "Make use of V4L2_CID_NOTIFY_GAINS", "version": 3, "mbox": "https://patchwork.libcamera.org/series/2879/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/15254/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/15254/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 9FD7CC3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 5 Jan 2022 15:55:57 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C9AF560933;\n\tWed, 5 Jan 2022 16:55:56 +0100 (CET)", "from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com\n\t[IPv6:2a00:1450:4864:20::42a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B5A2B60926\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 5 Jan 2022 16:55:53 +0100 (CET)", "by mail-wr1-x42a.google.com with SMTP id s1so83995871wra.6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 05 Jan 2022 07:55:53 -0800 (PST)", "from pi4-davidp.lan (plowpeople3.plus.com. [80.229.223.72])\n\tby smtp.gmail.com with ESMTPSA id\n\tg18sm3387491wmq.5.2022.01.05.07.55.51\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 05 Jan 2022 07:55:51 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"YY1H41Gt\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references\n\t:mime-version:content-transfer-encoding;\n\tbh=FBiN0solFESkxIRzdXB4qjX1RzJb80glsYTDuVDQSgk=;\n\tb=YY1H41Gtna+97paF6NMUMbtuutfM/cefo423yPWLP5b6aIoGgOhHEYjE6S13MZVAEf\n\totWeMTirIpIuvail/yIgKt3CkfheNyKBnVsVxyPmeFHcuQGndie78yNXzck6CY/tUkGg\n\tsZnJr94pkDUyv9rBOeK3xw48oplmOot1tPYPLMxuFj0BsbdHKleWu0Ea9C6n4Hyl8mHR\n\tqQxOWBbiY535msT+OA48eXPxG2cJflDahexAARlwMUDBTPDSzP61SfLN6ZK3TdrX3tLy\n\tzxbWnzeKHFoQ/FoMhurrixvGQ5cNz2GP+j5a3AlVqPWgC6bM1erJ8ETIse7ypO1urO6o\n\tSRzw==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references:mime-version:content-transfer-encoding;\n\tbh=FBiN0solFESkxIRzdXB4qjX1RzJb80glsYTDuVDQSgk=;\n\tb=cYZGFI17SkchA23j5ye6ZNa9AgMSWUMDo/PjVmUiBax5eSPTgKu/V2Vwx/w4QuIaJr\n\ttibMrUmqGNxXGfApVtrEfO0AtzbuyomjJSJ70mPvc1UDmid6sXrV/aTDn9PTY5uCmWRS\n\tQ1ocXOgT+mzO2WZ5wuyH3y/MY9GIvMGXWgwiFGLc0vNCmPDwTLPrO0haikWCdFusFtGl\n\t7Ofj7sVOau6wWQBySiUmD7BBJhc9hh9yYDn8IXY3fNgUdxx/iQelxnwl4bF8F9qku1Cg\n\t+elGnfZSggf4YFXo/leNT6eXh8C4aYVkc1a/lHGt1I0ud8U1KTx1rX0oZ564ZHMc+Y7l\n\tLPkg==", "X-Gm-Message-State": "AOAM53140ZNQd0OEppYrxRnvtVlA96ICeafwt5GdR692DbAlD0M/AenV\n\tF33+4RNoMVtjnOdwcSXwxRP8YDNIUFe5aDrW", "X-Google-Smtp-Source": "ABdhPJzesXfVwcDjE2g/QCmh+ki9aUfcgWiyoBTEW5TRRZEwUrNpJbFF9TsYEMF6JG4Pyyj5IxD9mw==", "X-Received": "by 2002:a5d:64e1:: with SMTP id\n\tg1mr47062872wri.403.1641398152076; \n\tWed, 05 Jan 2022 07:55:52 -0800 (PST)", "From": "David Plowman <david.plowman@raspberrypi.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 5 Jan 2022 15:55:37 +0000", "Message-Id": "<20220105155539.5550-2-david.plowman@raspberrypi.com>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20220105155539.5550-1-david.plowman@raspberrypi.com>", "References": "<20220105155539.5550-1-david.plowman@raspberrypi.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v3 1/3] include: linux: Update kernel\n\theaders to version v5.16-rc7", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Updated kernel headers to v5.16-rc7 using\nutils/update-kernel-headers.sh and re-instating libcamera\nlocal modifications.\n\nSigned-off-by: David Plowman <david.plowman@raspberrypi.com>\n---\n include/linux/README | 2 +-\n include/linux/dma-buf.h | 50 ++++-\n include/linux/drm_fourcc.h | 122 ++++++++++-\n include/linux/intel-ipu3.h | 21 +-\n include/linux/rkisp1-config.h | 16 +-\n include/linux/v4l2-controls.h | 383 ++++++++++++++++++++++++++++++++--\n include/linux/v4l2-subdev.h | 12 +-\n include/linux/videodev2.h | 59 +++++-\n 8 files changed, 625 insertions(+), 40 deletions(-)", "diff": "diff --git a/include/linux/README b/include/linux/README\nindex 17df9f7b..4e314b98 100644\n--- a/include/linux/README\n+++ b/include/linux/README\n@@ -1,4 +1,4 @@\n # SPDX-License-Identifier: CC0-1.0\n \n-Files in this directory are imported from v5.12-rc1 of the Linux kernel. Do not\n+Files in this directory are imported from v5.16-rc7 of the Linux kernel. Do not\n modify them manually.\ndiff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h\nindex 7f30393b..8e4a2ca0 100644\n--- a/include/linux/dma-buf.h\n+++ b/include/linux/dma-buf.h\n@@ -22,8 +22,56 @@\n \n #include <linux/types.h>\n \n-/* begin/end dma-buf functions used for userspace mmap. */\n+/**\n+ * struct dma_buf_sync - Synchronize with CPU access.\n+ *\n+ * When a DMA buffer is accessed from the CPU via mmap, it is not always\n+ * possible to guarantee coherency between the CPU-visible map and underlying\n+ * memory. To manage coherency, DMA_BUF_IOCTL_SYNC must be used to bracket\n+ * any CPU access to give the kernel the chance to shuffle memory around if\n+ * needed.\n+ *\n+ * Prior to accessing the map, the client must call DMA_BUF_IOCTL_SYNC\n+ * with DMA_BUF_SYNC_START and the appropriate read/write flags. Once the\n+ * access is complete, the client should call DMA_BUF_IOCTL_SYNC with\n+ * DMA_BUF_SYNC_END and the same read/write flags.\n+ *\n+ * The synchronization provided via DMA_BUF_IOCTL_SYNC only provides cache\n+ * coherency. It does not prevent other processes or devices from\n+ * accessing the memory at the same time. If synchronization with a GPU or\n+ * other device driver is required, it is the client's responsibility to\n+ * wait for buffer to be ready for reading or writing before calling this\n+ * ioctl with DMA_BUF_SYNC_START. Likewise, the client must ensure that\n+ * follow-up work is not submitted to GPU or other device driver until\n+ * after this ioctl has been called with DMA_BUF_SYNC_END?\n+ *\n+ * If the driver or API with which the client is interacting uses implicit\n+ * synchronization, waiting for prior work to complete can be done via\n+ * poll() on the DMA buffer file descriptor. If the driver or API requires\n+ * explicit synchronization, the client may have to wait on a sync_file or\n+ * other synchronization primitive outside the scope of the DMA buffer API.\n+ */\n struct dma_buf_sync {\n+\t/**\n+\t * @flags: Set of access flags\n+\t *\n+\t * DMA_BUF_SYNC_START:\n+\t * Indicates the start of a map access session.\n+\t *\n+\t * DMA_BUF_SYNC_END:\n+\t * Indicates the end of a map access session.\n+\t *\n+\t * DMA_BUF_SYNC_READ:\n+\t * Indicates that the mapped DMA buffer will be read by the\n+\t * client via the CPU map.\n+\t *\n+\t * DMA_BUF_SYNC_WRITE:\n+\t * Indicates that the mapped DMA buffer will be written by the\n+\t * client via the CPU map.\n+\t *\n+\t * DMA_BUF_SYNC_RW:\n+\t * An alias for DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE.\n+\t */\n \t__u64 flags;\n };\n \ndiff --git a/include/linux/drm_fourcc.h b/include/linux/drm_fourcc.h\nindex 28ea3a16..ea11dcb4 100644\n--- a/include/linux/drm_fourcc.h\n+++ b/include/linux/drm_fourcc.h\n@@ -174,6 +174,13 @@ extern \"C\" {\n #define DRM_FORMAT_RGBA1010102\tfourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */\n #define DRM_FORMAT_BGRA1010102\tfourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */\n \n+/* 64 bpp RGB */\n+#define DRM_FORMAT_XRGB16161616\tfourcc_code('X', 'R', '4', '8') /* [63:0] x:R:G:B 16:16:16:16 little endian */\n+#define DRM_FORMAT_XBGR16161616\tfourcc_code('X', 'B', '4', '8') /* [63:0] x:B:G:R 16:16:16:16 little endian */\n+\n+#define DRM_FORMAT_ARGB16161616\tfourcc_code('A', 'R', '4', '8') /* [63:0] A:R:G:B 16:16:16:16 little endian */\n+#define DRM_FORMAT_ABGR16161616\tfourcc_code('A', 'B', '4', '8') /* [63:0] A:B:G:R 16:16:16:16 little endian */\n+\n /*\n * Floating point 64bpp RGB\n * IEEE 754-2008 binary16 half-precision float\n@@ -437,6 +444,12 @@ extern \"C\" {\n \n #define DRM_FORMAT_RESERVED\t ((1ULL << 56) - 1)\n \n+#define fourcc_mod_get_vendor(modifier) \\\n+\t(((modifier) >> 56) & 0xff)\n+\n+#define fourcc_mod_is_vendor(modifier, vendor) \\\n+\t(fourcc_mod_get_vendor(modifier) == DRM_FORMAT_MOD_VENDOR_## vendor)\n+\n #define fourcc_mod_code(vendor, val) \\\n \t((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | ((val) & 0x00ffffffffffffffULL))\n \n@@ -974,9 +987,9 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)\n \n /*\n * The top 4 bits (out of the 56 bits alloted for specifying vendor specific\n- * modifiers) denote the category for modifiers. Currently we have only two\n- * categories of modifiers ie AFBC and MISC. We can have a maximum of sixteen\n- * different categories.\n+ * modifiers) denote the category for modifiers. Currently we have three\n+ * categories of modifiers ie AFBC, MISC and AFRC. We can have a maximum of\n+ * sixteen different categories.\n */\n #define DRM_FORMAT_MOD_ARM_CODE(__type, __val) \\\n \tfourcc_mod_code(ARM, ((__u64)(__type) << 52) | ((__val) & 0x000fffffffffffffULL))\n@@ -1091,6 +1104,109 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)\n */\n #define AFBC_FORMAT_MOD_USM\t(1ULL << 12)\n \n+/*\n+ * Arm Fixed-Rate Compression (AFRC) modifiers\n+ *\n+ * AFRC is a proprietary fixed rate image compression protocol and format,\n+ * designed to provide guaranteed bandwidth and memory footprint\n+ * reductions in graphics and media use-cases.\n+ *\n+ * AFRC buffers consist of one or more planes, with the same components\n+ * and meaning as an uncompressed buffer using the same pixel format.\n+ *\n+ * Within each plane, the pixel/luma/chroma values are grouped into\n+ * \"coding unit\" blocks which are individually compressed to a\n+ * fixed size (in bytes). All coding units within a given plane of a buffer\n+ * store the same number of values, and have the same compressed size.\n+ *\n+ * The coding unit size is configurable, allowing different rates of compression.\n+ *\n+ * The start of each AFRC buffer plane must be aligned to an alignment granule which\n+ * depends on the coding unit size.\n+ *\n+ * Coding Unit Size Plane Alignment\n+ * ---------------- ---------------\n+ * 16 bytes 1024 bytes\n+ * 24 bytes 512 bytes\n+ * 32 bytes 2048 bytes\n+ *\n+ * Coding units are grouped into paging tiles. AFRC buffer dimensions must be aligned\n+ * to a multiple of the paging tile dimensions.\n+ * The dimensions of each paging tile depend on whether the buffer is optimised for\n+ * scanline (SCAN layout) or rotated (ROT layout) access.\n+ *\n+ * Layout Paging Tile Width Paging Tile Height\n+ * ------ ----------------- ------------------\n+ * SCAN 16 coding units 4 coding units\n+ * ROT 8 coding units 8 coding units\n+ *\n+ * The dimensions of each coding unit depend on the number of components\n+ * in the compressed plane and whether the buffer is optimised for\n+ * scanline (SCAN layout) or rotated (ROT layout) access.\n+ *\n+ * Number of Components in Plane Layout Coding Unit Width Coding Unit Height\n+ * ----------------------------- --------- ----------------- ------------------\n+ * 1 SCAN 16 samples 4 samples\n+ * Example: 16x4 luma samples in a 'Y' plane\n+ * 16x4 chroma 'V' values, in the 'V' plane of a fully-planar YUV buffer\n+ * ----------------------------- --------- ----------------- ------------------\n+ * 1 ROT 8 samples 8 samples\n+ * Example: 8x8 luma samples in a 'Y' plane\n+ * 8x8 chroma 'V' values, in the 'V' plane of a fully-planar YUV buffer\n+ * ----------------------------- --------- ----------------- ------------------\n+ * 2 DONT CARE 8 samples 4 samples\n+ * Example: 8x4 chroma pairs in the 'UV' plane of a semi-planar YUV buffer\n+ * ----------------------------- --------- ----------------- ------------------\n+ * 3 DONT CARE 4 samples 4 samples\n+ * Example: 4x4 pixels in an RGB buffer without alpha\n+ * ----------------------------- --------- ----------------- ------------------\n+ * 4 DONT CARE 4 samples 4 samples\n+ * Example: 4x4 pixels in an RGB buffer with alpha\n+ */\n+\n+#define DRM_FORMAT_MOD_ARM_TYPE_AFRC 0x02\n+\n+#define DRM_FORMAT_MOD_ARM_AFRC(__afrc_mode) \\\n+\tDRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFRC, __afrc_mode)\n+\n+/*\n+ * AFRC coding unit size modifier.\n+ *\n+ * Indicates the number of bytes used to store each compressed coding unit for\n+ * one or more planes in an AFRC encoded buffer. The coding unit size for chrominance\n+ * is the same for both Cb and Cr, which may be stored in separate planes.\n+ *\n+ * AFRC_FORMAT_MOD_CU_SIZE_P0 indicates the number of bytes used to store\n+ * each compressed coding unit in the first plane of the buffer. For RGBA buffers\n+ * this is the only plane, while for semi-planar and fully-planar YUV buffers,\n+ * this corresponds to the luma plane.\n+ *\n+ * AFRC_FORMAT_MOD_CU_SIZE_P12 indicates the number of bytes used to store\n+ * each compressed coding unit in the second and third planes in the buffer.\n+ * For semi-planar and fully-planar YUV buffers, this corresponds to the chroma plane(s).\n+ *\n+ * For single-plane buffers, AFRC_FORMAT_MOD_CU_SIZE_P0 must be specified\n+ * and AFRC_FORMAT_MOD_CU_SIZE_P12 must be zero.\n+ * For semi-planar and fully-planar buffers, both AFRC_FORMAT_MOD_CU_SIZE_P0 and\n+ * AFRC_FORMAT_MOD_CU_SIZE_P12 must be specified.\n+ */\n+#define AFRC_FORMAT_MOD_CU_SIZE_MASK 0xf\n+#define AFRC_FORMAT_MOD_CU_SIZE_16 (1ULL)\n+#define AFRC_FORMAT_MOD_CU_SIZE_24 (2ULL)\n+#define AFRC_FORMAT_MOD_CU_SIZE_32 (3ULL)\n+\n+#define AFRC_FORMAT_MOD_CU_SIZE_P0(__afrc_cu_size) (__afrc_cu_size)\n+#define AFRC_FORMAT_MOD_CU_SIZE_P12(__afrc_cu_size) ((__afrc_cu_size) << 4)\n+\n+/*\n+ * AFRC scanline memory layout.\n+ *\n+ * Indicates if the buffer uses the scanline-optimised layout\n+ * for an AFRC encoded buffer, otherwise, it uses the rotation-optimised layout.\n+ * The memory layout is the same for all planes.\n+ */\n+#define AFRC_FORMAT_MOD_LAYOUT_SCAN (1ULL << 8)\n+\n /*\n * Arm 16x16 Block U-Interleaved modifier\n *\ndiff --git a/include/linux/intel-ipu3.h b/include/linux/intel-ipu3.h\nindex b18b28a0..f30dce43 100644\n--- a/include/linux/intel-ipu3.h\n+++ b/include/linux/intel-ipu3.h\n@@ -1,4 +1,4 @@\n-/* SPDX-License-Identifier: GPL-2.0 */\n+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n /* Copyright (C) 2017 - 2018 Intel Corporation */\n \n #ifndef __IPU3_UAPI_H\n@@ -9,8 +9,10 @@\n /* from /drivers/staging/media/ipu3/include/videodev2.h */\n \n /* Vendor specific - used for IPU3 camera sub-system */\n-#define V4L2_META_FMT_IPU3_PARAMS\tv4l2_fourcc('i', 'p', '3', 'p') /* IPU3 processing parameters */\n-#define V4L2_META_FMT_IPU3_STAT_3A\tv4l2_fourcc('i', 'p', '3', 's') /* IPU3 3A statistics */\n+/* IPU3 processing parameters */\n+#define V4L2_META_FMT_IPU3_PARAMS\tv4l2_fourcc('i', 'p', '3', 'p')\n+/* IPU3 3A statistics */\n+#define V4L2_META_FMT_IPU3_STAT_3A\tv4l2_fourcc('i', 'p', '3', 's')\n \n /* from include/uapi/linux/v4l2-controls.h */\n #define V4L2_CID_INTEL_IPU3_BASE\t(V4L2_CID_USER_BASE + 0x10c0)\n@@ -255,7 +257,9 @@ struct ipu3_uapi_ae_ccm {\n * struct ipu3_uapi_ae_config - AE config\n *\n * @grid_cfg:\tconfig for auto exposure statistics grid. See struct\n- *\t\t&ipu3_uapi_ae_grid_config\n+ *\t\t&ipu3_uapi_ae_grid_config, as Imgu did not support output\n+ *\t\tauto exposure statistics, so user can ignore this configuration\n+ *\t\tand use the RGB table in auto-whitebalance statistics instead.\n * @weights:\t&IPU3_UAPI_AE_WEIGHTS is based on 32x24 blocks in the grid.\n *\t\tEach grid cell has a corresponding value in weights LUT called\n *\t\tgrid value, global histogram is updated based on grid value and\n@@ -266,8 +270,8 @@ struct ipu3_uapi_ae_ccm {\n */\n struct ipu3_uapi_ae_config {\n \tstruct ipu3_uapi_ae_grid_config grid_cfg __attribute__((aligned(32)));\n-\tstruct ipu3_uapi_ae_weight_elem weights[\n-\t\t\tIPU3_UAPI_AE_WEIGHTS] __attribute__((aligned(32)));\n+\tstruct ipu3_uapi_ae_weight_elem weights[IPU3_UAPI_AE_WEIGHTS]\n+\t\t\t\t\t\t__attribute__((aligned(32)));\n \tstruct ipu3_uapi_ae_ccm ae_ccm __attribute__((aligned(32)));\n } __attribute__((packed));\n \n@@ -555,6 +559,9 @@ struct ipu3_uapi_ff_status {\n *\n * @awb_raw_buffer: auto white balance meta data &ipu3_uapi_awb_raw_buffer\n * @ae_raw_buffer: auto exposure raw data &ipu3_uapi_ae_raw_buffer_aligned\n+ * current Imgu does not output the auto exposure statistics\n+ * to ae_raw_buffer, the user such as 3A algorithm can use the\n+ * RGB table in &ipu3_uapi_awb_raw_buffer to do auto-exposure.\n * @af_raw_buffer: &ipu3_uapi_af_raw_buffer for auto focus meta data\n * @awb_fr_raw_buffer: value as specified by &ipu3_uapi_awb_fr_raw_buffer\n * @stats_4a_config: 4a statistics config as defined by &ipu3_uapi_4a_config.\n@@ -652,7 +659,7 @@ struct ipu3_uapi_bnr_static_config_wb_gains_thr_config {\n * @cg:\tGain coefficient for threshold calculation, [0, 31], default 8.\n * @ci:\tIntensity coefficient for threshold calculation. range [0, 0x1f]\n *\tdefault 6.\n- * \tformat: u3.2 (3 most significant bits represent whole number,\n+ *\tformat: u3.2 (3 most significant bits represent whole number,\n *\t2 least significant bits represent the fractional part\n *\twith each count representing 0.25)\n *\te.g. 6 in binary format is 00110, that translates to 1.5\ndiff --git a/include/linux/rkisp1-config.h b/include/linux/rkisp1-config.h\nindex 1b14c230..012293e3 100644\n--- a/include/linux/rkisp1-config.h\n+++ b/include/linux/rkisp1-config.h\n@@ -15,7 +15,7 @@\n #define RKISP1_CIF_ISP_MODULE_BLS\t\t(1U << 1)\n /* Sensor De-gamma */\n #define RKISP1_CIF_ISP_MODULE_SDG\t\t(1U << 2)\n-/* Histogram */\n+/* Histogram statistics configuration */\n #define RKISP1_CIF_ISP_MODULE_HST\t\t(1U << 3)\n /* Lens Shade Control */\n #define RKISP1_CIF_ISP_MODULE_LSC\t\t(1U << 4)\n@@ -31,13 +31,13 @@\n #define RKISP1_CIF_ISP_MODULE_GOC\t\t(1U << 9)\n /* Color Processing */\n #define RKISP1_CIF_ISP_MODULE_CPROC\t\t(1U << 10)\n-/* Auto Focus Control */\n+/* Auto Focus Control statistics configuration */\n #define RKISP1_CIF_ISP_MODULE_AFC\t\t(1U << 11)\n-/* Auto White Balancing */\n+/* Auto White Balancing statistics configuration */\n #define RKISP1_CIF_ISP_MODULE_AWB\t\t(1U << 12)\n /* Image Effect */\n #define RKISP1_CIF_ISP_MODULE_IE\t\t(1U << 13)\n-/* Auto Exposure Control */\n+/* Auto Exposure Control statistics configuration */\n #define RKISP1_CIF_ISP_MODULE_AEC\t\t(1U << 14)\n /* Wide Dynamic Range */\n #define RKISP1_CIF_ISP_MODULE_WDR\t\t(1U << 15)\n@@ -411,7 +411,7 @@ struct rkisp1_cif_isp_cproc_config {\n };\n \n /**\n- * struct rkisp1_cif_isp_awb_meas_config - Configuration used by auto white balance\n+ * struct rkisp1_cif_isp_awb_meas_config - Configuration for the AWB statistics\n *\n * @awb_mode: the awb meas mode. From enum rkisp1_cif_isp_awb_mode_type.\n * @awb_wnd: white balance measurement window (in pixels)\n@@ -550,7 +550,7 @@ struct rkisp1_cif_isp_goc_config {\n };\n \n /**\n- * struct rkisp1_cif_isp_hst_config - Configuration used by Histogram\n+ * struct rkisp1_cif_isp_hst_config - Configuration for Histogram statistics\n *\n * @mode: histogram mode (from enum rkisp1_cif_isp_histogram_mode)\n * @histogram_predivider: process every stepsize pixel, all other pixels are\n@@ -575,7 +575,7 @@ struct rkisp1_cif_isp_hst_config {\n };\n \n /**\n- * struct rkisp1_cif_isp_aec_config - Configuration used by Auto Exposure Control\n+ * struct rkisp1_cif_isp_aec_config - Configuration for Auto Exposure statistics\n *\n * @mode: Exposure measure mode (from enum rkisp1_cif_isp_exp_meas_mode)\n * @autostop: stop mode (from enum rkisp1_cif_isp_exp_ctrl_autostop)\n@@ -588,7 +588,7 @@ struct rkisp1_cif_isp_aec_config {\n };\n \n /**\n- * struct rkisp1_cif_isp_afc_config - Configuration used by Auto Focus Control\n+ * struct rkisp1_cif_isp_afc_config - Configuration for the Auto Focus statistics\n *\n * @num_afm_win: max RKISP1_CIF_ISP_AFM_MAX_WINDOWS\n * @afm_win: coordinates of the meas window\ndiff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h\nindex 59a57418..a055d257 100644\n--- a/include/linux/v4l2-controls.h\n+++ b/include/linux/v4l2-controls.h\n@@ -50,6 +50,7 @@\n #ifndef __LINUX_V4L2_CONTROLS_H\n #define __LINUX_V4L2_CONTROLS_H\n \n+#include <linux/const.h>\n #include <linux/types.h>\n \n /* Control classes */\n@@ -66,6 +67,7 @@\n #define V4L2_CTRL_CLASS_RF_TUNER\t0x00a20000\t/* RF tuner controls */\n #define V4L2_CTRL_CLASS_DETECT\t\t0x00a30000\t/* Detection controls */\n #define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000\t/* Stateless codecs controls */\n+#define V4L2_CTRL_CLASS_COLORIMETRY\t0x00a50000\t/* Colorimetry controls */\n \n /* User-class control IDs */\n \n@@ -213,6 +215,11 @@ enum v4l2_colorfx {\n /* The base for the bcm2835-isp driver controls.\n * We reserve 16 controls for this driver. */\n #define V4L2_CID_USER_BCM2835_ISP_BASE\t\t(V4L2_CID_USER_BASE + 0x10e0)\n+/*\n+ * The base for Allegro driver controls.\n+ * We reserve 16 controls for this driver.\n+ */\n+#define V4L2_CID_USER_ALLEGRO_BASE\t\t(V4L2_CID_USER_BASE + 0x1170)\n \n /* MPEG-class control IDs */\n /* The MPEG controls are applicable to all codec controls\n@@ -430,6 +437,12 @@ enum v4l2_mpeg_video_multi_slice_mode {\n #define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE\t\t(V4L2_CID_CODEC_BASE+228)\n #define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME\t\t(V4L2_CID_CODEC_BASE+229)\n #define V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID\t(V4L2_CID_CODEC_BASE+230)\n+#define V4L2_CID_MPEG_VIDEO_AU_DELIMITER\t\t(V4L2_CID_CODEC_BASE+231)\n+#define V4L2_CID_MPEG_VIDEO_LTR_COUNT\t\t\t(V4L2_CID_CODEC_BASE+232)\n+#define V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX\t\t(V4L2_CID_CODEC_BASE+233)\n+#define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES\t\t(V4L2_CID_CODEC_BASE+234)\n+#define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR\t\t(V4L2_CID_CODEC_BASE+235)\n+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD\t(V4L2_CID_CODEC_BASE+236)\n \n /* CIDs for the MPEG-2 Part 2 (H.262) codec */\n #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL\t\t\t(V4L2_CID_CODEC_BASE+270)\n@@ -799,6 +812,9 @@ enum v4l2_mpeg_video_frame_skip_mode {\n #define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 651)\n #define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 652)\n \n+#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY\t\t(V4L2_CID_CODEC_BASE + 653)\n+#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE\t(V4L2_CID_CODEC_BASE + 654)\n+\n /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */\n #define V4L2_CID_CODEC_CX2341X_BASE\t\t\t\t(V4L2_CTRL_CLASS_CODEC | 0x1000)\n #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE\t\t(V4L2_CID_CODEC_CX2341X_BASE+0)\n@@ -1109,6 +1125,7 @@ enum v4l2_jpeg_chroma_subsampling {\n #define V4L2_CID_TEST_PATTERN_BLUE\t\t(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)\n #define V4L2_CID_TEST_PATTERN_GREENB\t\t(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)\n #define V4L2_CID_UNIT_CELL_SIZE\t\t\t(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)\n+#define V4L2_CID_NOTIFY_GAINS\t\t\t(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)\n \n \n /* Image processing controls */\n@@ -1331,7 +1348,7 @@ struct v4l2_ctrl_h264_sps {\n * struct v4l2_ctrl_h264_pps - H264 picture parameter set\n *\n * Except where noted, all the members on this picture parameter set\n- * structure match the sequence parameter set syntax as specified\n+ * structure match the picture parameter set syntax as specified\n * by the H264 specification.\n *\n * In particular, V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT flag\n@@ -1595,30 +1612,30 @@ struct v4l2_ctrl_h264_decode_params {\n #define V4L2_FWHT_VERSION\t\t\t3\n \n /* Set if this is an interlaced format */\n-#define V4L2_FWHT_FL_IS_INTERLACED\t\tBIT(0)\n+#define V4L2_FWHT_FL_IS_INTERLACED\t\t_BITUL(0)\n /* Set if this is a bottom-first (NTSC) interlaced format */\n-#define V4L2_FWHT_FL_IS_BOTTOM_FIRST\t\tBIT(1)\n+#define V4L2_FWHT_FL_IS_BOTTOM_FIRST\t\t_BITUL(1)\n /* Set if each 'frame' contains just one field */\n-#define V4L2_FWHT_FL_IS_ALTERNATE\t\tBIT(2)\n+#define V4L2_FWHT_FL_IS_ALTERNATE\t\t_BITUL(2)\n /*\n * If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this\n * 'frame' is the bottom field, else it is the top field.\n */\n-#define V4L2_FWHT_FL_IS_BOTTOM_FIELD\t\tBIT(3)\n+#define V4L2_FWHT_FL_IS_BOTTOM_FIELD\t\t_BITUL(3)\n /* Set if the Y' plane is uncompressed */\n-#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED\tBIT(4)\n+#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED\t_BITUL(4)\n /* Set if the Cb plane is uncompressed */\n-#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED\t\tBIT(5)\n+#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED\t\t_BITUL(5)\n /* Set if the Cr plane is uncompressed */\n-#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED\t\tBIT(6)\n+#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED\t\t_BITUL(6)\n /* Set if the chroma plane is full height, if cleared it is half height */\n-#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT\t\tBIT(7)\n+#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT\t\t_BITUL(7)\n /* Set if the chroma plane is full width, if cleared it is half width */\n-#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH\t\tBIT(8)\n+#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH\t\t_BITUL(8)\n /* Set if the alpha plane is uncompressed */\n-#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED\tBIT(9)\n+#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED\t_BITUL(9)\n /* Set if this is an I Frame */\n-#define V4L2_FWHT_FL_I_FRAME\t\t\tBIT(10)\n+#define V4L2_FWHT_FL_I_FRAME\t\t\t_BITUL(10)\n \n /* A 4-values flag - the number of components - 1 */\n #define V4L2_FWHT_FL_COMPONENTS_NUM_MSK\t\tGENMASK(18, 16)\n@@ -1659,6 +1676,348 @@ struct v4l2_ctrl_fwht_params {\n \t__u32 quantization;\n };\n \n+/* Stateless VP8 control */\n+\n+#define V4L2_VP8_SEGMENT_FLAG_ENABLED 0x01\n+#define V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP 0x02\n+#define V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA 0x04\n+#define V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE 0x08\n+\n+/**\n+ * struct v4l2_vp8_segment - VP8 segment-based adjustments parameters\n+ *\n+ * @quant_update: update values for the segment quantizer.\n+ * @lf_update: update values for the loop filter level.\n+ * @segment_probs: branch probabilities of the segment_id decoding tree.\n+ * @padding: padding field. Should be zeroed by applications.\n+ * @flags: see V4L2_VP8_SEGMENT_FLAG_{}.\n+ *\n+ * This structure contains segment-based adjustments related parameters.\n+ * See the 'update_segmentation()' part of the frame header syntax,\n+ * and section '9.3. Segment-Based Adjustments' of the VP8 specification\n+ * for more details.\n+ */\n+struct v4l2_vp8_segment {\n+\t__s8 quant_update[4];\n+\t__s8 lf_update[4];\n+\t__u8 segment_probs[3];\n+\t__u8 padding;\n+\t__u32 flags;\n+};\n+\n+#define V4L2_VP8_LF_ADJ_ENABLE\t0x01\n+#define V4L2_VP8_LF_DELTA_UPDATE\t0x02\n+#define V4L2_VP8_LF_FILTER_TYPE_SIMPLE\t0x04\n+\n+/**\n+ * struct v4l2_vp8_loop_filter - VP8 loop filter parameters\n+ *\n+ * @ref_frm_delta: Reference frame signed delta values.\n+ * @mb_mode_delta: MB prediction mode signed delta values.\n+ * @sharpness_level: matches sharpness_level syntax element.\n+ * @level: matches loop_filter_level syntax element.\n+ * @padding: padding field. Should be zeroed by applications.\n+ * @flags: see V4L2_VP8_LF_FLAG_{}.\n+ *\n+ * This structure contains loop filter related parameters.\n+ * See the 'mb_lf_adjustments()' part of the frame header syntax,\n+ * and section '9.4. Loop Filter Type and Levels' of the VP8 specification\n+ * for more details.\n+ */\n+struct v4l2_vp8_loop_filter {\n+\t__s8 ref_frm_delta[4];\n+\t__s8 mb_mode_delta[4];\n+\t__u8 sharpness_level;\n+\t__u8 level;\n+\t__u16 padding;\n+\t__u32 flags;\n+};\n+\n+/**\n+ * struct v4l2_vp8_quantization - VP8 quantizattion indices\n+ *\n+ * @y_ac_qi: luma AC coefficient table index.\n+ * @y_dc_delta: luma DC delta vaue.\n+ * @y2_dc_delta: y2 block DC delta value.\n+ * @y2_ac_delta: y2 block AC delta value.\n+ * @uv_dc_delta: chroma DC delta value.\n+ * @uv_ac_delta: chroma AC delta value.\n+ * @padding: padding field. Should be zeroed by applications.\n+ *\n+ * This structure contains the quantization indices present\n+ * in 'quant_indices()' part of the frame header syntax.\n+ * See section '9.6. Dequantization Indices' of the VP8 specification\n+ * for more details.\n+ */\n+struct v4l2_vp8_quantization {\n+\t__u8 y_ac_qi;\n+\t__s8 y_dc_delta;\n+\t__s8 y2_dc_delta;\n+\t__s8 y2_ac_delta;\n+\t__s8 uv_dc_delta;\n+\t__s8 uv_ac_delta;\n+\t__u16 padding;\n+};\n+\n+#define V4L2_VP8_COEFF_PROB_CNT 11\n+#define V4L2_VP8_MV_PROB_CNT 19\n+\n+/**\n+ * struct v4l2_vp8_entropy - VP8 update probabilities\n+ *\n+ * @coeff_probs: coefficient probability update values.\n+ * @y_mode_probs: luma intra-prediction probabilities.\n+ * @uv_mode_probs: chroma intra-prediction probabilities.\n+ * @mv_probs: mv decoding probability.\n+ * @padding: padding field. Should be zeroed by applications.\n+ *\n+ * This structure contains the update probabilities present in\n+ * 'token_prob_update()' and 'mv_prob_update()' part of the frame header.\n+ * See section '17.2. Probability Updates' of the VP8 specification\n+ * for more details.\n+ */\n+struct v4l2_vp8_entropy {\n+\t__u8 coeff_probs[4][8][3][V4L2_VP8_COEFF_PROB_CNT];\n+\t__u8 y_mode_probs[4];\n+\t__u8 uv_mode_probs[3];\n+\t__u8 mv_probs[2][V4L2_VP8_MV_PROB_CNT];\n+\t__u8 padding[3];\n+};\n+\n+/**\n+ * struct v4l2_vp8_entropy_coder_state - VP8 boolean coder state\n+ *\n+ * @range: coder state value for \"Range\"\n+ * @value: coder state value for \"Value\"\n+ * @bit_count: number of bits left in range \"Value\".\n+ * @padding: padding field. Should be zeroed by applications.\n+ *\n+ * This structure contains the state for the boolean coder, as\n+ * explained in section '7. Boolean Entropy Decoder' of the VP8 specification.\n+ */\n+struct v4l2_vp8_entropy_coder_state {\n+\t__u8 range;\n+\t__u8 value;\n+\t__u8 bit_count;\n+\t__u8 padding;\n+};\n+\n+#define V4L2_VP8_FRAME_FLAG_KEY_FRAME\t\t0x01\n+#define V4L2_VP8_FRAME_FLAG_EXPERIMENTAL\t\t0x02\n+#define V4L2_VP8_FRAME_FLAG_SHOW_FRAME\t\t0x04\n+#define V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF\t0x08\n+#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN\t0x10\n+#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT\t0x20\n+\n+#define V4L2_VP8_FRAME_IS_KEY_FRAME(hdr) \\\n+\t(!!((hdr)->flags & V4L2_VP8_FRAME_FLAG_KEY_FRAME))\n+\n+#define V4L2_CID_STATELESS_VP8_FRAME (V4L2_CID_CODEC_STATELESS_BASE + 200)\n+/**\n+ * struct v4l2_ctrl_vp8_frame - VP8 frame parameters\n+ *\n+ * @segment: segmentation parameters. See &v4l2_vp8_segment for more details\n+ * @lf: loop filter parameters. See &v4l2_vp8_loop_filter for more details\n+ * @quant: quantization parameters. See &v4l2_vp8_quantization for more details\n+ * @entropy: update probabilities. See &v4l2_vp8_entropy for more details\n+ * @coder_state: boolean coder state. See &v4l2_vp8_entropy_coder_state for more details\n+ * @width: frame width.\n+ * @height: frame height.\n+ * @horizontal_scale: horizontal scaling factor.\n+ * @vertical_scale: vertical scaling factor.\n+ * @version: bitstream version.\n+ * @prob_skip_false: frame header syntax element.\n+ * @prob_intra: frame header syntax element.\n+ * @prob_last: frame header syntax element.\n+ * @prob_gf: frame header syntax element.\n+ * @num_dct_parts: number of DCT coefficients partitions.\n+ * @first_part_size: size of the first partition, i.e. the control partition.\n+ * @first_part_header_bits: size in bits of the first partition header portion.\n+ * @dct_part_sizes: DCT coefficients sizes.\n+ * @last_frame_ts: \"last\" reference buffer timestamp.\n+ * The timestamp refers to the timestamp field in struct v4l2_buffer.\n+ * Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.\n+ * @golden_frame_ts: \"golden\" reference buffer timestamp.\n+ * @alt_frame_ts: \"alt\" reference buffer timestamp.\n+ * @flags: see V4L2_VP8_FRAME_FLAG_{}.\n+ */\n+struct v4l2_ctrl_vp8_frame {\n+\tstruct v4l2_vp8_segment segment;\n+\tstruct v4l2_vp8_loop_filter lf;\n+\tstruct v4l2_vp8_quantization quant;\n+\tstruct v4l2_vp8_entropy entropy;\n+\tstruct v4l2_vp8_entropy_coder_state coder_state;\n+\n+\t__u16 width;\n+\t__u16 height;\n+\n+\t__u8 horizontal_scale;\n+\t__u8 vertical_scale;\n+\n+\t__u8 version;\n+\t__u8 prob_skip_false;\n+\t__u8 prob_intra;\n+\t__u8 prob_last;\n+\t__u8 prob_gf;\n+\t__u8 num_dct_parts;\n+\n+\t__u32 first_part_size;\n+\t__u32 first_part_header_bits;\n+\t__u32 dct_part_sizes[8];\n+\n+\t__u64 last_frame_ts;\n+\t__u64 golden_frame_ts;\n+\t__u64 alt_frame_ts;\n+\n+\t__u64 flags;\n+};\n+\n+/* Stateless MPEG-2 controls */\n+\n+#define V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE\t0x01\n+\n+#define V4L2_CID_STATELESS_MPEG2_SEQUENCE (V4L2_CID_CODEC_STATELESS_BASE+220)\n+/**\n+ * struct v4l2_ctrl_mpeg2_sequence - MPEG-2 sequence header\n+ *\n+ * All the members on this structure match the sequence header and sequence\n+ * extension syntaxes as specified by the MPEG-2 specification.\n+ *\n+ * Fields horizontal_size, vertical_size and vbv_buffer_size are a\n+ * combination of respective _value and extension syntax elements,\n+ * as described in section 6.3.3 \"Sequence header\".\n+ *\n+ * @horizontal_size: combination of elements horizontal_size_value and\n+ * horizontal_size_extension.\n+ * @vertical_size: combination of elements vertical_size_value and\n+ * vertical_size_extension.\n+ * @vbv_buffer_size: combination of elements vbv_buffer_size_value and\n+ * vbv_buffer_size_extension.\n+ * @profile_and_level_indication: see MPEG-2 specification.\n+ * @chroma_format: see MPEG-2 specification.\n+ * @flags: see V4L2_MPEG2_SEQ_FLAG_{}.\n+ */\n+struct v4l2_ctrl_mpeg2_sequence {\n+\t__u16\thorizontal_size;\n+\t__u16\tvertical_size;\n+\t__u32\tvbv_buffer_size;\n+\t__u16\tprofile_and_level_indication;\n+\t__u8\tchroma_format;\n+\t__u8\tflags;\n+};\n+\n+#define V4L2_MPEG2_PIC_CODING_TYPE_I\t\t\t1\n+#define V4L2_MPEG2_PIC_CODING_TYPE_P\t\t\t2\n+#define V4L2_MPEG2_PIC_CODING_TYPE_B\t\t\t3\n+#define V4L2_MPEG2_PIC_CODING_TYPE_D\t\t\t4\n+\n+#define V4L2_MPEG2_PIC_TOP_FIELD\t\t\t0x1\n+#define V4L2_MPEG2_PIC_BOTTOM_FIELD\t\t\t0x2\n+#define V4L2_MPEG2_PIC_FRAME\t\t\t\t0x3\n+\n+#define V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST\t\t0x0001\n+#define V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT\t\t0x0002\n+#define V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV\t\t0x0004\n+#define V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE\t\t0x0008\n+#define V4L2_MPEG2_PIC_FLAG_INTRA_VLC\t\t\t0x0010\n+#define V4L2_MPEG2_PIC_FLAG_ALT_SCAN\t\t\t0x0020\n+#define V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST\t\t0x0040\n+#define V4L2_MPEG2_PIC_FLAG_PROGRESSIVE\t\t\t0x0080\n+\n+#define V4L2_CID_STATELESS_MPEG2_PICTURE (V4L2_CID_CODEC_STATELESS_BASE+221)\n+/**\n+ * struct v4l2_ctrl_mpeg2_picture - MPEG-2 picture header\n+ *\n+ * All the members on this structure match the picture header and picture\n+ * coding extension syntaxes as specified by the MPEG-2 specification.\n+ *\n+ * @backward_ref_ts: timestamp of the V4L2 capture buffer to use as\n+ * reference for backward prediction.\n+ * @forward_ref_ts: timestamp of the V4L2 capture buffer to use as\n+ * reference for forward prediction. These timestamp refers to the\n+ * timestamp field in struct v4l2_buffer. Use v4l2_timeval_to_ns()\n+ * to convert the struct timeval to a __u64.\n+ * @flags: see V4L2_MPEG2_PIC_FLAG_{}.\n+ * @f_code: see MPEG-2 specification.\n+ * @picture_coding_type: see MPEG-2 specification.\n+ * @picture_structure: see V4L2_MPEG2_PIC_{}_FIELD.\n+ * @intra_dc_precision: see MPEG-2 specification.\n+ * @reserved: padding field. Should be zeroed by applications.\n+ */\n+struct v4l2_ctrl_mpeg2_picture {\n+\t__u64\tbackward_ref_ts;\n+\t__u64\tforward_ref_ts;\n+\t__u32\tflags;\n+\t__u8\tf_code[2][2];\n+\t__u8\tpicture_coding_type;\n+\t__u8\tpicture_structure;\n+\t__u8\tintra_dc_precision;\n+\t__u8\treserved[5];\n+};\n+\n+#define V4L2_CID_STATELESS_MPEG2_QUANTISATION (V4L2_CID_CODEC_STATELESS_BASE+222)\n+/**\n+ * struct v4l2_ctrl_mpeg2_quantisation - MPEG-2 quantisation\n+ *\n+ * Quantisation matrices as specified by section 6.3.7\n+ * \"Quant matrix extension\".\n+ *\n+ * @intra_quantiser_matrix: The quantisation matrix coefficients\n+ * for intra-coded frames, in zigzag scanning order. It is relevant\n+ * for both luma and chroma components, although it can be superseded\n+ * by the chroma-specific matrix for non-4:2:0 YUV formats.\n+ * @non_intra_quantiser_matrix: The quantisation matrix coefficients\n+ * for non-intra-coded frames, in zigzag scanning order. It is relevant\n+ * for both luma and chroma components, although it can be superseded\n+ * by the chroma-specific matrix for non-4:2:0 YUV formats.\n+ * @chroma_intra_quantiser_matrix: The quantisation matrix coefficients\n+ * for the chominance component of intra-coded frames, in zigzag scanning\n+ * order. Only relevant for 4:2:2 and 4:4:4 YUV formats.\n+ * @chroma_non_intra_quantiser_matrix: The quantisation matrix coefficients\n+ * for the chrominance component of non-intra-coded frames, in zigzag scanning\n+ * order. Only relevant for 4:2:2 and 4:4:4 YUV formats.\n+ */\n+struct v4l2_ctrl_mpeg2_quantisation {\n+\t__u8\tintra_quantiser_matrix[64];\n+\t__u8\tnon_intra_quantiser_matrix[64];\n+\t__u8\tchroma_intra_quantiser_matrix[64];\n+\t__u8\tchroma_non_intra_quantiser_matrix[64];\n+};\n+\n+#define V4L2_CID_COLORIMETRY_CLASS_BASE\t(V4L2_CTRL_CLASS_COLORIMETRY | 0x900)\n+#define V4L2_CID_COLORIMETRY_CLASS\t(V4L2_CTRL_CLASS_COLORIMETRY | 1)\n+\n+#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO\t(V4L2_CID_COLORIMETRY_CLASS_BASE + 0)\n+\n+struct v4l2_ctrl_hdr10_cll_info {\n+\t__u16 max_content_light_level;\n+\t__u16 max_pic_average_light_level;\n+};\n+\n+#define V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY\t(V4L2_CID_COLORIMETRY_CLASS_BASE + 1)\n+\n+#define V4L2_HDR10_MASTERING_PRIMARIES_X_LOW\t5\n+#define V4L2_HDR10_MASTERING_PRIMARIES_X_HIGH\t37000\n+#define V4L2_HDR10_MASTERING_PRIMARIES_Y_LOW\t5\n+#define V4L2_HDR10_MASTERING_PRIMARIES_Y_HIGH\t42000\n+#define V4L2_HDR10_MASTERING_WHITE_POINT_X_LOW\t5\n+#define V4L2_HDR10_MASTERING_WHITE_POINT_X_HIGH\t37000\n+#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_LOW\t5\n+#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_HIGH\t42000\n+#define V4L2_HDR10_MASTERING_MAX_LUMA_LOW\t50000\n+#define V4L2_HDR10_MASTERING_MAX_LUMA_HIGH\t100000000\n+#define V4L2_HDR10_MASTERING_MIN_LUMA_LOW\t1\n+#define V4L2_HDR10_MASTERING_MIN_LUMA_HIGH\t50000\n+\n+struct v4l2_ctrl_hdr10_mastering_display {\n+\t__u16 display_primaries_x[3];\n+\t__u16 display_primaries_y[3];\n+\t__u16 white_point_x;\n+\t__u16 white_point_y;\n+\t__u32 max_display_mastering_luminance;\n+\t__u32 min_display_mastering_luminance;\n+};\n+\n /* MPEG-compression definitions kept for backwards compatibility */\n #define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC\n #define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS\ndiff --git a/include/linux/v4l2-subdev.h b/include/linux/v4l2-subdev.h\nindex a38454d9..658106f5 100644\n--- a/include/linux/v4l2-subdev.h\n+++ b/include/linux/v4l2-subdev.h\n@@ -44,6 +44,7 @@ enum v4l2_subdev_format_whence {\n * @which: format type (from enum v4l2_subdev_format_whence)\n * @pad: pad number, as reported by the media API\n * @format: media bus format (format code and frame size)\n+ * @reserved: drivers and applications must zero this array\n */\n struct v4l2_subdev_format {\n \t__u32 which;\n@@ -57,6 +58,7 @@ struct v4l2_subdev_format {\n * @which: format type (from enum v4l2_subdev_format_whence)\n * @pad: pad number, as reported by the media API\n * @rect: pad crop rectangle boundaries\n+ * @reserved: drivers and applications must zero this array\n */\n struct v4l2_subdev_crop {\n \t__u32 which;\n@@ -78,6 +80,7 @@ struct v4l2_subdev_crop {\n * @code: format code (MEDIA_BUS_FMT_ definitions)\n * @which: format type (from enum v4l2_subdev_format_whence)\n * @flags: flags set by the driver, (V4L2_SUBDEV_MBUS_CODE_*)\n+ * @reserved: drivers and applications must zero this array\n */\n struct v4l2_subdev_mbus_code_enum {\n \t__u32 pad;\n@@ -90,10 +93,15 @@ struct v4l2_subdev_mbus_code_enum {\n \n /**\n * struct v4l2_subdev_frame_size_enum - Media bus format enumeration\n- * @pad: pad number, as reported by the media API\n * @index: format index during enumeration\n+ * @pad: pad number, as reported by the media API\n * @code: format code (MEDIA_BUS_FMT_ definitions)\n+ * @min_width: minimum frame width, in pixels\n+ * @max_width: maximum frame width, in pixels\n+ * @min_height: minimum frame height, in pixels\n+ * @max_height: maximum frame height, in pixels\n * @which: format type (from enum v4l2_subdev_format_whence)\n+ * @reserved: drivers and applications must zero this array\n */\n struct v4l2_subdev_frame_size_enum {\n \t__u32 index;\n@@ -111,6 +119,7 @@ struct v4l2_subdev_frame_size_enum {\n * struct v4l2_subdev_frame_interval - Pad-level frame rate\n * @pad: pad number, as reported by the media API\n * @interval: frame interval in seconds\n+ * @reserved: drivers and applications must zero this array\n */\n struct v4l2_subdev_frame_interval {\n \t__u32 pad;\n@@ -127,6 +136,7 @@ struct v4l2_subdev_frame_interval {\n * @height: frame height in pixels\n * @interval: frame interval in seconds\n * @which: format type (from enum v4l2_subdev_format_whence)\n+ * @reserved: drivers and applications must zero this array\n */\n struct v4l2_subdev_frame_interval_enum {\n \t__u32 index;\ndiff --git a/include/linux/videodev2.h b/include/linux/videodev2.h\nindex f5407540..dcc0b01d 100644\n--- a/include/linux/videodev2.h\n+++ b/include/linux/videodev2.h\n@@ -580,6 +580,7 @@ struct v4l2_pix_format {\n #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */\n #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */\n #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */\n+#define V4L2_PIX_FMT_YUV24 v4l2_fourcc('Y', 'U', 'V', '3') /* 24 YUV-8-8-8 */\n #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */\n #define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V') /* 32 AYUV-8-8-8-8 */\n #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */\n@@ -594,15 +595,12 @@ struct v4l2_pix_format {\n #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */\n #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */\n #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */\n-#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */\n \n /* two non contiguous planes - one Y, one Cr + Cb interleaved */\n #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */\n #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */\n #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */\n #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */\n-#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */\n-#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 macroblocks */\n \n /* three planes - Y Cb, Cr */\n #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */\n@@ -620,6 +618,15 @@ struct v4l2_pix_format {\n #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */\n #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */\n \n+/* Tiled YUV formats */\n+#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */\n+#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */\n+#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */\n+\n+/* Tiled YUV formats, non contiguous planes */\n+#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */\n+#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */\n+\n /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */\n #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */\n #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */\n@@ -688,6 +695,7 @@ struct v4l2_pix_format {\n #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */\n #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */\n #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */\n+#define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F') /* VP8 parsed frame */\n #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */\n #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */\n #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */\n@@ -725,8 +733,8 @@ struct v4l2_pix_format {\n #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */\n #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */\n #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */\n+#define V4L2_PIX_FMT_MM21 v4l2_fourcc('M', 'M', '2', '1') /* Mediatek 8-bit block mode, two non-contiguous planes */\n #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */\n-#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */\n #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */\n #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */\n \n@@ -930,9 +938,12 @@ struct v4l2_requestbuffers {\n \t__u32\t\t\ttype;\t\t/* enum v4l2_buf_type */\n \t__u32\t\t\tmemory;\t\t/* enum v4l2_memory */\n \t__u32\t\t\tcapabilities;\n-\t__u32\t\t\treserved[1];\n+\t__u8\t\t\tflags;\n+\t__u8\t\t\treserved[3];\n };\n \n+#define V4L2_MEMORY_FLAG_NON_COHERENT\t\t\t(1 << 0)\n+\n /* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */\n #define V4L2_BUF_CAP_SUPPORTS_MMAP\t\t\t(1 << 0)\n #define V4L2_BUF_CAP_SUPPORTS_USERPTR\t\t\t(1 << 1)\n@@ -954,8 +965,10 @@ struct v4l2_requestbuffers {\n *\t\t\tpointing to this plane\n * @fd:\t\t\twhen memory is V4L2_MEMORY_DMABUF, a userspace file\n *\t\t\tdescriptor associated with this plane\n+ * @m:\t\t\tunion of @mem_offset, @userptr and @fd\n * @data_offset:\toffset in the plane to the start of data; usually 0,\n *\t\t\tunless there is a header in front of the data\n+ * @reserved:\t\tdrivers and applications must zero this array\n *\n * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer\n * with two planes can have one plane for Y, and another for interleaved CbCr\n@@ -997,10 +1010,14 @@ struct v4l2_plane {\n *\t\ta userspace file descriptor associated with this buffer\n * @planes:\tfor multiplanar buffers; userspace pointer to the array of plane\n *\t\tinfo structs for this buffer\n+ * @m:\t\tunion of @offset, @userptr, @planes and @fd\n * @length:\tsize in bytes of the buffer (NOT its payload) for single-plane\n *\t\tbuffers (when type != *_MPLANE); number of elements in the\n *\t\tplanes array for multi-plane buffers\n+ * @reserved2:\tdrivers and applications must zero this field\n * @request_fd: fd of the request that this buffer should use\n+ * @reserved:\tfor backwards compatibility with applications that do not know\n+ *\t\tabout @request_fd\n *\n * Contains data exchanged by application and driver using one of the Streaming\n * I/O methods.\n@@ -1033,7 +1050,7 @@ struct v4l2_buffer {\n \n /**\n * v4l2_timeval_to_ns - Convert timeval to nanoseconds\n- * @ts:\t\tpointer to the timeval variable to be converted\n+ * @tv:\t\tpointer to the timeval variable to be converted\n *\n * Returns the scalar nanosecond representation of the timeval\n * parameter.\n@@ -1093,6 +1110,7 @@ static __inline__ __u64 v4l2_timeval_to_ns(const struct timeval *tv)\n * @flags:\tflags for newly created file, currently only O_CLOEXEC is\n *\t\tsupported, refer to manual of open syscall for more details\n * @fd:\t\tfile descriptor associated with DMABUF (set by driver)\n+ * @reserved:\tdrivers and applications must zero this array\n *\n * Contains data used for exporting a video buffer as DMABUF file descriptor.\n * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF\n@@ -1710,6 +1728,10 @@ struct v4l2_ext_control {\n \t\tstruct v4l2_ctrl_h264_slice_params *p_h264_slice_params;\n \t\tstruct v4l2_ctrl_h264_decode_params *p_h264_decode_params;\n \t\tstruct v4l2_ctrl_fwht_params *p_fwht_params;\n+\t\tstruct v4l2_ctrl_vp8_frame *p_vp8_frame;\n+\t\tstruct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence;\n+\t\tstruct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture;\n+\t\tstruct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation;\n \t\tvoid *ptr;\n \t};\n } __attribute__ ((packed));\n@@ -1753,6 +1775,9 @@ enum v4l2_ctrl_type {\n \tV4L2_CTRL_TYPE_U32\t = 0x0102,\n \tV4L2_CTRL_TYPE_AREA = 0x0106,\n \n+\tV4L2_CTRL_TYPE_HDR10_CLL_INFO\t\t= 0x0110,\n+\tV4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY\t= 0x0111,\n+\n \tV4L2_CTRL_TYPE_H264_SPS = 0x0200,\n \tV4L2_CTRL_TYPE_H264_PPS\t\t = 0x0201,\n \tV4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202,\n@@ -1761,6 +1786,12 @@ enum v4l2_ctrl_type {\n \tV4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205,\n \n \tV4L2_CTRL_TYPE_FWHT_PARAMS\t = 0x0220,\n+\n+\tV4L2_CTRL_TYPE_VP8_FRAME = 0x0240,\n+\n+\tV4L2_CTRL_TYPE_MPEG2_QUANTISATION = 0x0250,\n+\tV4L2_CTRL_TYPE_MPEG2_SEQUENCE = 0x0251,\n+\tV4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,\n };\n \n /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */\n@@ -2198,6 +2229,7 @@ struct v4l2_mpeg_vbi_fmt_ivtv {\n *\t\t\tthis plane will be used\n * @bytesperline:\tdistance in bytes between the leftmost pixels in two\n *\t\t\tadjacent lines\n+ * @reserved:\t\tdrivers and applications must zero this array\n */\n struct v4l2_plane_pix_format {\n \t__u32\t\tsizeimage;\n@@ -2216,8 +2248,10 @@ struct v4l2_plane_pix_format {\n * @num_planes:\t\tnumber of planes for this format\n * @flags:\t\tformat flags (V4L2_PIX_FMT_FLAG_*)\n * @ycbcr_enc:\t\tenum v4l2_ycbcr_encoding, Y'CbCr encoding\n+ * @hsv_enc:\t\tenum v4l2_hsv_encoding, HSV encoding\n * @quantization:\tenum v4l2_quantization, colorspace quantization\n * @xfer_func:\t\tenum v4l2_xfer_func, colorspace transfer function\n+ * @reserved:\t\tdrivers and applications must zero this array\n */\n struct v4l2_pix_format_mplane {\n \t__u32\t\t\t\twidth;\n@@ -2242,6 +2276,7 @@ struct v4l2_pix_format_mplane {\n * struct v4l2_sdr_format - SDR format definition\n * @pixelformat:\tlittle endian four character code (fourcc)\n * @buffersize:\t\tmaximum size in bytes required for data\n+ * @reserved:\t\tdrivers and applications must zero this array\n */\n struct v4l2_sdr_format {\n \t__u32\t\t\t\tpixelformat;\n@@ -2268,6 +2303,8 @@ struct v4l2_meta_format {\n * @vbi:\traw VBI capture or output parameters\n * @sliced:\tsliced VBI capture or output parameters\n * @raw_data:\tplaceholder for future extensions and custom formats\n+ * @fmt:\tunion of @pix, @pix_mp, @win, @vbi, @sliced, @sdr, @meta\n+ *\t\tand @raw_data\n */\n struct v4l2_format {\n \t__u32\t type;\n@@ -2436,6 +2473,9 @@ struct v4l2_dbg_chip_info {\n * @memory:\tenum v4l2_memory; buffer memory type\n * @format:\tframe format, for which buffers are requested\n * @capabilities: capabilities of this buffer type.\n+ * @flags:\tadditional buffer management attributes (ignored unless the\n+ *\t\tqueue has V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS capability\n+ *\t\tand configured for MMAP streaming I/O).\n * @reserved:\tfuture extensions\n */\n struct v4l2_create_buffers {\n@@ -2444,7 +2484,8 @@ struct v4l2_create_buffers {\n \t__u32\t\t\tmemory;\n \tstruct v4l2_format\tformat;\n \t__u32\t\t\tcapabilities;\n-\t__u32\t\t\treserved[7];\n+\t__u32\t\t\tflags;\n+\t__u32\t\t\treserved[6];\n };\n \n /*\n@@ -2552,4 +2593,8 @@ struct v4l2_create_buffers {\n \n #define BASE_VIDIOC_PRIVATE\t192\t\t/* 192-255 are private */\n \n+/* Deprecated definitions kept for backwards compatibility */\n+#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16\n+#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32\n+\n #endif /* __LINUX_VIDEODEV2_H */\n", "prefixes": [ "libcamera-devel", "v3", "1/3" ] }