lkml.org 
[lkml]   [2026]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v4 09/13] media: iris: Use power domain type to look up pd_devs index
From


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>

\
 
 \ /
  Last update: 2026-05-06 16:49    [W:0.244 / U:10.342 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and my Meterkast|Read the blog