Show a patch.

GET /api/1.1/patches/26118/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 26118,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/26118/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/26118/",
    "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": "<20260210-pi4-upstream-v1-2-279841c15fba@ideasonboard.com>",
    "date": "2026-02-10T08:25:47",
    "name": "[2/3] include: uapi: Drop controls for VC4 ISP params",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "4c3255ed8112779a0975125b88e6f5a48375699c",
    "submitter": {
        "id": 223,
        "url": "https://patchwork.libcamera.org/api/1.1/people/223/?format=api",
        "name": "Jai Luthra",
        "email": "jai.luthra@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/26118/mbox/",
    "series": [
        {
            "id": 5780,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5780/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5780",
            "date": "2026-02-10T08:25:45",
            "name": "Raspberry Pi: Update VC4 pipeline for upstream",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5780/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/26118/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/26118/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 C02B2BD78E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 10 Feb 2026 08:26:27 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1EC4A6218D;\n\tTue, 10 Feb 2026 09:26:27 +0100 (CET)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AC4D262189\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 10 Feb 2026 09:26:25 +0100 (CET)",
            "from mail.ideasonboard.com (unknown\n\t[IPv6:2401:4900:1c30:2edd:807a:f3c0:8d1b:28a])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 08CC4E47;\n\tTue, 10 Feb 2026 09:25:38 +0100 (CET)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"HmHMju4u\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1770711939;\n\tbh=ysN0DRl7vWo0cl4TEV65LG5MCLsPrpcEsV5nYZ/PW4A=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:From;\n\tb=HmHMju4uOvzA0nXGBXz+OXBroWt/nF3CkRLUF5lZL/yRMTkVWGRHWmnlU13Ift+Sg\n\tTW6BGPxQCi3ZPw3ClznOqfwRF/btDBOScYF7nT6bd+wm1N2KbnceXflwgyEo0Ws1zu\n\tKBSKYDrCm1K42TQQrPMiYjqNlny+uXKgzApHdXYM=",
        "From": "Jai Luthra <jai.luthra@ideasonboard.com>",
        "Date": "Tue, 10 Feb 2026 13:55:47 +0530",
        "Subject": "[PATCH 2/3] include: uapi: Drop controls for VC4 ISP params",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "7bit",
        "Message-Id": "<20260210-pi4-upstream-v1-2-279841c15fba@ideasonboard.com>",
        "References": "<20260210-pi4-upstream-v1-0-279841c15fba@ideasonboard.com>",
        "In-Reply-To": "<20260210-pi4-upstream-v1-0-279841c15fba@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Naushir Patuck <naush@raspberrypi.com>, \n\tDavid Plowman <david.plowman@raspberrypi.com>, \n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>, \n\tKieran Bingham <kieran.bingham@ideasonboard.com>, \n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>, \n\tDaniel Scally <dan.scally@ideasonboard.com>, \n\tJai Luthra <jai.luthra@ideasonboard.com>",
        "X-Mailer": "b4 0.14.2",
        "X-Developer-Signature": "v=1; a=openpgp-sha256; l=16286;\n\ti=jai.luthra@ideasonboard.com; h=from:subject:message-id;\n\tbh=ysN0DRl7vWo0cl4TEV65LG5MCLsPrpcEsV5nYZ/PW4A=;\n\tb=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpiuueU/whMOUuxZgi3hq4XMKsw19hQA2PPidlr\n\tY4qHF81szeJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaYrrngAKCRBD3pH5JJpx\n\tRU+bEACL0dE3YltRH7fUjkQjGYsuxcJhB09LR5hbHp+u0ey6u7saEvM/LXwEfeajvQ5ect2lLO6\n\tLEWsKZ42jxlHr1gYKpCLAprVZWPU9RzrXU4L9ofK0Q3Tn6YuAdoeSenSMN37JS+RrUSfKm2pc28\n\tTtrg8fI3lBmeoIAPb+EjIkPuieC+ZLr4q8v2oq9CdrMCVt05zYITnUW8fu8iwYIKYaUtGgmJGDc\n\t3xAwZeFXg7kOaLsxPulLkRdc/mj22fGA3cjEq2scvb9gBDMx9VBarPbJZkZTT909V9tbMIUQa0E\n\tVPrvBsW9gEm8BGzYJOVBknwUq9ln4kzGcaW908NiUqau8/RK9W+DtgENeDHOX6kAj5jWtHW4tnD\n\tGNYS6PAqhpePS6LcHj9Gj/KpHJ71F+NqHzmTK8d5HdGScgO11pGfFfTK/dxiUmNS3z1VTExEH4b\n\ttf0WY5ltS7SmvfNRblRRQnuUSvtnCK7zLpiEfyi5vnCRGo2rpVkeZeiBNqO87jU4tS698tUOWUb\n\tGxDaw6J+VtOlaN4FAeQmmbP16jK90QdpCkDHu46waiRK6px8lrK78pnPzOd8tVBwUJNPUVm6w+a\n\tsPcbL0K7eYyoSHTXTpLblqVAkXrfD3HToRukZ7vSHgkJtIO+aIbz8nzP00t9g0mJmPv9Oe24zss\n\t0bcaULuhK9hVMpA==",
        "X-Developer-Key": "i=jai.luthra@ideasonboard.com; a=openpgp;\n\tfpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145",
        "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": "Update the BCM2835 ISP kernel header to replace custom V4L2 controls\nwith an extensible parameter buffer interface, aligning with the\napproach used by other upstream ISP drivers (rkisp1, mali-c55).\n\nAdd new bcm2835_isp_awb_gains and bcm2835_isp_digital_gain structures\nfor AWB and digital gain, which were previously configured through\nstandard V4L2 controls (V4L2_CID_RED_BALANCE, V4L2_CID_BLUE_BALANCE,\nV4L2_CID_DIGITAL_GAIN) and now need dedicated parameter blocks.\n\nRegister V4L2_META_FMT_BCM2835_ISP_PARAMS as the fourcc for the new\nmetadata format in videodev2.h, and drop the control ID base from the\nv4l2-controls.h.\n\nSigned-off-by: Jai Luthra <jai.luthra@ideasonboard.com>\n---\n include/linux/bcm2835-isp.h   | 276 +++++++++++++++++++++++++++++++++++-------\n include/linux/v4l2-controls.h |   3 -\n include/linux/videodev2.h     |   3 +-\n 3 files changed, 232 insertions(+), 50 deletions(-)",
    "diff": "diff --git a/include/linux/bcm2835-isp.h b/include/linux/bcm2835-isp.h\nindex 5f0f78e3e93f994487a1123263d2b26e7ce5b947..0f3c1b4dbb06313ce661c492cbd023e93f005d54 100644\n--- a/include/linux/bcm2835-isp.h\n+++ b/include/linux/bcm2835-isp.h\n@@ -13,26 +13,8 @@\n #ifndef __BCM2835_ISP_H_\n #define __BCM2835_ISP_H_\n \n-#include <linux/v4l2-controls.h>\n-\n-#define V4L2_CID_USER_BCM2835_ISP_CC_MATRIX\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0001)\n-#define V4L2_CID_USER_BCM2835_ISP_LENS_SHADING\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0002)\n-#define V4L2_CID_USER_BCM2835_ISP_BLACK_LEVEL\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0003)\n-#define V4L2_CID_USER_BCM2835_ISP_GEQ\t\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0004)\n-#define V4L2_CID_USER_BCM2835_ISP_GAMMA\t\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0005)\n-#define V4L2_CID_USER_BCM2835_ISP_DENOISE\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0006)\n-#define V4L2_CID_USER_BCM2835_ISP_SHARPEN\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0007)\n-#define V4L2_CID_USER_BCM2835_ISP_DPC\t\t\\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0008)\n-#define V4L2_CID_USER_BCM2835_ISP_CDN \\\n-\t\t\t\t(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0009)\n+#include <linux/media/v4l2-isp.h>\n+\n /*\n  * All structs below are directly mapped onto the equivalent structs in\n  * drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h\n@@ -62,8 +44,7 @@ struct bcm2835_isp_ccm {\n };\n \n /**\n- * struct bcm2835_isp_custom_ccm - Custom CCM applied with the\n- *\t\t\t\t   V4L2_CID_USER_BCM2835_ISP_CC_MATRIX ctrl.\n+ * struct bcm2835_isp_custom_ccm - Custom CCM configuration.\n  *\n  * @enabled:\tEnable custom CCM.\n  * @ccm:\tCustom CCM coefficients and offsets.\n@@ -75,8 +56,7 @@ struct bcm2835_isp_custom_ccm {\n \n /**\n  * enum bcm2835_isp_gain_format - format of the gains in the lens shading\n- *\t\t\t\t  tables used with the\n- *\t\t\t\t  V4L2_CID_USER_BCM2835_ISP_LENS_SHADING ctrl.\n+ *\t\t\t\t  tables.\n  *\n  * @GAIN_FORMAT_U0P8_1:\t\tGains are u0.8 format, starting at 1.0\n  * @GAIN_FORMAT_U1P7_0:\t\tGains are u1.7 format, starting at 0.0\n@@ -99,9 +79,7 @@ enum bcm2835_isp_gain_format {\n };\n \n /**\n- * struct bcm2835_isp_lens_shading - Lens shading tables supplied with the\n- *\t\t\t\t     V4L2_CID_USER_BCM2835_ISP_LENS_SHADING\n- *\t\t\t\t     ctrl.\n+ * struct bcm2835_isp_lens_shading - Lens shading tables.\n  *\n  * @enabled:\t\tEnable lens shading.\n  * @grid_cell_size:\tSize of grid cells in samples (16, 32, 64, 128 or 256).\n@@ -128,13 +106,13 @@ struct bcm2835_isp_lens_shading {\n };\n \n /**\n- * struct bcm2835_isp_black_level - Sensor black level set with the\n- *\t\t\t\t    V4L2_CID_USER_BCM2835_ISP_BLACK_LEVEL ctrl.\n+ * struct bcm2835_isp_black_level - Sensor black level configuration.\n  *\n  * @enabled:\t\tEnable black level.\n  * @black_level_r:\tBlack level for red channel.\n  * @black_level_g:\tBlack level for green channels.\n  * @black_level_b:\tBlack level for blue channel.\n+ * @padding:\t\tUnused padding.\n  */\n struct bcm2835_isp_black_level {\n \t__u32 enabled;\n@@ -145,8 +123,7 @@ struct bcm2835_isp_black_level {\n };\n \n /**\n- * struct bcm2835_isp_geq - Green equalisation parameters set with the\n- *\t\t\t    V4L2_CID_USER_BCM2835_ISP_GEQ ctrl.\n+ * struct bcm2835_isp_geq - Green equalisation parameters.\n  *\n  * @enabled:\tEnable green equalisation.\n  * @offset:\tFixed offset of the green equalisation threshold.\n@@ -161,13 +138,12 @@ struct bcm2835_isp_geq {\n #define BCM2835_NUM_GAMMA_PTS 33\n \n /**\n- * struct bcm2835_isp_gamma - Gamma parameters set with the\n- *\t\t\t      V4L2_CID_USER_BCM2835_ISP_GAMMA ctrl.\n+ * struct bcm2835_isp_gamma - Gamma parameters.\n  *\n  * @enabled:\tEnable gamma adjustment.\n- * @X:\t\tX values of the points defining the gamma curve.\n+ * @x:\t\tX values of the points defining the gamma curve.\n  *\t\tValues should be scaled to 16 bits.\n- * @Y:\t\tY values of the points defining the gamma curve.\n+ * @y:\t\tY values of the points defining the gamma curve.\n  *\t\tValues should be scaled to 16 bits.\n  */\n struct bcm2835_isp_gamma {\n@@ -179,9 +155,9 @@ struct bcm2835_isp_gamma {\n /**\n  * enum bcm2835_isp_cdn_mode - Mode of operation for colour denoise.\n  *\n-  * @CDN_MODE_FAST:\t\tFast (but lower quality) colour denoise\n+ * @CDN_MODE_FAST:\t\tFast (but lower quality) colour denoise\n  *\t\t\t\talgorithm, typically used for video recording.\n- * @CDN_HIGH_QUALITY:\t\tHigh quality (but slower) colour denoise\n+ * @CDN_MODE_HIGH_QUALITY:\tHigh quality (but slower) colour denoise\n  *\t\t\t\talgorithm, typically used for stills capture.\n  */\n enum bcm2835_isp_cdn_mode {\n@@ -190,11 +166,10 @@ enum bcm2835_isp_cdn_mode {\n };\n \n /**\n- * struct bcm2835_isp_cdn - Colour denoise parameters set with the\n- *\t\t\t    V4L2_CID_USER_BCM2835_ISP_CDN ctrl.\n+ * struct bcm2835_isp_cdn - Colour denoise parameters.\n  *\n  * @enabled:\tEnable colour denoise.\n- * @cdn_mode:\tColour denoise operating mode (see enum &bcm2835_isp_cdn_mode)\n+ * @mode:\tColour denoise operating mode (see enum &bcm2835_isp_cdn_mode)\n  */\n struct bcm2835_isp_cdn {\n \t__u32 enabled;\n@@ -202,8 +177,7 @@ struct bcm2835_isp_cdn {\n };\n \n /**\n- * struct bcm2835_isp_denoise - Denoise parameters set with the\n- *\t\t\t\tV4L2_CID_USER_BCM2835_ISP_DENOISE ctrl.\n+ * struct bcm2835_isp_denoise - Denoise parameters.\n  *\n  * @enabled:\tEnable denoise.\n  * @constant:\tFixed offset of the noise threshold.\n@@ -218,8 +192,7 @@ struct bcm2835_isp_denoise {\n };\n \n /**\n- * struct bcm2835_isp_sharpen - Sharpen parameters set with the\n- *\t\t\t\tV4L2_CID_USER_BCM2835_ISP_SHARPEN ctrl.\n+ * struct bcm2835_isp_sharpen - Sharpen parameters.\n  *\n  * @enabled:\tEnable sharpening.\n  * @threshold:\tThreshold at which to start sharpening pixels.\n@@ -247,8 +220,7 @@ enum bcm2835_isp_dpc_mode {\n };\n \n /**\n- * struct bcm2835_isp_dpc - Defective pixel correction (DPC) parameters set\n- *\t\t\t    with the V4L2_CID_USER_BCM2835_ISP_DPC ctrl.\n+ * struct bcm2835_isp_dpc - Defective pixel correction (DPC) parameters.\n  *\n  * @enabled:\tEnable DPC.\n  * @strength:\tDPC strength (see enum &bcm2835_isp_dpc_mode).\n@@ -258,6 +230,218 @@ struct bcm2835_isp_dpc {\n \t__u32 strength;\n };\n \n+/**\n+ * struct bcm2835_isp_awb_gains - AWB gains configuration.\n+ *\n+ * @r_gain:\tRed channel AWB gain.\n+ * @b_gain:\tBlue channel AWB gain.\n+ */\n+struct bcm2835_isp_awb_gains {\n+\tstruct bcm2835_isp_rational r_gain;\n+\tstruct bcm2835_isp_rational b_gain;\n+};\n+\n+/**\n+ * struct bcm2835_isp_digital_gain - Digital gain configuration.\n+ *\n+ * @gain:\tDigital gain value.\n+ */\n+struct bcm2835_isp_digital_gain {\n+\tstruct bcm2835_isp_rational gain;\n+};\n+\n+/*\n+ * BCM2835 ISP extensible parameters buffer definitions.\n+ *\n+ * The extensible parameters mechanism allows userspace to submit ISP\n+ * configuration parameters as a buffer containing a series of tagged\n+ * blocks rather than individual V4L2 controls. This enables atomic\n+ * application of multiple parameters in a single operation.\n+ */\n+\n+/**\n+ * enum bcm2835_isp_param_buffer_version - BCM2835 ISP parameters buffer version\n+ *\n+ * @BCM2835_ISP_PARAM_BUFFER_V1: First version of parameters buffer format\n+ */\n+enum bcm2835_isp_param_buffer_version {\n+\tBCM2835_ISP_PARAM_BUFFER_V1 = V4L2_ISP_PARAMS_VERSION_V1,\n+};\n+\n+/**\n+ * enum bcm2835_isp_param_block_type - BCM2835 ISP parameter block types\n+ *\n+ * This enumeration defines the types of parameters blocks that can be\n+ * included in the extensible parameters buffer. Each block type corresponds\n+ * to a specific ISP processing block configuration.\n+ *\n+ * @BCM2835_ISP_PARAM_BLOCK_BLACK_LEVEL: Black level configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_GEQ: Green equalisation configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_GAMMA: Gamma curve configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_DENOISE: Denoise configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_SHARPEN: Sharpening configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_DPC: Defective pixel correction configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_CDN: Colour denoise configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_CC_MATRIX: Colour correction matrix configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_LENS_SHADING: Lens shading table configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_AWB_GAINS: AWB gains configuration\n+ * @BCM2835_ISP_PARAM_BLOCK_DIGITAL_GAIN: Digital gain configuration\n+ */\n+enum bcm2835_isp_param_block_type {\n+\tBCM2835_ISP_PARAM_BLOCK_BLACK_LEVEL,\n+\tBCM2835_ISP_PARAM_BLOCK_GEQ,\n+\tBCM2835_ISP_PARAM_BLOCK_GAMMA,\n+\tBCM2835_ISP_PARAM_BLOCK_DENOISE,\n+\tBCM2835_ISP_PARAM_BLOCK_SHARPEN,\n+\tBCM2835_ISP_PARAM_BLOCK_DPC,\n+\tBCM2835_ISP_PARAM_BLOCK_CDN,\n+\tBCM2835_ISP_PARAM_BLOCK_CC_MATRIX,\n+\tBCM2835_ISP_PARAM_BLOCK_LENS_SHADING,\n+\tBCM2835_ISP_PARAM_BLOCK_AWB_GAINS,\n+\tBCM2835_ISP_PARAM_BLOCK_DIGITAL_GAIN,\n+};\n+\n+/**\n+ * struct bcm2835_isp_params_black_level - Black level parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_BLACK_LEVEL)\n+ * @black_level: Black level configuration\n+ */\n+struct bcm2835_isp_params_black_level {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_black_level black_level;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_geq - Green equalisation parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_GEQ)\n+ * @geq: Green equalisation configuration\n+ */\n+struct bcm2835_isp_params_geq {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_geq geq;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_gamma - Gamma parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_GAMMA)\n+ * @gamma: Gamma curve configuration\n+ */\n+struct bcm2835_isp_params_gamma {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_gamma gamma;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_denoise - Denoise parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_DENOISE)\n+ * @denoise: Denoise configuration\n+ */\n+struct bcm2835_isp_params_denoise {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_denoise denoise;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_sharpen - Sharpen parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_SHARPEN)\n+ * @sharpen: Sharpening configuration\n+ */\n+struct bcm2835_isp_params_sharpen {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_sharpen sharpen;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_dpc - Defective pixel correction parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_DPC)\n+ * @dpc: DPC configuration\n+ */\n+struct bcm2835_isp_params_dpc {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_dpc dpc;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_cdn - Colour denoise parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_CDN)\n+ * @cdn: Colour denoise configuration\n+ */\n+struct bcm2835_isp_params_cdn {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_cdn cdn;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_cc_matrix - Colour correction matrix parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_CC_MATRIX)\n+ * @ccm: Colour correction matrix configuration\n+ */\n+struct bcm2835_isp_params_cc_matrix {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_custom_ccm ccm;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_lens_shading - Lens shading parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_LENS_SHADING)\n+ * @ls: Lens shading configuration (includes dmabuf fd for table data)\n+ */\n+struct bcm2835_isp_params_lens_shading {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_lens_shading ls;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_awb_gains - AWB gains parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_AWB_GAINS)\n+ * @awb_gains: AWB gains configuration\n+ */\n+struct bcm2835_isp_params_awb_gains {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_awb_gains awb_gains;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * struct bcm2835_isp_params_digital_gain - Digital gain parameters block\n+ *\n+ * @header: Block header (type = BCM2835_ISP_PARAM_BLOCK_DIGITAL_GAIN)\n+ * @digital_gain: Digital gain configuration\n+ */\n+struct bcm2835_isp_params_digital_gain {\n+\tstruct v4l2_isp_params_block_header header;\n+\tstruct bcm2835_isp_digital_gain digital_gain;\n+} __attribute__((aligned(8)));\n+\n+/**\n+ * define BCM2835_ISP_PARAMS_MAX_SIZE - Maximum size of all ISP parameters\n+ *\n+ * This defines the maximum size needed to accommodate all possible parameter\n+ * blocks in a single buffer. Drivers use this to allocate appropriately\n+ * sized buffers.\n+ */\n+#define BCM2835_ISP_PARAMS_MAX_SIZE\t\t\t\t\t\\\n+\t(sizeof(struct bcm2835_isp_params_black_level) +\t\t\\\n+\t sizeof(struct bcm2835_isp_params_geq) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_gamma) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_denoise) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_sharpen) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_dpc) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_cdn) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_cc_matrix) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_lens_shading) +\t\t\\\n+\t sizeof(struct bcm2835_isp_params_awb_gains) +\t\t\t\\\n+\t sizeof(struct bcm2835_isp_params_digital_gain))\n+\n /*\n  * ISP statistics structures.\n  *\ndiff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h\nindex 25914de2cd7a39a168f59cd80ed331b4b339659f..0400a68b02d481f4bd5dffcd474a7f413c6bd278 100644\n--- a/include/linux/v4l2-controls.h\n+++ b/include/linux/v4l2-controls.h\n@@ -178,9 +178,6 @@ enum v4l2_colorfx {\n  */\n #define V4L2_CID_USER_CCS_BASE\t\t\t(V4L2_CID_USER_BASE + 0x10f0)\n \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.\ndiff --git a/include/linux/videodev2.h b/include/linux/videodev2.h\nindex b40b43d72196cee5f677f96dddb8452600cd296c..5f38e786496be83600e3924abd9c9aeff81d1ca9 100644\n--- a/include/linux/videodev2.h\n+++ b/include/linux/videodev2.h\n@@ -843,7 +843,8 @@ struct v4l2_pix_format {\n #define V4L2_META_FMT_UVC_MSXU_1_5  v4l2_fourcc('U', 'V', 'C', 'M') /* UVC MSXU metadata */\n #define V4L2_META_FMT_VIVID\t  v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */\n #define V4L2_META_FMT_SENSOR_DATA v4l2_fourcc('S', 'E', 'N', 'S') /* Sensor Ancillary metadata */\n-#define V4L2_META_FMT_BCM2835_ISP_STATS v4l2_fourcc('B', 'S', 'T', 'A') /* BCM2835 ISP image statistics output */\n+#define V4L2_META_FMT_BCM2835_ISP_STATS v4l2_fourcc('B', 'S', 'T', 'A') /* BCM2835 ISP stats */\n+#define V4L2_META_FMT_BCM2835_ISP_PARAMS v4l2_fourcc('B', 'C', 'M', 'P') /* BCM2835 ISP params */\n \n /* Vendor specific - used for RK_ISP1 camera sub-system */\n #define V4L2_META_FMT_RK_ISP1_PARAMS\tv4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */\n",
    "prefixes": [
        "2/3"
    ]
}