Messages in this thread |  | | Date | Wed, 6 May 2026 20:18:23 +0530 | | Subject | Re: [PATCH v4 09/13] media: iris: Use power domain type to look up pd_devs index | | From | Vikash Garodia <> |
| |
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@oss.qualcomm.com> > --- > .../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@oss.qualcomm.com>
|  |