Re: [PATCH v8 11/11] media: qcom: iris: extract firmware description data
From: Dmitry Baryshkov
Date: Mon Mar 23 2026 - 06:01:55 EST
On Mon, Mar 23, 2026 at 01:41:36PM +0530, Dikshita Agarwal wrote:
>
>
> On 3/23/2026 12:50 PM, Dikshita Agarwal wrote:
> >
> >
> > On 3/19/2026 11:29 AM, Dmitry Baryshkov wrote:
> >> In preparation to adding support for several firmware revisions to be
> >> used for a platform, extract the firmware description data. It
> >> incorporates firmware name, HFI ops and buffer requirements of the
> >> particular firmware build.
> >>
> >> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx>
> >> ---
> >> drivers/media/platform/qcom/iris/iris_buffer.c | 2 +-
> >> drivers/media/platform/qcom/iris/iris_core.h | 1 +
> >> drivers/media/platform/qcom/iris/iris_firmware.c | 2 +-
> >> .../platform/qcom/iris/iris_hfi_gen1_command.c | 2 +-
> >> .../platform/qcom/iris/iris_platform_common.h | 15 ++++----
> >> .../media/platform/qcom/iris/iris_platform_vpu2.c | 20 +++++++----
> >> .../media/platform/qcom/iris/iris_platform_vpu3x.c | 41 +++++++++++++++-------
> >> drivers/media/platform/qcom/iris/iris_probe.c | 3 +-
> >> 8 files changed, 57 insertions(+), 29 deletions(-)
> >>
> >> diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media/platform/qcom/iris/iris_buffer.c
> >> index fbe136360aa1..ef7f6f931557 100644
> >> --- a/drivers/media/platform/qcom/iris/iris_buffer.c
> >> +++ b/drivers/media/platform/qcom/iris/iris_buffer.c
> >> @@ -295,7 +295,7 @@ static void iris_fill_internal_buf_info(struct iris_inst *inst,
> >> {
> >> struct iris_buffers *buffers = &inst->buffers[buffer_type];
> >>
> >> - buffers->size = inst->core->iris_platform_data->get_vpu_buffer_size(inst, buffer_type);
> >> + buffers->size = inst->core->iris_firmware_desc->get_vpu_buffer_size(inst, buffer_type);
> >> buffers->min_count = iris_vpu_buf_count(inst, buffer_type);
> >> }
> >>
> >> diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/platform/qcom/iris/iris_core.h
> >> index e0ca245c8c63..7f36eb65dcbf 100644
> >> --- a/drivers/media/platform/qcom/iris/iris_core.h
> >> +++ b/drivers/media/platform/qcom/iris/iris_core.h
> >> @@ -99,6 +99,7 @@ struct iris_core {
> >> struct reset_control_bulk_data *controller_resets;
> >> const struct iris_platform_data *iris_platform_data;
> >> const struct iris_firmware_data *iris_firmware_data;
> >> + const struct iris_firmware_desc *iris_firmware_desc;
> >
> > Missing documentation.
> >
> >> const struct qcom_ubwc_cfg_data *ubwc_cfg;
> >> enum iris_core_state state;
> >> dma_addr_t iface_q_table_daddr;
> >
> > <snip>
> >
> >> index dd87504c2e67..d36f0c0e785b 100644
> >> --- a/drivers/media/platform/qcom/iris/iris_probe.c
> >> +++ b/drivers/media/platform/qcom/iris/iris_probe.c
> >> @@ -251,7 +251,8 @@ static int iris_probe(struct platform_device *pdev)
> >> return core->irq;
> >>
> >> core->iris_platform_data = of_device_get_match_data(core->dev);
> >> - core->iris_firmware_data = core->iris_platform_data->firmware_data;
> >> + core->iris_firmware_desc = core->iris_platform_data->firmware_desc;
> >
> > How will iris_firmware_desc be selected once a SoC supports both Gen1 and
> > Gen2 firmware?
> > Today it’s fixed in platform_data, but eventually probe would need to
> > choose between firmware_desc_gen1 / firmware_desc_gen2 based on the generation.
>
> something like this would be okay?
>
> if (core->iris_platform_data->firmware_desc_gen2)
> core->iris_firmware_desc = core->iris_platform_data->firmware_desc_gen2;
> else
> core->iris_firmware_desc = core->iris_platform_data->firmware_desc_gen1;
Yes :-)
--
With best wishes
Dmitry