Re: [PATCH v2 10/11] media: qcom: iris: split firmware_data from raw platform data

From: Dikshita Agarwal

Date: Fri Mar 06 2026 - 05:59:00 EST




On 2/28/2026 8:56 PM, Dmitry Baryshkov wrote:

> diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/drivers/media/platform/qcom/iris/iris_platform_common.h
> index a936ab2aedaf..be3449861993 100644
> --- a/drivers/media/platform/qcom/iris/iris_platform_common.h
> +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
> @@ -201,9 +201,32 @@ enum platform_pm_domain_type {
> IRIS_APV_HW_POWER_DOMAIN,
> };
>
> -struct iris_platform_data {
> +struct iris_firmware_data {
> void (*init_hfi_ops)(struct iris_core *core);
> +
> u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type buffer_type);

Makes sense to split firmware-related data out of iris_platform_data into a
dedicated iris_firmware_data, one comment though, get_vpu_buffer_size
should be in iris_platform_data since it describes the VPU’s buffer
requirements independent of whether the SoC runs gen1/gen2 HFI firmware.

Thanks,
Dikshita

> +
> + const struct platform_inst_fw_cap *inst_fw_caps_dec;
> + u32 inst_fw_caps_dec_size;
> + const struct platform_inst_fw_cap *inst_fw_caps_enc;
> + u32 inst_fw_caps_enc_size;
> +
> + const u32 *dec_ip_int_buf_tbl;
> + unsigned int dec_ip_int_buf_tbl_size;
> + const u32 *dec_op_int_buf_tbl;
> + unsigned int dec_op_int_buf_tbl_size;
> + const u32 *enc_ip_int_buf_tbl;
> + unsigned int enc_ip_int_buf_tbl_size;
> + const u32 *enc_op_int_buf_tbl;
> + unsigned int enc_op_int_buf_tbl_size;
> +};
> +
> +struct iris_platform_data {
> + /*
> + * XXX: remove firmware_data pointer once we have platforms supporting
> + * both firmware kinds.
> + */
> + const struct iris_firmware_data *firmware_data;
> const struct vpu_ops *vpu_ops;
> void (*set_preset_registers)(struct iris_core *core);
> const struct icc_info *icc_tbl;
> @@ -226,10 +249,6 @@ struct iris_platform_data {
> struct iris_fmt *inst_iris_fmts;
> u32 inst_iris_fmts_size;
> struct platform_inst_caps *inst_caps;
> - const struct platform_inst_fw_cap *inst_fw_caps_dec;
> - u32 inst_fw_caps_dec_size;
> - const struct platform_inst_fw_cap *inst_fw_caps_enc;
> - u32 inst_fw_caps_enc_size;
> const struct tz_cp_config *tz_cp_config_data;
> u32 tz_cp_config_data_size;
> u32 core_arch;
> @@ -241,14 +260,6 @@ struct iris_platform_data {
> u32 max_core_mbpf;
> /* max number of macroblocks per second supported */
> u32 max_core_mbps;
> - const u32 *dec_ip_int_buf_tbl;
> - unsigned int dec_ip_int_buf_tbl_size;
> - const u32 *dec_op_int_buf_tbl;
> - unsigned int dec_op_int_buf_tbl_size;
> - const u32 *enc_ip_int_buf_tbl;
> - unsigned int enc_ip_int_buf_tbl_size;
> - const u32 *enc_op_int_buf_tbl;
> - unsigned int enc_op_int_buf_tbl_size;
> };
>
> #endif