[PATCH v3 2/7] ARM: Exynos: add support for sub-power domains
Marek Szyprowski
m.szyprowski at samsung.com
Thu Jan 15 01:52:59 PST 2015
Hello All,
I'm sorry for missing some CC: in this patch, when I posted v3 to
mailing list.
It looks that CC: lines got lost after git am + git format-patch.
Ulf, could you also ack this patch, so Kukjin can finally merge the whole
series to Samsung kernel tree?
On 2015-01-14 14:44, Marek Szyprowski wrote:
> This patch adds support for making one power domain a sub-domain of
> other domain. This is useful for modeling power dependences for devices
> like TV Mixer or Camera ISP, which needs to have more than one power
> domain enabled to be operational.
>
> Based on previous work by Amit Daniel Kachhap <amit.daniel at samsung.com>.
>
> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
> ---
> .../bindings/arm/exynos/power_domain.txt | 2 ++
> arch/arm/mach-exynos/pm_domains.c | 28 ++++++++++++++++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
> index f4445e5..1e09703 100644
> --- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
> +++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
> @@ -22,6 +22,8 @@ Optional Properties:
> - pclkN, clkN: Pairs of parent of input clock and input clock to the
> devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
> are supported currently.
> +- power-domains: phandle pointing to the parent power domain, for more details
> + see Documentation/devicetree/bindings/power/power_domain.txt
>
> Node of a device using power domains must have a power-domains property
> defined with a phandle to respective power domain.
> diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c
> index 20f2671..37266a8 100644
> --- a/arch/arm/mach-exynos/pm_domains.c
> +++ b/arch/arm/mach-exynos/pm_domains.c
> @@ -161,6 +161,34 @@ no_clk:
> of_genpd_add_provider_simple(np, &pd->pd);
> }
>
> + /* Assign the child power domains to their parents */
> + for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") {
> + struct generic_pm_domain *child_domain, *parent_domain;
> + struct of_phandle_args args;
> +
> + args.np = np;
> + args.args_count = 0;
> + child_domain = of_genpd_get_from_provider(&args);
> + if (!child_domain)
> + continue;
> +
> + if (of_parse_phandle_with_args(np, "power-domains",
> + "#power-domain-cells", 0, &args) != 0)
> + continue;
> +
> + parent_domain = of_genpd_get_from_provider(&args);
> + if (!parent_domain)
> + continue;
> +
> + if (pm_genpd_add_subdomain(parent_domain, child_domain))
> + pr_warn("%s failed to add subdomain: %s\n",
> + parent_domain->name, child_domain->name);
> + else
> + pr_info("%s has as child subdomain: %s.\n",
> + parent_domain->name, child_domain->name);
> + of_node_put(np);
> + }
> +
> return 0;
> }
> arch_initcall(exynos4_pm_init_power_domain);
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
More information about the linux-arm-kernel
mailing list