diff options
-rw-r--r-- | Documentation/devicetree/bindings/arm/exynos/power_domain.txt | 4 | ||||
-rw-r--r-- | arch/arm/mach-exynos/pm_domains.c | 8 |
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 | ||
12 | Optional 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 | |||
16 | Example: | 12 | Example: |
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 | } |