From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCC5F438011; Thu, 17 Sep 2026 08:25:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789633556; cv=none; b=Dv98nmJzFOKARw3pKQ4JAfyo5HdT19+bweDoKnzzm8bbwebbNvtQlnawf+W8b9zEo9s7BQFIMlJsOlgbVBBpmAMyJOVrdlD7sWU1Yq8S3pEV1dihiQv8JkYvbJg1sjCUvQxisYpieQZR8vEJYF5UikhRM6dLDYMnULK6q4jJKVc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789633556; c=relaxed/simple; bh=PtE3Vyu8LhL91vyyfDT/RYd/NOj7T4Vv0mz2W3PFV/A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pcYRhhV4n1nS67ERuimz8aC6e2IIJccdWxcyaRugHSTXODEjSnNUbduLBz3lOHpHloGTBcQGDJe+x93aS3O60iEe2FNeyot8a1CCLQKuFw3Woq5khhkiJmCm5sbgAY1FUM013Bfc57zHVikGHo1UUI4s3SLrzEYn1e9QVQft4jc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=pglRJkyh; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="pglRJkyh" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:85de:a3c9:9357:b164:bf0b]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id CDAF2B2D; Thu, 17 Sep 2026 10:23:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1789633421; bh=PtE3Vyu8LhL91vyyfDT/RYd/NOj7T4Vv0mz2W3PFV/A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pglRJkyhnNjq8dvZOQa3b8slB99eYigDbI/BtUwoYB2PmUfBwFdvGrovPn1uGHi/l Tr/CudUcES5vj9FG+Wqh/q3xyhQSVTiEmw3joOAJips4dp1pQWKZHa2u9+4vy7kguJ 48H72iP3LLcFAThjRt5G1dpZdZXiZOmgw7UlFvdI= From: Jai Luthra Date: Thu, 17 Sep 2026 13:53:10 +0530 Subject: [PATCH v5 04/10] platform/raspberrypi: vchiq-mmal: Support ISP parameters and stats Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260917-b4-vchiq-isp-v5-4-2d8870add2c0@ideasonboard.com> References: <20260917-b4-vchiq-isp-v5-0-2d8870add2c0@ideasonboard.com> In-Reply-To: <20260917-b4-vchiq-isp-v5-0-2d8870add2c0@ideasonboard.com> To: Florian Fainelli , Tomasz Figa , Marek Szyprowski , Mauro Carvalho Chehab , Raspberry Pi Kernel Maintenance Cc: Laurent Pinchart , Kieran Bingham , Dave Stevenson , Naushir Patuck , Stefan Wahren , Paul Elder , Hans Verkuil , Tomasz Figa , linux-media@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jai Luthra X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4934; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=PtE3Vyu8LhL91vyyfDT/RYd/NOj7T4Vv0mz2W3PFV/A=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBqq6PR6jM9Ui8fVRiLhr179cisgE78N9sEvZTXk c/juSJoO6iJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaquj0QAKCRBD3pH5JJpx RUOZEACH+i93DWcUdh0d6z476vN/+Yo1WaZCusyB4DReVVAn7GCVPFsSACYLNckyKAbml58c8zU a+dD0aEb1lkUaRj7kEvSIV38+c1uaD7gcGfcSl+J+4Dm4eB5ysnYHbGUZ2H+6LsyBHd70ykg6lK LOFYVjbwV4LwHPGI+9J7nxGltC4dCGr1TmeJUg/VVIBn10X6qWq8H9JRmyGZ2ZyBEFrcbcTYK9V EI9xUA0m3g9zq+a8HBsswWclUZ1YnstLSxg8ptIWqBETwofFjtGnV9BjDVJkmpvKS4Id273aux9 eF+r4k2Mxv381v1OXKRNztEWr41fKN2vNgrhK0MJ3a/bqMOxls7HB2ZhOJqBjAWrgLGmxmJtPKG Tb0U7Y7o35hDlKV+EWPYyuIOE4nHtbkRvB4BZfqwLfbM1mYvSN+PA1k/b3HCCNyOxz9vjPoGods yY2VAKbKQsG2tRd8Vk44uVUwVB7iOmIhM7rdQ2sik7CAIqEVpGdlVOgHenWZtGHbLOkDYVPYhiW 8kgt8pr9l8Jr5j2QAnrAXYo6vDV265k73pmff7bhbwjRBPNde7/240Y1Y3t6lZxPQK0lZ85N88f XaF6oWKNIcpQEgS0D4B2ycy7qh+1HFrPuy2tQgwEn+dBjpZDzSyRsfeCsUomjn/dzYFj85xSbp+ u5RWDeSOEHm799A== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 The ISP used on BCM2835 and derivative platforms is behind the VCHIQ bus, where some parameters and statistics are accessed through the MMAL layer. So add the relevant structures, macros and enum values. Reviewed-by: Paul Elder Tested-by: Paul Elder Signed-off-by: Jai Luthra --- include/linux/raspberrypi/mmal-encodings.h | 4 ++ include/linux/raspberrypi/mmal-parameters.h | 86 +++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/include/linux/raspberrypi/mmal-encodings.h b/include/linux/raspberrypi/mmal-encodings.h index e15ae7b24f73..eadf2e981408 100644 --- a/include/linux/raspberrypi/mmal-encodings.h +++ b/include/linux/raspberrypi/mmal-encodings.h @@ -73,6 +73,10 @@ */ #define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E', 'G', 'L', 'I') +/** ISP image statistics format + */ +#define MMAL_ENCODING_BRCM_STATS MMAL_FOURCC('S', 'T', 'A', 'T') + /* }@ */ /** \name Pre-defined audio encodings */ diff --git a/include/linux/raspberrypi/mmal-parameters.h b/include/linux/raspberrypi/mmal-parameters.h index a0cdd28101f2..6ae5a7a1932c 100644 --- a/include/linux/raspberrypi/mmal-parameters.h +++ b/include/linux/raspberrypi/mmal-parameters.h @@ -223,6 +223,64 @@ enum mmal_parameter_camera_type { MMAL_PARAMETER_SHUTTER_SPEED, /**< Takes a @ref MMAL_PARAMETER_AWB_GAINS_T */ MMAL_PARAMETER_CUSTOM_AWB_GAINS, + /**< Takes a @ref MMAL_PARAMETER_CAMERA_SETTINGS_T */ + MMAL_PARAMETER_CAMERA_SETTINGS, + /**< Takes a @ref MMAL_PARAMETER_PRIVACY_INDICATOR_T */ + MMAL_PARAMETER_PRIVACY_INDICATOR, + /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_DENOISE, + /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_STILLS_DENOISE, + /**< Takes a @ref MMAL_PARAMETER_CAMERA_ANNOTATE_T */ + MMAL_PARAMETER_ANNOTATE, + /**< Takes a @ref MMAL_PARAMETER_STEREOSCOPIC_MODE_T */ + MMAL_PARAMETER_STEREOSCOPIC_MODE, + /**< Takes a @ref MMAL_PARAMETER_CAMERA_INTERFACE_T */ + MMAL_PARAMETER_CAMERA_INTERFACE, + /**< Takes a @ref MMAL_PARAMETER_CAMERA_CLOCKING_MODE_T */ + MMAL_PARAMETER_CAMERA_CLOCKING_MODE, + /**< Takes a @ref MMAL_PARAMETER_CAMERA_RX_CONFIG_T */ + MMAL_PARAMETER_CAMERA_RX_CONFIG, + /**< Takes a @ref MMAL_PARAMETER_CAMERA_RX_TIMING_T */ + MMAL_PARAMETER_CAMERA_RX_TIMING, + /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_DPF_CONFIG, + + /* 0x50 */ + /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_JPEG_RESTART_INTERVAL, + /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_CAMERA_ISP_BLOCK_OVERRIDE, + /**< Takes a @ref MMAL_PARAMETER_LENS_SHADING_T */ + MMAL_PARAMETER_LENS_SHADING_OVERRIDE, + /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_BLACK_LEVEL, + /**< Takes a @ref MMAL_PARAMETER_RESIZE_T */ + MMAL_PARAMETER_RESIZE_PARAMS, + /**< Takes a @ref MMAL_PARAMETER_CROP_T */ + MMAL_PARAMETER_CROP, + /**< Takes a @ref MMAL_PARAMETER_INT32_T */ + MMAL_PARAMETER_OUTPUT_SHIFT, + /**< Takes a @ref MMAL_PARAMETER_INT32_T */ + MMAL_PARAMETER_CCM_SHIFT, + /**< Takes a @ref MMAL_PARAMETER_CUSTOM_CCM_T */ + MMAL_PARAMETER_CUSTOM_CCM, + /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ + MMAL_PARAMETER_ANALOG_GAIN, + /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ + MMAL_PARAMETER_DIGITAL_GAIN, + /**< Takes a @ref MMAL_PARAMETER_DENOISE_T */ + MMAL_PARAMETER_DENOISE, + /**< Takes a @ref MMAL_PARAMETER_SHARPEN_T */ + MMAL_PARAMETER_SHARPEN, + /**< Takes a @ref MMAL_PARAMETER_GEQ_T */ + MMAL_PARAMETER_GEQ, + /**< Tales a @ref MMAP_PARAMETER_DPC_T */ + MMAL_PARAMETER_DPC, + /**< Tales a @ref MMAP_PARAMETER_GAMMA_T */ + MMAL_PARAMETER_GAMMA, + /**< Takes a @ref MMAL_PARAMETER_CDN_T */ + MMAL_PARAMETER_CDN, }; enum mmal_parameter_camera_config_timestamp_mode { @@ -749,4 +807,32 @@ struct mmal_parameter_camera_info { flashes[MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES]; }; +enum mmal_parameter_ls_gain_format_type { + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U0P8_1 = 0, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U1P7_0 = 1, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U1P7_1 = 2, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U2P6_0 = 3, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U2P6_1 = 4, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U3P5_0 = 5, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U3P5_1 = 6, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U4P10 = 7, + MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_DUMMY = 0x7FFFFFFF +}; + +struct mmal_parameter_lens_shading_v2 { + u32 enabled; + u32 grid_cell_size; + u32 grid_width; + u32 grid_stride; + u32 grid_height; + u32 mem_handle_table; + u32 ref_transform; + u32 corner_sampled; + enum mmal_parameter_ls_gain_format_type gain_format; +}; + +struct mmal_parameter_crop { + struct vchiq_mmal_rect rect; +}; + #endif -- 2.55.0