Commit 2ed5f236 authored by Tomasz Figa's avatar Tomasz Figa Committed by Kukjin Kim

ARM: EXYNOS: Detect power domain state on registration from DT

Initial state of power domains might vary on different boards and with
different bootloaders.

This patch adds detection of initial state of power domains when being
registered from DT.
Signed-off-by: default avatarTomasz Figa <t.figa@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent cf7c397b
...@@ -9,10 +9,6 @@ Required Properties: ...@@ -9,10 +9,6 @@ Required Properties:
- reg: physical base address of the controller and length of memory mapped - reg: physical base address of the controller and length of memory mapped
region. region.
Optional Properties:
- samsung,exynos4210-pd-off: Specifies that the power domain is in turned-off
state during boot and remains to be turned-off until explicitly turned-on.
Example: Example:
lcd0: power-domain-lcd0 { lcd0: power-domain-lcd0 {
......
...@@ -89,6 +89,7 @@ static __init int exynos_pm_dt_parse_domains(void) ...@@ -89,6 +89,7 @@ static __init int exynos_pm_dt_parse_domains(void)
for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") { for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") {
struct exynos_pm_domain *pd; struct exynos_pm_domain *pd;
int on;
pd = kzalloc(sizeof(*pd), GFP_KERNEL); pd = kzalloc(sizeof(*pd), GFP_KERNEL);
if (!pd) { if (!pd) {
...@@ -97,14 +98,15 @@ static __init int exynos_pm_dt_parse_domains(void) ...@@ -97,14 +98,15 @@ static __init int exynos_pm_dt_parse_domains(void)
return -ENOMEM; return -ENOMEM;
} }
if (of_get_property(np, "samsung,exynos4210-pd-off", NULL))
pd->is_off = true;
pd->name = np->name; pd->name = np->name;
pd->base = of_iomap(np, 0); pd->base = of_iomap(np, 0);
pd->pd.power_off = exynos_pd_power_off; pd->pd.power_off = exynos_pd_power_off;
pd->pd.power_on = exynos_pd_power_on; pd->pd.power_on = exynos_pd_power_on;
pd->pd.of_node = np; pd->pd.of_node = np;
pm_genpd_init(&pd->pd, NULL, false);
on = __raw_readl(pd->base + 0x4) & S5P_INT_LOCAL_PWR_EN;
pm_genpd_init(&pd->pd, NULL, !on);
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment