Re: [PATCH v4 09/13] media: iris: Use power domain type to look up pd_devs index
From: Vikash Garodia
Date: Wed May 06 2026 - 10:50:23 EST
On 5/5/2026 12:29 PM, Vishnu Reddy wrote:
The pmdomain_tbl was a array of strings holding only the power domain
names. Callers had to pass a pd_devs[] pointer indexed directly by the
platform_pm_domain_type enum value to iris_enable_power_domains() and
iris_disable_power_domains().
A future platform may need to introduce a new enum value that aliases
an existing one (e.g. IRIS_VCODEC1_POWER_DOMAIN aliasing the
IRIS_VPP0_HW_POWER_DOMAIN on Glymur), which would break the assumption
that enum values map 1:1 to pd_devs[] indices.
To fix this, replace the string array with a new struct platform_pd_data
that pairs each power domain name with its platform_pm_domain_type. Add
a helper iris_get_pd_index_by_type() that walks this table and returns
the correct pd_devs[] index for a given type.
Update iris_enable_power_domains() and iris_disable_power_domains()
to accept a platform_pm_domain_type instead of a struct device pointer.
They now call the helper internally to resolve the index, removing the
need for callers to do the index lookup themselves.
This prepares the driver for adding new platforms where power domain enum
values cannot be used directly as pd_devs[] indices.
Signed-off-by: Vishnu Reddy <busanna.reddy@xxxxxxxxxxxxxxxx>
---
.../platform/qcom/iris/iris_platform_common.h | 9 +++-
.../media/platform/qcom/iris/iris_platform_gen1.c | 18 +++++---
.../media/platform/qcom/iris/iris_platform_gen2.c | 24 ++++++----
drivers/media/platform/qcom/iris/iris_probe.c | 4 +-
drivers/media/platform/qcom/iris/iris_resources.c | 44 +++++++++++++++++-
drivers/media/platform/qcom/iris/iris_resources.h | 6 ++-
drivers/media/platform/qcom/iris/iris_vpu3x.c | 7 ++-
drivers/media/platform/qcom/iris/iris_vpu4x.c | 52 ++++++++--------------
drivers/media/platform/qcom/iris/iris_vpu_common.c | 23 +++++-----
9 files changed, 116 insertions(+), 71 deletions(-)
diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/drivers/media/platform/qcom/iris/iris_platform_common.h
index 30e9d4d288c6..7d59e6364e9d 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_common.h
+++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
@@ -212,6 +212,12 @@ enum platform_pm_domain_type {
IRIS_APV_HW_POWER_DOMAIN,
};
+struct platform_pd_data {
+ enum platform_pm_domain_type *pd_types;
+ const char **pd_names;
+ u32 pd_count;
+};
+
<snip>
-int iris_enable_power_domains(struct iris_core *core, struct device *pd_dev)
+static int iris_get_pd_index_by_type(struct iris_core *core, enum platform_pm_domain_type pd_type)
{
+ const struct platform_pd_data *pd_tbl;
+ u32 pd_count, i;
+
+ pd_tbl = core->iris_platform_data->pmdomain_tbl;
+ pd_count = core->iris_platform_data->pmdomain_tbl->pd_count;
pd_count can be dropped, use pd_tbl->pd_count instead.
with that fixed,
Reviewed-by: Vikash Garodia <vikash.garodia@xxxxxxxxxxxxxxxx>