Re: [PATCH v7 7/8] media: qcom: iris: split firmware_data from raw platform data
From: Dikshita Agarwal
Date: Wed Mar 18 2026 - 05:05:55 EST
On 3/17/2026 12:24 AM, Dmitry Baryshkov wrote:
> Having firmware-related fields in platform data results in the tying
> platform data to the HFI firmware data rather than the actual hardware.
> For example, SM8450 uses Gen2 firmware, so currently its platform data
> should be placed next to the other gen2 platforms, although it has the
> VPU2.0 core, similar to the one found on SM8250 and SC7280 and so the
> hardware-specific platform data is also close to those devices.
>
> Split firmware data to a separate struct, separating hardware-related
> data from the firmware interfaces.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx>
> ---
> drivers/media/platform/qcom/iris/iris_buffer.c | 82 +++----
> drivers/media/platform/qcom/iris/iris_core.h | 2 +
> drivers/media/platform/qcom/iris/iris_ctrls.c | 8 +-
> .../platform/qcom/iris/iris_hfi_gen1_command.c | 8 +-
> .../platform/qcom/iris/iris_hfi_gen2_command.c | 66 +++---
> .../platform/qcom/iris/iris_platform_common.h | 82 ++++---
> .../media/platform/qcom/iris/iris_platform_gen1.c | 67 +++---
> .../media/platform/qcom/iris/iris_platform_gen2.c | 246 ++++-----------------
> drivers/media/platform/qcom/iris/iris_probe.c | 3 +-
> drivers/media/platform/qcom/iris/iris_vidc.c | 10 +-
> 10 files changed, 205 insertions(+), 369 deletions(-)
>
<snip>
> -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);
> - const struct vpu_ops *vpu_ops;
> - const struct icc_info *icc_tbl;
> - unsigned int icc_tbl_size;
> - const struct bw_info *bw_tbl_dec;
> - unsigned int bw_tbl_dec_size;
> - const char * const *pmdomain_tbl;
> - unsigned int pmdomain_tbl_size;
> - const char * const *opp_pd_tbl;
> - unsigned int opp_pd_tbl_size;
> - const struct platform_clk_data *clk_tbl;
> - const char * const *opp_clk_tbl;
> - unsigned int clk_tbl_size;
> - const char * const *clk_rst_tbl;
> - unsigned int clk_rst_tbl_size;
> - const char * const *controller_rst_tbl;
> - unsigned int controller_rst_tbl_size;
> - u64 dma_mask;
> - const char *fwname;
> - 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;
This can also be tied to firmware data as this is required to be set for
Gen2 only and is 0 for Gen1.
Thanks,
Dikshita