Re: [PATCH v3 5/8] media: qcom: iris: merge hfi_response_ops and hfi_command_ops
From: Dikshita Agarwal
Date: Wed Mar 11 2026 - 08:21:27 EST
On 3/11/2026 10:35 AM, Dmitry Baryshkov wrote:
> There is little point in having two different structures for HFI-related
> core ops. Merge both of them into the new iris_hfi_ops structure.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx>
> ---
> drivers/media/platform/qcom/iris/iris_core.h | 3 +--
> drivers/media/platform/qcom/iris/iris_hfi_common.c | 6 +++---
> drivers/media/platform/qcom/iris/iris_hfi_common.h | 8 +++-----
> drivers/media/platform/qcom/iris/iris_hfi_gen1.h | 4 ++--
> drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c | 8 +++++---
> drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c | 11 +----------
> drivers/media/platform/qcom/iris/iris_hfi_gen2.h | 4 ++--
> drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 8 +++++---
> drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c | 11 +----------
> drivers/media/platform/qcom/iris/iris_platform_common.h | 3 +--
> drivers/media/platform/qcom/iris/iris_platform_gen1.c | 6 ++----
> drivers/media/platform/qcom/iris/iris_platform_gen2.c | 12 ++++--------
> drivers/media/platform/qcom/iris/iris_probe.c | 3 +--
> drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 +-
> 14 files changed, 32 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/platform/qcom/iris/iris_core.h
> index d10a03aa5685..1d9a435ee747 100644
> --- a/drivers/media/platform/qcom/iris/iris_core.h
> +++ b/drivers/media/platform/qcom/iris/iris_core.h
> @@ -112,8 +112,7 @@ struct iris_core {
> u32 header_id;
> u32 packet_id;
> struct iris_core_power power;
> - const struct iris_hfi_command_ops *hfi_ops;
> - const struct iris_hfi_response_ops *hfi_response_ops;
> + const struct iris_hfi_sys_ops *hfi_sys_ops;
> struct completion core_init_done;
> u32 intr_status;
> struct delayed_work sys_error_handler;
> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.c b/drivers/media/platform/qcom/iris/iris_hfi_common.c
> index 92112eb16c11..ad8e4ecb8605 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_common.c
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.c
> @@ -76,7 +76,7 @@ u32 iris_hfi_get_v4l2_matrix_coefficients(u32 hfi_coefficients)
>
> int iris_hfi_core_init(struct iris_core *core)
> {
> - const struct iris_hfi_command_ops *hfi_ops = core->hfi_ops;
> + const struct iris_hfi_sys_ops *hfi_ops = core->hfi_sys_ops;
> int ret;
>
> ret = hfi_ops->sys_init(core);
> @@ -109,7 +109,7 @@ irqreturn_t iris_hfi_isr_handler(int irq, void *data)
> iris_vpu_clear_interrupt(core);
> mutex_unlock(&core->lock);
>
> - core->hfi_response_ops->hfi_response_handler(core);
> + core->hfi_sys_ops->sys_hfi_response_handler(core);
>
> if (!iris_vpu_watchdog(core, core->intr_status))
> enable_irq(irq);
> @@ -144,7 +144,7 @@ int iris_hfi_pm_suspend(struct iris_core *core)
>
> int iris_hfi_pm_resume(struct iris_core *core)
> {
> - const struct iris_hfi_command_ops *ops = core->hfi_ops;
> + const struct iris_hfi_sys_ops *ops = core->hfi_sys_ops;
> int ret;
>
> ret = iris_vpu_power_on(core);
> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.h b/drivers/media/platform/qcom/iris/iris_hfi_common.h
> index 18684ada78b2..9aa84a1d8f95 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_common.h
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.h
> @@ -105,11 +105,13 @@ struct iris_hfi_prop_type_handle {
> int (*handle)(struct iris_inst *inst, u32 plane);
> };
>
> -struct iris_hfi_command_ops {
> +struct iris_hfi_sys_ops {
> int (*sys_init)(struct iris_core *core);
> int (*sys_image_version)(struct iris_core *core);
> int (*sys_interframe_powercollapse)(struct iris_core *core);
> int (*sys_pc_prep)(struct iris_core *core);
> +
> + void (*sys_hfi_response_handler)(struct iris_core *core);
> };
>
> struct iris_hfi_session_ops {
> @@ -129,10 +131,6 @@ struct iris_hfi_session_ops {
> int (*session_close)(struct iris_inst *inst);
> };
>
> -struct iris_hfi_response_ops {
> - void (*hfi_response_handler)(struct iris_core *core);
> -};
> -
> struct hfi_subscription_params {
> u32 bitstream_resolution;
> u32 crop_offsets[2];
> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h
> index 19b8e9054a75..1c970243532a 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h
> @@ -9,8 +9,8 @@
> struct iris_core;
> struct iris_inst;
>
> -void iris_hfi_gen1_command_ops_init(struct iris_core *core);
> -void iris_hfi_gen1_response_ops_init(struct iris_core *core);
> +void iris_hfi_gen1_ops_init(struct iris_core *core);
s/iris_hfi_gen1_ops_init/iris_hfi_gen1_sys_ops_init
> +void iris_hfi_gen1_response_handler(struct iris_core *core);
> struct iris_inst *iris_hfi_gen1_get_instance(void);
>
> #endif
> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
> index a28b0c7ebbad..eea9cc3e5904 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
> @@ -1076,16 +1076,18 @@ static const struct iris_hfi_session_ops iris_hfi_gen1_session_ops = {
> .session_close = iris_hfi_gen1_session_close,
> };
>
> -static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops = {
> +static const struct iris_hfi_sys_ops iris_hfi_gen1_ops = {
s/iris_hfi_gen1_ops/iris_hfi_gen1_sys_ops
to keep it consistent with hfi_gen1_session_ops.
Same comment is applicable to other places as well.
Thanks,
Dikshita