aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/arm/exynos/power_domain.txt4
-rw-r--r--arch/arm/mach-exynos/pm_domains.c8
2 files changed, 5 insertions, 7 deletions
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
index 6528e215c5fe..843b54622313 100644
--- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
+++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
@@ -9,10 +9,6 @@ Required Properties:
9- reg: physical base address of the controller and length of memory mapped 9- reg: physical base address of the controller and length of memory mapped
10 region. 10 region.
11 11
12Optional Properties:
13- samsung,exynos4210-pd-off: Specifies that the power domain is in turned-off
14 state during boot and remains to be turned-off until explicitly turned-on.
15
16Example: 12Example:
17 13
18 lcd0: power-domain-lcd0 { 14 lcd0: power-domain-lcd0 {
diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c
index c0bc83a7663e..d1abc1a94ecd 100644
--- a/arch/arm/mach-exynos/pm_domains.c
+++ b/arch/arm/mach-exynos/pm_domains.c
@@ -89,6 +89,7 @@ static __init int exynos_pm_dt_parse_domains(void)
89 89
90 for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") { 90 for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") {
91 struct exynos_pm_domain *pd; 91 struct exynos_pm_domain *pd;
92 int on;
92 93
93 pd = kzalloc(sizeof(*pd), GFP_KERNEL); 94 pd = kzalloc(sizeof(*pd), GFP_KERNEL);
94 if (!pd) { 95 if (!pd) {
@@ -97,14 +98,15 @@ static __init int exynos_pm_dt_parse_domains(void)
97 return -ENOMEM; 98 return -ENOMEM;
98 } 99 }
99 100
100 if (of_get_property(np, "samsung,exynos4210-pd-off", NULL))
101 pd->is_off = true;
102 pd->name = np->name; 101 pd->name = np->name;
103 pd->base = of_iomap(np, 0); 102 pd->base = of_iomap(np, 0);
104 pd->pd.power_off = exynos_pd_power_off; 103 pd->pd.power_off = exynos_pd_power_off;
105 pd->pd.power_on = exynos_pd_power_on; 104 pd->pd.power_on = exynos_pd_power_on;
106 pd->pd.of_node = np; 105 pd->pd.of_node = np;
107 pm_genpd_init(&pd->pd, NULL, false); 106
107 on = __raw_readl(pd->base + 0x4) & S5P_INT_LOCAL_PWR_EN;
108
109 pm_genpd_init(&pd->pd, NULL, !on);
108 } 110 }
109 return 0; 111 return 0;
110} 112}