Re: [PATCH v3 3/9] platform/raspberrypi: vchiq-mmal: Support ISP parameters and stats
From: Paul Elder
Date: Mon Aug 31 2026 - 02:30:50 EST
Quoting Jai Luthra (2026-07-17 20:04:18)
> 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.
>
> Signed-off-by: Jai Luthra <jai.luthra@xxxxxxxxxxxxxxxx>
Reviewed-by: Paul Elder <paul.elder@xxxxxxxxxxxxxxxx>
> ---
> 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.54.0
>
>