aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2012-11-26 03:06:23 -0500
committerOlof Johansson <olof@lixom.net>2012-11-26 03:06:23 -0500
commitd408c5dcc524dfc8e687c443719a3d6be86e2ea0 (patch)
tree0fee3f9936e9950d3b0db7d4f466b2b89718a2bb /arch
parent8d2282a77bf0977e7033d8ea5970f369bc28f0f0 (diff)
parentd80162eccd56c40228e1232de8a203e8553b20a4 (diff)
Merge branch 'next/dt-samsung-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/dt
From Kukjin Kim: Here is second Samsung DT stuff for v3.8. This is including power domain DT support for exynos and Google ARM Chromebook, Snow board and exynos4210-origen updates. * 'next/dt-samsung-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung: ARM: dts: Use drive strength 3 for SD pins for exynos4 ARM: dts: Set up power domains for exynos4 ARM: EXYNOS: Bind devices to power domains using DT ARM: EXYNOS: Fix power domain name initialization ARM: EXYNOS: Detect power domain state on registration from DT ARM: dts: Add vmmc fixed voltage regulator for exynos4210-origen ARM: dts: Update sdhci nodes for current bindings for exynos4210-origen ARM: dts: Update for pinctrl-samsung driver for exynos4210-origen ARM: dts: Split memory sections for exynos4210-origen ARM: EXYNOS: add all i2c busses to auxdata for DT ARM: dts: Add aliases for i2c controller for exynos4 ARM: dts: Add board dts file for Snow board (ARM Chromebook) ARM: dts: Move the dwmmc aliases from smdk5250 dts to exynos Add/add conflicts resolved in arch/arm/boot/dts/exynos5250-smdk5250.dts and arch/arm/mach-exynos/mach-exynos5-dt.c. Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boot/dts/Makefile3
-rw-r--r--arch/arm/boot/dts/cros5250-common.dtsi184
-rw-r--r--arch/arm/boot/dts/exynos4.dtsi54
-rw-r--r--arch/arm/boot/dts/exynos4210-origen.dts54
-rw-r--r--arch/arm/boot/dts/exynos4210-pinctrl.dtsi56
-rw-r--r--arch/arm/boot/dts/exynos4210.dtsi5
-rw-r--r--arch/arm/boot/dts/exynos4x12-pinctrl.dtsi56
-rw-r--r--arch/arm/boot/dts/exynos5250-smdk5250.dts12
-rw-r--r--arch/arm/boot/dts/exynos5250-snow.dts43
-rw-r--r--arch/arm/boot/dts/exynos5250.dtsi12
-rw-r--r--arch/arm/mach-exynos/mach-exynos5-dt.c10
-rw-r--r--arch/arm/mach-exynos/pm_domains.c93
12 files changed, 474 insertions, 108 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 83faa72dc176..a31211904e91 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -26,7 +26,8 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
26 exynos4210-smdkv310.dtb \ 26 exynos4210-smdkv310.dtb \
27 exynos4210-trats.dtb \ 27 exynos4210-trats.dtb \
28 exynos4412-smdk4412.dtb \ 28 exynos4412-smdk4412.dtb \
29 exynos5250-smdk5250.dtb 29 exynos5250-smdk5250.dtb \
30 exynos5250-snow.dtb
30dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb 31dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
31dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ 32dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
32 integratorcp.dtb 33 integratorcp.dtb
diff --git a/arch/arm/boot/dts/cros5250-common.dtsi b/arch/arm/boot/dts/cros5250-common.dtsi
new file mode 100644
index 000000000000..fddd17417433
--- /dev/null
+++ b/arch/arm/boot/dts/cros5250-common.dtsi
@@ -0,0 +1,184 @@
1/*
2 * Common device tree include for all Exynos 5250 boards based off of Daisy.
3 *
4 * Copyright (c) 2012 Google, Inc
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9*/
10
11/ {
12 aliases {
13 };
14
15 memory {
16 reg = <0x40000000 0x80000000>;
17 };
18
19 chosen {
20 };
21
22 i2c@12C60000 {
23 samsung,i2c-sda-delay = <100>;
24 samsung,i2c-max-bus-freq = <378000>;
25 gpios = <&gpb3 0 2 3 0>,
26 <&gpb3 1 2 3 0>;
27 };
28
29 i2c@12C70000 {
30 samsung,i2c-sda-delay = <100>;
31 samsung,i2c-max-bus-freq = <378000>;
32 gpios = <&gpb3 2 2 3 0>,
33 <&gpb3 3 2 3 0>;
34 };
35
36 i2c@12C80000 {
37 samsung,i2c-sda-delay = <100>;
38 samsung,i2c-max-bus-freq = <66000>;
39
40 /*
41 * Disabled pullups since external part has its own pullups and
42 * double-pulling gets us out of spec in some cases.
43 */
44 gpios = <&gpa0 6 3 0 0>,
45 <&gpa0 7 3 0 0>;
46
47 hdmiddc@50 {
48 compatible = "samsung,exynos5-hdmiddc";
49 reg = <0x50>;
50 };
51 };
52
53 i2c@12C90000 {
54 samsung,i2c-sda-delay = <100>;
55 samsung,i2c-max-bus-freq = <66000>;
56 gpios = <&gpa1 2 3 3 0>,
57 <&gpa1 3 3 3 0>;
58 };
59
60 i2c@12CA0000 {
61 status = "disabled";
62 };
63
64 i2c@12CB0000 {
65 samsung,i2c-sda-delay = <100>;
66 samsung,i2c-max-bus-freq = <66000>;
67 gpios = <&gpa2 2 3 3 0>,
68 <&gpa2 3 3 3 0>;
69 };
70
71 i2c@12CC0000 {
72 status = "disabled";
73 };
74
75 i2c@12CD0000 {
76 samsung,i2c-sda-delay = <100>;
77 samsung,i2c-max-bus-freq = <66000>;
78 gpios = <&gpb2 2 3 3 0>,
79 <&gpb2 3 3 3 0>;
80 };
81
82 i2c@12CE0000 {
83 samsung,i2c-sda-delay = <100>;
84 samsung,i2c-max-bus-freq = <378000>;
85
86 hdmiphy@38 {
87 compatible = "samsung,exynos5-hdmiphy";
88 reg = <0x38>;
89 };
90 };
91
92 dwmmc0@12200000 {
93 num-slots = <1>;
94 supports-highspeed;
95 broken-cd;
96 fifo-depth = <0x80>;
97 card-detect-delay = <200>;
98 samsung,dw-mshc-ciu-div = <3>;
99 samsung,dw-mshc-sdr-timing = <2 3 3>;
100 samsung,dw-mshc-ddr-timing = <1 2 3>;
101
102 slot@0 {
103 reg = <0>;
104 bus-width = <8>;
105 gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>,
106 <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>,
107 <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>,
108 <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>,
109 <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>;
110 };
111 };
112
113 dwmmc1@12210000 {
114 status = "disabled";
115 };
116
117 dwmmc2@12220000 {
118 num-slots = <1>;
119 supports-highspeed;
120 fifo-depth = <0x80>;
121 card-detect-delay = <200>;
122 samsung,dw-mshc-ciu-div = <3>;
123 samsung,dw-mshc-sdr-timing = <2 3 3>;
124 samsung,dw-mshc-ddr-timing = <1 2 3>;
125
126 slot@0 {
127 reg = <0>;
128 bus-width = <4>;
129 samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>;
130 wp-gpios = <&gpc2 1 0 0 3>;
131 gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>,
132 <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>,
133 <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>;
134 };
135 };
136
137 dwmmc3@12230000 {
138 num-slots = <1>;
139 supports-highspeed;
140 broken-cd;
141 fifo-depth = <0x80>;
142 card-detect-delay = <200>;
143 samsung,dw-mshc-ciu-div = <3>;
144 samsung,dw-mshc-sdr-timing = <2 3 3>;
145 samsung,dw-mshc-ddr-timing = <1 2 3>;
146
147 slot@0 {
148 reg = <0>;
149 bus-width = <4>;
150 /* See board-specific dts files for GPIOs */
151 };
152 };
153
154 spi_0: spi@12d20000 {
155 status = "disabled";
156 };
157
158 spi_1: spi@12d30000 {
159 gpios = <&gpa2 4 2 3 0>,
160 <&gpa2 6 2 3 0>,
161 <&gpa2 7 2 3 0>;
162 samsung,spi-src-clk = <0>;
163 num-cs = <1>;
164 };
165
166 spi_2: spi@12d40000 {
167 status = "disabled";
168 };
169
170 hdmi {
171 hpd-gpio = <&gpx3 7 0xf 1 3>;
172 };
173
174 gpio-keys {
175 compatible = "gpio-keys";
176
177 power {
178 label = "Power";
179 gpios = <&gpx1 3 0 0x10000 0>;
180 linux,code = <116>; /* KEY_POWER */
181 gpio-key,wakeup;
182 };
183 };
184};
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index a26c3dd58269..3428f1a94dcc 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -28,6 +28,44 @@
28 spi0 = &spi_0; 28 spi0 = &spi_0;
29 spi1 = &spi_1; 29 spi1 = &spi_1;
30 spi2 = &spi_2; 30 spi2 = &spi_2;
31 i2c0 = &i2c_0;
32 i2c1 = &i2c_1;
33 i2c2 = &i2c_2;
34 i2c3 = &i2c_3;
35 i2c4 = &i2c_4;
36 i2c5 = &i2c_5;
37 i2c6 = &i2c_6;
38 i2c7 = &i2c_7;
39 };
40
41 pd_mfc: mfc-power-domain@10023C40 {
42 compatible = "samsung,exynos4210-pd";
43 reg = <0x10023C40 0x20>;
44 };
45
46 pd_g3d: g3d-power-domain@10023C60 {
47 compatible = "samsung,exynos4210-pd";
48 reg = <0x10023C60 0x20>;
49 };
50
51 pd_lcd0: lcd0-power-domain@10023C80 {
52 compatible = "samsung,exynos4210-pd";
53 reg = <0x10023C80 0x20>;
54 };
55
56 pd_tv: tv-power-domain@10023C20 {
57 compatible = "samsung,exynos4210-pd";
58 reg = <0x10023C20 0x20>;
59 };
60
61 pd_cam: cam-power-domain@10023C00 {
62 compatible = "samsung,exynos4210-pd";
63 reg = <0x10023C00 0x20>;
64 };
65
66 pd_gps: gps-power-domain@10023CE0 {
67 compatible = "samsung,exynos4210-pd";
68 reg = <0x10023CE0 0x20>;
31 }; 69 };
32 70
33 gic:interrupt-controller@10490000 { 71 gic:interrupt-controller@10490000 {
@@ -121,7 +159,7 @@
121 status = "disabled"; 159 status = "disabled";
122 }; 160 };
123 161
124 i2c@13860000 { 162 i2c_0: i2c@13860000 {
125 #address-cells = <1>; 163 #address-cells = <1>;
126 #size-cells = <0>; 164 #size-cells = <0>;
127 compatible = "samsung,s3c2440-i2c"; 165 compatible = "samsung,s3c2440-i2c";
@@ -130,7 +168,7 @@
130 status = "disabled"; 168 status = "disabled";
131 }; 169 };
132 170
133 i2c@13870000 { 171 i2c_1: i2c@13870000 {
134 #address-cells = <1>; 172 #address-cells = <1>;
135 #size-cells = <0>; 173 #size-cells = <0>;
136 compatible = "samsung,s3c2440-i2c"; 174 compatible = "samsung,s3c2440-i2c";
@@ -139,7 +177,7 @@
139 status = "disabled"; 177 status = "disabled";
140 }; 178 };
141 179
142 i2c@13880000 { 180 i2c_2: i2c@13880000 {
143 #address-cells = <1>; 181 #address-cells = <1>;
144 #size-cells = <0>; 182 #size-cells = <0>;
145 compatible = "samsung,s3c2440-i2c"; 183 compatible = "samsung,s3c2440-i2c";
@@ -148,7 +186,7 @@
148 status = "disabled"; 186 status = "disabled";
149 }; 187 };
150 188
151 i2c@13890000 { 189 i2c_3: i2c@13890000 {
152 #address-cells = <1>; 190 #address-cells = <1>;
153 #size-cells = <0>; 191 #size-cells = <0>;
154 compatible = "samsung,s3c2440-i2c"; 192 compatible = "samsung,s3c2440-i2c";
@@ -157,7 +195,7 @@
157 status = "disabled"; 195 status = "disabled";
158 }; 196 };
159 197
160 i2c@138A0000 { 198 i2c_4: i2c@138A0000 {
161 #address-cells = <1>; 199 #address-cells = <1>;
162 #size-cells = <0>; 200 #size-cells = <0>;
163 compatible = "samsung,s3c2440-i2c"; 201 compatible = "samsung,s3c2440-i2c";
@@ -166,7 +204,7 @@
166 status = "disabled"; 204 status = "disabled";
167 }; 205 };
168 206
169 i2c@138B0000 { 207 i2c_5: i2c@138B0000 {
170 #address-cells = <1>; 208 #address-cells = <1>;
171 #size-cells = <0>; 209 #size-cells = <0>;
172 compatible = "samsung,s3c2440-i2c"; 210 compatible = "samsung,s3c2440-i2c";
@@ -175,7 +213,7 @@
175 status = "disabled"; 213 status = "disabled";
176 }; 214 };
177 215
178 i2c@138C0000 { 216 i2c_6: i2c@138C0000 {
179 #address-cells = <1>; 217 #address-cells = <1>;
180 #size-cells = <0>; 218 #size-cells = <0>;
181 compatible = "samsung,s3c2440-i2c"; 219 compatible = "samsung,s3c2440-i2c";
@@ -184,7 +222,7 @@
184 status = "disabled"; 222 status = "disabled";
185 }; 223 };
186 224
187 i2c@138D0000 { 225 i2c_7: i2c@138D0000 {
188 #address-cells = <1>; 226 #address-cells = <1>;
189 #size-cells = <0>; 227 #size-cells = <0>;
190 compatible = "samsung,s3c2440-i2c"; 228 compatible = "samsung,s3c2440-i2c";
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts
index f16c99f2f0fc..f2710018e84e 100644
--- a/arch/arm/boot/dts/exynos4210-origen.dts
+++ b/arch/arm/boot/dts/exynos4210-origen.dts
@@ -22,38 +22,38 @@
22 compatible = "insignal,origen", "samsung,exynos4210"; 22 compatible = "insignal,origen", "samsung,exynos4210";
23 23
24 memory { 24 memory {
25 reg = <0x40000000 0x40000000>; 25 reg = <0x40000000 0x10000000
26 0x50000000 0x10000000
27 0x60000000 0x10000000
28 0x70000000 0x10000000>;
26 }; 29 };
27 30
28 chosen { 31 chosen {
29 bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc"; 32 bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
30 }; 33 };
31 34
35 mmc_reg: voltage-regulator {
36 compatible = "regulator-fixed";
37 regulator-name = "VMEM_VDD_2.8V";
38 regulator-min-microvolt = <2800000>;
39 regulator-max-microvolt = <2800000>;
40 gpio = <&gpx1 1 0>;
41 enable-active-high;
42 };
43
32 sdhci@12530000 { 44 sdhci@12530000 {
33 samsung,sdhci-bus-width = <4>; 45 bus-width = <4>;
34 linux,mmc_cap_4_bit_data; 46 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
35 samsung,sdhci-cd-internal; 47 pinctrl-names = "default";
36 gpio-cd = <&gpk2 2 2 3 3>; 48 vmmc-supply = <&mmc_reg>;
37 gpios = <&gpk2 0 2 0 3>,
38 <&gpk2 1 2 0 3>,
39 <&gpk2 3 2 3 3>,
40 <&gpk2 4 2 3 3>,
41 <&gpk2 5 2 3 3>,
42 <&gpk2 6 2 3 3>;
43 status = "okay"; 49 status = "okay";
44 }; 50 };
45 51
46 sdhci@12510000 { 52 sdhci@12510000 {
47 samsung,sdhci-bus-width = <4>; 53 bus-width = <4>;
48 linux,mmc_cap_4_bit_data; 54 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_cd>;
49 samsung,sdhci-cd-internal; 55 pinctrl-names = "default";
50 gpio-cd = <&gpk0 2 2 3 3>; 56 vmmc-supply = <&mmc_reg>;
51 gpios = <&gpk0 0 2 0 3>,
52 <&gpk0 1 2 0 3>,
53 <&gpk0 3 2 3 3>,
54 <&gpk0 4 2 3 3>,
55 <&gpk0 5 2 3 3>,
56 <&gpk0 6 2 3 3>;
57 status = "okay"; 57 status = "okay";
58 }; 58 };
59 59
@@ -80,35 +80,35 @@
80 80
81 up { 81 up {
82 label = "Up"; 82 label = "Up";
83 gpios = <&gpx2 0 0 0x10000 2>; 83 gpios = <&gpx2 0 1>;
84 linux,code = <103>; 84 linux,code = <103>;
85 gpio-key,wakeup; 85 gpio-key,wakeup;
86 }; 86 };
87 87
88 down { 88 down {
89 label = "Down"; 89 label = "Down";
90 gpios = <&gpx2 1 0 0x10000 2>; 90 gpios = <&gpx2 1 1>;
91 linux,code = <108>; 91 linux,code = <108>;
92 gpio-key,wakeup; 92 gpio-key,wakeup;
93 }; 93 };
94 94
95 back { 95 back {
96 label = "Back"; 96 label = "Back";
97 gpios = <&gpx1 7 0 0x10000 2>; 97 gpios = <&gpx1 7 1>;
98 linux,code = <158>; 98 linux,code = <158>;
99 gpio-key,wakeup; 99 gpio-key,wakeup;
100 }; 100 };
101 101
102 home { 102 home {
103 label = "Home"; 103 label = "Home";
104 gpios = <&gpx1 6 0 0x10000 2>; 104 gpios = <&gpx1 6 1>;
105 linux,code = <102>; 105 linux,code = <102>;
106 gpio-key,wakeup; 106 gpio-key,wakeup;
107 }; 107 };
108 108
109 menu { 109 menu {
110 label = "Menu"; 110 label = "Menu";
111 gpios = <&gpx1 5 0 0x10000 2>; 111 gpios = <&gpx1 5 1>;
112 linux,code = <139>; 112 linux,code = <139>;
113 gpio-key,wakeup; 113 gpio-key,wakeup;
114 }; 114 };
@@ -117,7 +117,7 @@
117 leds { 117 leds {
118 compatible = "gpio-leds"; 118 compatible = "gpio-leds";
119 status { 119 status {
120 gpios = <&gpx1 3 0 0x10000 2>; 120 gpios = <&gpx1 3 1>;
121 linux,default-trigger = "heartbeat"; 121 linux,default-trigger = "heartbeat";
122 }; 122 };
123 }; 123 };
diff --git a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi
index 6a4a1a04221c..55a2efb763d1 100644
--- a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi
+++ b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi
@@ -482,196 +482,196 @@
482 samsung,pins = "gpk0-0"; 482 samsung,pins = "gpk0-0";
483 samsung,pin-function = <2>; 483 samsung,pin-function = <2>;
484 samsung,pin-pud = <0>; 484 samsung,pin-pud = <0>;
485 samsung,pin-drv = <0>; 485 samsung,pin-drv = <3>;
486 }; 486 };
487 487
488 sd0_cmd: sd0-cmd { 488 sd0_cmd: sd0-cmd {
489 samsung,pins = "gpk0-1"; 489 samsung,pins = "gpk0-1";
490 samsung,pin-function = <2>; 490 samsung,pin-function = <2>;
491 samsung,pin-pud = <0>; 491 samsung,pin-pud = <0>;
492 samsung,pin-drv = <0>; 492 samsung,pin-drv = <3>;
493 }; 493 };
494 494
495 sd0_cd: sd0-cd { 495 sd0_cd: sd0-cd {
496 samsung,pins = "gpk0-2"; 496 samsung,pins = "gpk0-2";
497 samsung,pin-function = <2>; 497 samsung,pin-function = <2>;
498 samsung,pin-pud = <3>; 498 samsung,pin-pud = <3>;
499 samsung,pin-drv = <0>; 499 samsung,pin-drv = <3>;
500 }; 500 };
501 501
502 sd0_bus1: sd0-bus-width1 { 502 sd0_bus1: sd0-bus-width1 {
503 samsung,pins = "gpk0-3"; 503 samsung,pins = "gpk0-3";
504 samsung,pin-function = <2>; 504 samsung,pin-function = <2>;
505 samsung,pin-pud = <3>; 505 samsung,pin-pud = <3>;
506 samsung,pin-drv = <0>; 506 samsung,pin-drv = <3>;
507 }; 507 };
508 508
509 sd0_bus4: sd0-bus-width4 { 509 sd0_bus4: sd0-bus-width4 {
510 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; 510 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
511 samsung,pin-function = <2>; 511 samsung,pin-function = <2>;
512 samsung,pin-pud = <3>; 512 samsung,pin-pud = <3>;
513 samsung,pin-drv = <0>; 513 samsung,pin-drv = <3>;
514 }; 514 };
515 515
516 sd0_bus8: sd0-bus-width8 { 516 sd0_bus8: sd0-bus-width8 {
517 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; 517 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
518 samsung,pin-function = <3>; 518 samsung,pin-function = <3>;
519 samsung,pin-pud = <3>; 519 samsung,pin-pud = <3>;
520 samsung,pin-drv = <0>; 520 samsung,pin-drv = <3>;
521 }; 521 };
522 522
523 sd4_clk: sd4-clk { 523 sd4_clk: sd4-clk {
524 samsung,pins = "gpk0-0"; 524 samsung,pins = "gpk0-0";
525 samsung,pin-function = <3>; 525 samsung,pin-function = <3>;
526 samsung,pin-pud = <0>; 526 samsung,pin-pud = <0>;
527 samsung,pin-drv = <0>; 527 samsung,pin-drv = <3>;
528 }; 528 };
529 529
530 sd4_cmd: sd4-cmd { 530 sd4_cmd: sd4-cmd {
531 samsung,pins = "gpk0-1"; 531 samsung,pins = "gpk0-1";
532 samsung,pin-function = <3>; 532 samsung,pin-function = <3>;
533 samsung,pin-pud = <0>; 533 samsung,pin-pud = <0>;
534 samsung,pin-drv = <0>; 534 samsung,pin-drv = <3>;
535 }; 535 };
536 536
537 sd4_cd: sd4-cd { 537 sd4_cd: sd4-cd {
538 samsung,pins = "gpk0-2"; 538 samsung,pins = "gpk0-2";
539 samsung,pin-function = <3>; 539 samsung,pin-function = <3>;
540 samsung,pin-pud = <3>; 540 samsung,pin-pud = <3>;
541 samsung,pin-drv = <0>; 541 samsung,pin-drv = <3>;
542 }; 542 };
543 543
544 sd4_bus1: sd4-bus-width1 { 544 sd4_bus1: sd4-bus-width1 {
545 samsung,pins = "gpk0-3"; 545 samsung,pins = "gpk0-3";
546 samsung,pin-function = <3>; 546 samsung,pin-function = <3>;
547 samsung,pin-pud = <3>; 547 samsung,pin-pud = <3>;
548 samsung,pin-drv = <0>; 548 samsung,pin-drv = <3>;
549 }; 549 };
550 550
551 sd4_bus4: sd4-bus-width4 { 551 sd4_bus4: sd4-bus-width4 {
552 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; 552 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
553 samsung,pin-function = <3>; 553 samsung,pin-function = <3>;
554 samsung,pin-pud = <3>; 554 samsung,pin-pud = <3>;
555 samsung,pin-drv = <0>; 555 samsung,pin-drv = <3>;
556 }; 556 };
557 557
558 sd4_bus8: sd4-bus-width8 { 558 sd4_bus8: sd4-bus-width8 {
559 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; 559 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
560 samsung,pin-function = <3>; 560 samsung,pin-function = <3>;
561 samsung,pin-pud = <4>; 561 samsung,pin-pud = <4>;
562 samsung,pin-drv = <0>; 562 samsung,pin-drv = <3>;
563 }; 563 };
564 564
565 sd1_clk: sd1-clk { 565 sd1_clk: sd1-clk {
566 samsung,pins = "gpk1-0"; 566 samsung,pins = "gpk1-0";
567 samsung,pin-function = <2>; 567 samsung,pin-function = <2>;
568 samsung,pin-pud = <0>; 568 samsung,pin-pud = <0>;
569 samsung,pin-drv = <0>; 569 samsung,pin-drv = <3>;
570 }; 570 };
571 571
572 sd1_cmd: sd1-cmd { 572 sd1_cmd: sd1-cmd {
573 samsung,pins = "gpk1-1"; 573 samsung,pins = "gpk1-1";
574 samsung,pin-function = <2>; 574 samsung,pin-function = <2>;
575 samsung,pin-pud = <0>; 575 samsung,pin-pud = <0>;
576 samsung,pin-drv = <0>; 576 samsung,pin-drv = <3>;
577 }; 577 };
578 578
579 sd1_cd: sd1-cd { 579 sd1_cd: sd1-cd {
580 samsung,pins = "gpk1-2"; 580 samsung,pins = "gpk1-2";
581 samsung,pin-function = <2>; 581 samsung,pin-function = <2>;
582 samsung,pin-pud = <3>; 582 samsung,pin-pud = <3>;
583 samsung,pin-drv = <0>; 583 samsung,pin-drv = <3>;
584 }; 584 };
585 585
586 sd1_bus1: sd1-bus-width1 { 586 sd1_bus1: sd1-bus-width1 {
587 samsung,pins = "gpk1-3"; 587 samsung,pins = "gpk1-3";
588 samsung,pin-function = <2>; 588 samsung,pin-function = <2>;
589 samsung,pin-pud = <3>; 589 samsung,pin-pud = <3>;
590 samsung,pin-drv = <0>; 590 samsung,pin-drv = <3>;
591 }; 591 };
592 592
593 sd1_bus4: sd1-bus-width4 { 593 sd1_bus4: sd1-bus-width4 {
594 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; 594 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
595 samsung,pin-function = <2>; 595 samsung,pin-function = <2>;
596 samsung,pin-pud = <3>; 596 samsung,pin-pud = <3>;
597 samsung,pin-drv = <0>; 597 samsung,pin-drv = <3>;
598 }; 598 };
599 599
600 sd2_clk: sd2-clk { 600 sd2_clk: sd2-clk {
601 samsung,pins = "gpk2-0"; 601 samsung,pins = "gpk2-0";
602 samsung,pin-function = <2>; 602 samsung,pin-function = <2>;
603 samsung,pin-pud = <0>; 603 samsung,pin-pud = <0>;
604 samsung,pin-drv = <0>; 604 samsung,pin-drv = <3>;
605 }; 605 };
606 606
607 sd2_cmd: sd2-cmd { 607 sd2_cmd: sd2-cmd {
608 samsung,pins = "gpk2-1"; 608 samsung,pins = "gpk2-1";
609 samsung,pin-function = <2>; 609 samsung,pin-function = <2>;
610 samsung,pin-pud = <0>; 610 samsung,pin-pud = <0>;
611 samsung,pin-drv = <0>; 611 samsung,pin-drv = <3>;
612 }; 612 };
613 613
614 sd2_cd: sd2-cd { 614 sd2_cd: sd2-cd {
615 samsung,pins = "gpk2-2"; 615 samsung,pins = "gpk2-2";
616 samsung,pin-function = <2>; 616 samsung,pin-function = <2>;
617 samsung,pin-pud = <3>; 617 samsung,pin-pud = <3>;
618 samsung,pin-drv = <0>; 618 samsung,pin-drv = <3>;
619 }; 619 };
620 620
621 sd2_bus1: sd2-bus-width1 { 621 sd2_bus1: sd2-bus-width1 {
622 samsung,pins = "gpk2-3"; 622 samsung,pins = "gpk2-3";
623 samsung,pin-function = <2>; 623 samsung,pin-function = <2>;
624 samsung,pin-pud = <3>; 624 samsung,pin-pud = <3>;
625 samsung,pin-drv = <0>; 625 samsung,pin-drv = <3>;
626 }; 626 };
627 627
628 sd2_bus4: sd2-bus-width4 { 628 sd2_bus4: sd2-bus-width4 {
629 samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6"; 629 samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6";
630 samsung,pin-function = <2>; 630 samsung,pin-function = <2>;
631 samsung,pin-pud = <3>; 631 samsung,pin-pud = <3>;
632 samsung,pin-drv = <0>; 632 samsung,pin-drv = <3>;
633 }; 633 };
634 634
635 sd2_bus8: sd2-bus-width8 { 635 sd2_bus8: sd2-bus-width8 {
636 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; 636 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
637 samsung,pin-function = <3>; 637 samsung,pin-function = <3>;
638 samsung,pin-pud = <3>; 638 samsung,pin-pud = <3>;
639 samsung,pin-drv = <0>; 639 samsung,pin-drv = <3>;
640 }; 640 };
641 641
642 sd3_clk: sd3-clk { 642 sd3_clk: sd3-clk {
643 samsung,pins = "gpk3-0"; 643 samsung,pins = "gpk3-0";
644 samsung,pin-function = <2>; 644 samsung,pin-function = <2>;
645 samsung,pin-pud = <0>; 645 samsung,pin-pud = <0>;
646 samsung,pin-drv = <0>; 646 samsung,pin-drv = <3>;
647 }; 647 };
648 648
649 sd3_cmd: sd3-cmd { 649 sd3_cmd: sd3-cmd {
650 samsung,pins = "gpk3-1"; 650 samsung,pins = "gpk3-1";
651 samsung,pin-function = <2>; 651 samsung,pin-function = <2>;
652 samsung,pin-pud = <0>; 652 samsung,pin-pud = <0>;
653 samsung,pin-drv = <0>; 653 samsung,pin-drv = <3>;
654 }; 654 };
655 655
656 sd3_cd: sd3-cd { 656 sd3_cd: sd3-cd {
657 samsung,pins = "gpk3-2"; 657 samsung,pins = "gpk3-2";
658 samsung,pin-function = <2>; 658 samsung,pin-function = <2>;
659 samsung,pin-pud = <3>; 659 samsung,pin-pud = <3>;
660 samsung,pin-drv = <0>; 660 samsung,pin-drv = <3>;
661 }; 661 };
662 662
663 sd3_bus1: sd3-bus-width1 { 663 sd3_bus1: sd3-bus-width1 {
664 samsung,pins = "gpk3-3"; 664 samsung,pins = "gpk3-3";
665 samsung,pin-function = <2>; 665 samsung,pin-function = <2>;
666 samsung,pin-pud = <3>; 666 samsung,pin-pud = <3>;
667 samsung,pin-drv = <0>; 667 samsung,pin-drv = <3>;
668 }; 668 };
669 669
670 sd3_bus4: sd3-bus-width4 { 670 sd3_bus4: sd3-bus-width4 {
671 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; 671 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
672 samsung,pin-function = <2>; 672 samsung,pin-function = <2>;
673 samsung,pin-pud = <3>; 673 samsung,pin-pud = <3>;
674 samsung,pin-drv = <0>; 674 samsung,pin-drv = <3>;
675 }; 675 };
676 676
677 eint0: ext-int0 { 677 eint0: ext-int0 {
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi
index 939f6399c9c7..e31bfc4a6f09 100644
--- a/arch/arm/boot/dts/exynos4210.dtsi
+++ b/arch/arm/boot/dts/exynos4210.dtsi
@@ -31,6 +31,11 @@
31 pinctrl2 = &pinctrl_2; 31 pinctrl2 = &pinctrl_2;
32 }; 32 };
33 33
34 pd_lcd1: lcd1-power-domain@10023CA0 {
35 compatible = "samsung,exynos4210-pd";
36 reg = <0x10023CA0 0x20>;
37 };
38
34 gic:interrupt-controller@10490000 { 39 gic:interrupt-controller@10490000 {
35 cpu-offset = <0x8000>; 40 cpu-offset = <0x8000>;
36 }; 41 };
diff --git a/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi b/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi
index 56f4669cecc1..8e6115adcd97 100644
--- a/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi
+++ b/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi
@@ -586,196 +586,196 @@
586 samsung,pins = "gpk0-0"; 586 samsung,pins = "gpk0-0";
587 samsung,pin-function = <2>; 587 samsung,pin-function = <2>;
588 samsung,pin-pud = <0>; 588 samsung,pin-pud = <0>;
589 samsung,pin-drv = <0>; 589 samsung,pin-drv = <3>;
590 }; 590 };
591 591
592 sd0_cmd: sd0-cmd { 592 sd0_cmd: sd0-cmd {
593 samsung,pins = "gpk0-1"; 593 samsung,pins = "gpk0-1";
594 samsung,pin-function = <2>; 594 samsung,pin-function = <2>;
595 samsung,pin-pud = <0>; 595 samsung,pin-pud = <0>;
596 samsung,pin-drv = <0>; 596 samsung,pin-drv = <3>;
597 }; 597 };
598 598
599 sd0_cd: sd0-cd { 599 sd0_cd: sd0-cd {
600 samsung,pins = "gpk0-2"; 600 samsung,pins = "gpk0-2";
601 samsung,pin-function = <2>; 601 samsung,pin-function = <2>;
602 samsung,pin-pud = <3>; 602 samsung,pin-pud = <3>;
603 samsung,pin-drv = <0>; 603 samsung,pin-drv = <3>;
604 }; 604 };
605 605
606 sd0_bus1: sd0-bus-width1 { 606 sd0_bus1: sd0-bus-width1 {
607 samsung,pins = "gpk0-3"; 607 samsung,pins = "gpk0-3";
608 samsung,pin-function = <2>; 608 samsung,pin-function = <2>;
609 samsung,pin-pud = <3>; 609 samsung,pin-pud = <3>;
610 samsung,pin-drv = <0>; 610 samsung,pin-drv = <3>;
611 }; 611 };
612 612
613 sd0_bus4: sd0-bus-width4 { 613 sd0_bus4: sd0-bus-width4 {
614 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; 614 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
615 samsung,pin-function = <2>; 615 samsung,pin-function = <2>;
616 samsung,pin-pud = <3>; 616 samsung,pin-pud = <3>;
617 samsung,pin-drv = <0>; 617 samsung,pin-drv = <3>;
618 }; 618 };
619 619
620 sd0_bus8: sd0-bus-width8 { 620 sd0_bus8: sd0-bus-width8 {
621 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; 621 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
622 samsung,pin-function = <3>; 622 samsung,pin-function = <3>;
623 samsung,pin-pud = <3>; 623 samsung,pin-pud = <3>;
624 samsung,pin-drv = <0>; 624 samsung,pin-drv = <3>;
625 }; 625 };
626 626
627 sd4_clk: sd4-clk { 627 sd4_clk: sd4-clk {
628 samsung,pins = "gpk0-0"; 628 samsung,pins = "gpk0-0";
629 samsung,pin-function = <3>; 629 samsung,pin-function = <3>;
630 samsung,pin-pud = <0>; 630 samsung,pin-pud = <0>;
631 samsung,pin-drv = <0>; 631 samsung,pin-drv = <3>;
632 }; 632 };
633 633
634 sd4_cmd: sd4-cmd { 634 sd4_cmd: sd4-cmd {
635 samsung,pins = "gpk0-1"; 635 samsung,pins = "gpk0-1";
636 samsung,pin-function = <3>; 636 samsung,pin-function = <3>;
637 samsung,pin-pud = <0>; 637 samsung,pin-pud = <0>;
638 samsung,pin-drv = <0>; 638 samsung,pin-drv = <3>;
639 }; 639 };
640 640
641 sd4_cd: sd4-cd { 641 sd4_cd: sd4-cd {
642 samsung,pins = "gpk0-2"; 642 samsung,pins = "gpk0-2";
643 samsung,pin-function = <3>; 643 samsung,pin-function = <3>;
644 samsung,pin-pud = <3>; 644 samsung,pin-pud = <3>;
645 samsung,pin-drv = <0>; 645 samsung,pin-drv = <3>;
646 }; 646 };
647 647
648 sd4_bus1: sd4-bus-width1 { 648 sd4_bus1: sd4-bus-width1 {
649 samsung,pins = "gpk0-3"; 649 samsung,pins = "gpk0-3";
650 samsung,pin-function = <3>; 650 samsung,pin-function = <3>;
651 samsung,pin-pud = <3>; 651 samsung,pin-pud = <3>;
652 samsung,pin-drv = <0>; 652 samsung,pin-drv = <3>;
653 }; 653 };
654 654
655 sd4_bus4: sd4-bus-width4 { 655 sd4_bus4: sd4-bus-width4 {
656 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; 656 samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
657 samsung,pin-function = <3>; 657 samsung,pin-function = <3>;
658 samsung,pin-pud = <3>; 658 samsung,pin-pud = <3>;
659 samsung,pin-drv = <0>; 659 samsung,pin-drv = <3>;
660 }; 660 };
661 661
662 sd4_bus8: sd4-bus-width8 { 662 sd4_bus8: sd4-bus-width8 {
663 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; 663 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
664 samsung,pin-function = <3>; 664 samsung,pin-function = <3>;
665 samsung,pin-pud = <4>; 665 samsung,pin-pud = <4>;
666 samsung,pin-drv = <0>; 666 samsung,pin-drv = <3>;
667 }; 667 };
668 668
669 sd1_clk: sd1-clk { 669 sd1_clk: sd1-clk {
670 samsung,pins = "gpk1-0"; 670 samsung,pins = "gpk1-0";
671 samsung,pin-function = <2>; 671 samsung,pin-function = <2>;
672 samsung,pin-pud = <0>; 672 samsung,pin-pud = <0>;
673 samsung,pin-drv = <0>; 673 samsung,pin-drv = <3>;
674 }; 674 };
675 675
676 sd1_cmd: sd1-cmd { 676 sd1_cmd: sd1-cmd {
677 samsung,pins = "gpk1-1"; 677 samsung,pins = "gpk1-1";
678 samsung,pin-function = <2>; 678 samsung,pin-function = <2>;
679 samsung,pin-pud = <0>; 679 samsung,pin-pud = <0>;
680 samsung,pin-drv = <0>; 680 samsung,pin-drv = <3>;
681 }; 681 };
682 682
683 sd1_cd: sd1-cd { 683 sd1_cd: sd1-cd {
684 samsung,pins = "gpk1-2"; 684 samsung,pins = "gpk1-2";
685 samsung,pin-function = <2>; 685 samsung,pin-function = <2>;
686 samsung,pin-pud = <3>; 686 samsung,pin-pud = <3>;
687 samsung,pin-drv = <0>; 687 samsung,pin-drv = <3>;
688 }; 688 };
689 689
690 sd1_bus1: sd1-bus-width1 { 690 sd1_bus1: sd1-bus-width1 {
691 samsung,pins = "gpk1-3"; 691 samsung,pins = "gpk1-3";
692 samsung,pin-function = <2>; 692 samsung,pin-function = <2>;
693 samsung,pin-pud = <3>; 693 samsung,pin-pud = <3>;
694 samsung,pin-drv = <0>; 694 samsung,pin-drv = <3>;
695 }; 695 };
696 696
697 sd1_bus4: sd1-bus-width4 { 697 sd1_bus4: sd1-bus-width4 {
698 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; 698 samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
699 samsung,pin-function = <2>; 699 samsung,pin-function = <2>;
700 samsung,pin-pud = <3>; 700 samsung,pin-pud = <3>;
701 samsung,pin-drv = <0>; 701 samsung,pin-drv = <3>;
702 }; 702 };
703 703
704 sd2_clk: sd2-clk { 704 sd2_clk: sd2-clk {
705 samsung,pins = "gpk2-0"; 705 samsung,pins = "gpk2-0";
706 samsung,pin-function = <2>; 706 samsung,pin-function = <2>;
707 samsung,pin-pud = <0>; 707 samsung,pin-pud = <0>;
708 samsung,pin-drv = <0>; 708 samsung,pin-drv = <3>;
709 }; 709 };
710 710
711 sd2_cmd: sd2-cmd { 711 sd2_cmd: sd2-cmd {
712 samsung,pins = "gpk2-1"; 712 samsung,pins = "gpk2-1";
713 samsung,pin-function = <2>; 713 samsung,pin-function = <2>;
714 samsung,pin-pud = <0>; 714 samsung,pin-pud = <0>;
715 samsung,pin-drv = <0>; 715 samsung,pin-drv = <3>;
716 }; 716 };
717 717
718 sd2_cd: sd2-cd { 718 sd2_cd: sd2-cd {
719 samsung,pins = "gpk2-2"; 719 samsung,pins = "gpk2-2";
720 samsung,pin-function = <2>; 720 samsung,pin-function = <2>;
721 samsung,pin-pud = <3>; 721 samsung,pin-pud = <3>;
722 samsung,pin-drv = <0>; 722 samsung,pin-drv = <3>;
723 }; 723 };
724 724
725 sd2_bus1: sd2-bus-width1 { 725 sd2_bus1: sd2-bus-width1 {
726 samsung,pins = "gpk2-3"; 726 samsung,pins = "gpk2-3";
727 samsung,pin-function = <2>; 727 samsung,pin-function = <2>;
728 samsung,pin-pud = <3>; 728 samsung,pin-pud = <3>;
729 samsung,pin-drv = <0>; 729 samsung,pin-drv = <3>;
730 }; 730 };
731 731
732 sd2_bus4: sd2-bus-width4 { 732 sd2_bus4: sd2-bus-width4 {
733 samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6"; 733 samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6";
734 samsung,pin-function = <2>; 734 samsung,pin-function = <2>;
735 samsung,pin-pud = <3>; 735 samsung,pin-pud = <3>;
736 samsung,pin-drv = <0>; 736 samsung,pin-drv = <3>;
737 }; 737 };
738 738
739 sd2_bus8: sd2-bus-width8 { 739 sd2_bus8: sd2-bus-width8 {
740 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; 740 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
741 samsung,pin-function = <3>; 741 samsung,pin-function = <3>;
742 samsung,pin-pud = <3>; 742 samsung,pin-pud = <3>;
743 samsung,pin-drv = <0>; 743 samsung,pin-drv = <3>;
744 }; 744 };
745 745
746 sd3_clk: sd3-clk { 746 sd3_clk: sd3-clk {
747 samsung,pins = "gpk3-0"; 747 samsung,pins = "gpk3-0";
748 samsung,pin-function = <2>; 748 samsung,pin-function = <2>;
749 samsung,pin-pud = <0>; 749 samsung,pin-pud = <0>;
750 samsung,pin-drv = <0>; 750 samsung,pin-drv = <3>;
751 }; 751 };
752 752
753 sd3_cmd: sd3-cmd { 753 sd3_cmd: sd3-cmd {
754 samsung,pins = "gpk3-1"; 754 samsung,pins = "gpk3-1";
755 samsung,pin-function = <2>; 755 samsung,pin-function = <2>;
756 samsung,pin-pud = <0>; 756 samsung,pin-pud = <0>;
757 samsung,pin-drv = <0>; 757 samsung,pin-drv = <3>;
758 }; 758 };
759 759
760 sd3_cd: sd3-cd { 760 sd3_cd: sd3-cd {
761 samsung,pins = "gpk3-2"; 761 samsung,pins = "gpk3-2";
762 samsung,pin-function = <2>; 762 samsung,pin-function = <2>;
763 samsung,pin-pud = <3>; 763 samsung,pin-pud = <3>;
764 samsung,pin-drv = <0>; 764 samsung,pin-drv = <3>;
765 }; 765 };
766 766
767 sd3_bus1: sd3-bus-width1 { 767 sd3_bus1: sd3-bus-width1 {
768 samsung,pins = "gpk3-3"; 768 samsung,pins = "gpk3-3";
769 samsung,pin-function = <2>; 769 samsung,pin-function = <2>;
770 samsung,pin-pud = <3>; 770 samsung,pin-pud = <3>;
771 samsung,pin-drv = <0>; 771 samsung,pin-drv = <3>;
772 }; 772 };
773 773
774 sd3_bus4: sd3-bus-width4 { 774 sd3_bus4: sd3-bus-width4 {
775 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; 775 samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
776 samsung,pin-function = <2>; 776 samsung,pin-function = <2>;
777 samsung,pin-pud = <3>; 777 samsung,pin-pud = <3>;
778 samsung,pin-drv = <0>; 778 samsung,pin-drv = <3>;
779 }; 779 };
780 780
781 keypad_col0: keypad-col0 { 781 keypad_col0: keypad-col0 {
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts
index 29f133371c11..942d5761ca97 100644
--- a/arch/arm/boot/dts/exynos5250-smdk5250.dts
+++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts
@@ -17,10 +17,6 @@
17 compatible = "samsung,smdk5250", "samsung,exynos5250"; 17 compatible = "samsung,smdk5250", "samsung,exynos5250";
18 18
19 aliases { 19 aliases {
20 mshc0 = &dwmmc_0;
21 mshc1 = &dwmmc_1;
22 mshc2 = &dwmmc_2;
23 mshc3 = &dwmmc_3;
24 }; 20 };
25 21
26 memory { 22 memory {
@@ -112,7 +108,7 @@
112 }; 108 };
113 }; 109 };
114 110
115 dwmmc_0: dwmmc0@12200000 { 111 dwmmc0@12200000 {
116 num-slots = <1>; 112 num-slots = <1>;
117 supports-highspeed; 113 supports-highspeed;
118 broken-cd; 114 broken-cd;
@@ -133,11 +129,11 @@
133 }; 129 };
134 }; 130 };
135 131
136 dwmmc_1: dwmmc1@12210000 { 132 dwmmc1@12210000 {
137 status = "disabled"; 133 status = "disabled";
138 }; 134 };
139 135
140 dwmmc_2: dwmmc2@12220000 { 136 dwmmc2@12220000 {
141 num-slots = <1>; 137 num-slots = <1>;
142 supports-highspeed; 138 supports-highspeed;
143 fifo-depth = <0x80>; 139 fifo-depth = <0x80>;
@@ -158,7 +154,7 @@
158 }; 154 };
159 }; 155 };
160 156
161 dwmmc_3: dwmmc3@12230000 { 157 dwmmc3@12230000 {
162 status = "disabled"; 158 status = "disabled";
163 }; 159 };
164 160
diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts
new file mode 100644
index 000000000000..17dd951c1cd2
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5250-snow.dts
@@ -0,0 +1,43 @@
1/*
2 * Google Snow board device tree source
3 *
4 * Copyright (c) 2012 Google, Inc
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9*/
10
11/dts-v1/;
12/include/ "exynos5250.dtsi"
13/include/ "cros5250-common.dtsi"
14
15/ {
16 model = "Google Snow";
17 compatible = "google,snow", "samsung,exynos5250";
18
19 gpio-keys {
20 compatible = "gpio-keys";
21
22 lid-switch {
23 label = "Lid";
24 gpios = <&gpx3 5 0 0x10000 0>;
25 linux,input-type = <5>; /* EV_SW */
26 linux,code = <0>; /* SW_LID */
27 debounce-interval = <1>;
28 gpio-key,wakeup;
29 };
30 };
31
32 /*
33 * On Snow we've got SIP WiFi and so can keep drive strengths low to
34 * reduce EMI.
35 */
36 dwmmc3@12230000 {
37 slot@0 {
38 gpios = <&gpc4 0 2 0 0>, <&gpc4 1 2 3 0>,
39 <&gpc4 3 2 3 0>, <&gpc4 4 2 3 0>,
40 <&gpc4 5 2 3 0>, <&gpc4 6 2 3 0>;
41 };
42 };
43};
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
index b82b829171ae..36d8246ea50e 100644
--- a/arch/arm/boot/dts/exynos5250.dtsi
+++ b/arch/arm/boot/dts/exynos5250.dtsi
@@ -31,6 +31,10 @@
31 gsc1 = &gsc_1; 31 gsc1 = &gsc_1;
32 gsc2 = &gsc_2; 32 gsc2 = &gsc_2;
33 gsc3 = &gsc_3; 33 gsc3 = &gsc_3;
34 mshc0 = &dwmmc_0;
35 mshc1 = &dwmmc_1;
36 mshc2 = &dwmmc_2;
37 mshc3 = &dwmmc_3;
34 }; 38 };
35 39
36 gic:interrupt-controller@10481000 { 40 gic:interrupt-controller@10481000 {
@@ -224,7 +228,7 @@
224 #size-cells = <0>; 228 #size-cells = <0>;
225 }; 229 };
226 230
227 dwmmc0@12200000 { 231 dwmmc_0: dwmmc0@12200000 {
228 compatible = "samsung,exynos5250-dw-mshc"; 232 compatible = "samsung,exynos5250-dw-mshc";
229 reg = <0x12200000 0x1000>; 233 reg = <0x12200000 0x1000>;
230 interrupts = <0 75 0>; 234 interrupts = <0 75 0>;
@@ -232,7 +236,7 @@
232 #size-cells = <0>; 236 #size-cells = <0>;
233 }; 237 };
234 238
235 dwmmc1@12210000 { 239 dwmmc_1: dwmmc1@12210000 {
236 compatible = "samsung,exynos5250-dw-mshc"; 240 compatible = "samsung,exynos5250-dw-mshc";
237 reg = <0x12210000 0x1000>; 241 reg = <0x12210000 0x1000>;
238 interrupts = <0 76 0>; 242 interrupts = <0 76 0>;
@@ -240,7 +244,7 @@
240 #size-cells = <0>; 244 #size-cells = <0>;
241 }; 245 };
242 246
243 dwmmc2@12220000 { 247 dwmmc_2: dwmmc2@12220000 {
244 compatible = "samsung,exynos5250-dw-mshc"; 248 compatible = "samsung,exynos5250-dw-mshc";
245 reg = <0x12220000 0x1000>; 249 reg = <0x12220000 0x1000>;
246 interrupts = <0 77 0>; 250 interrupts = <0 77 0>;
@@ -248,7 +252,7 @@
248 #size-cells = <0>; 252 #size-cells = <0>;
249 }; 253 };
250 254
251 dwmmc3@12230000 { 255 dwmmc_3: dwmmc3@12230000 {
252 compatible = "samsung,exynos5250-dw-mshc"; 256 compatible = "samsung,exynos5250-dw-mshc";
253 reg = <0x12230000 0x1000>; 257 reg = <0x12230000 0x1000>;
254 interrupts = <0 78 0>; 258 interrupts = <0 78 0>;
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c
index 28146f2f71dc..25f464cf7979 100644
--- a/arch/arm/mach-exynos/mach-exynos5-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos5-dt.c
@@ -52,6 +52,16 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = {
52 "s3c2440-i2c.1", NULL), 52 "s3c2440-i2c.1", NULL),
53 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(2), 53 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(2),
54 "s3c2440-i2c.2", NULL), 54 "s3c2440-i2c.2", NULL),
55 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(3),
56 "s3c2440-i2c.3", NULL),
57 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(4),
58 "s3c2440-i2c.4", NULL),
59 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(5),
60 "s3c2440-i2c.5", NULL),
61 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(6),
62 "s3c2440-i2c.6", NULL),
63 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(7),
64 "s3c2440-i2c.7", NULL),
55 OF_DEV_AUXDATA("samsung,s3c2440-hdmiphy-i2c", EXYNOS5_PA_IIC(8), 65 OF_DEV_AUXDATA("samsung,s3c2440-hdmiphy-i2c", EXYNOS5_PA_IIC(8),
56 "s3c2440-hdmiphy-i2c", NULL), 66 "s3c2440-hdmiphy-i2c", NULL),
57 OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI0, 67 OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI0,
diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c
index c0bc83a7663e..9f1351de52f7 100644
--- a/arch/arm/mach-exynos/pm_domains.c
+++ b/arch/arm/mach-exynos/pm_domains.c
@@ -19,6 +19,8 @@
19#include <linux/pm_domain.h> 19#include <linux/pm_domain.h>
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/of_address.h> 21#include <linux/of_address.h>
22#include <linux/of_platform.h>
23#include <linux/sched.h>
22 24
23#include <mach/regs-pmu.h> 25#include <mach/regs-pmu.h>
24#include <plat/devs.h> 26#include <plat/devs.h>
@@ -83,12 +85,88 @@ static struct exynos_pm_domain PD = { \
83} 85}
84 86
85#ifdef CONFIG_OF 87#ifdef CONFIG_OF
88static void exynos_add_device_to_domain(struct exynos_pm_domain *pd,
89 struct device *dev)
90{
91 int ret;
92
93 dev_dbg(dev, "adding to power domain %s\n", pd->pd.name);
94
95 while (1) {
96 ret = pm_genpd_add_device(&pd->pd, dev);
97 if (ret != -EAGAIN)
98 break;
99 cond_resched();
100 }
101
102 pm_genpd_dev_need_restore(dev, true);
103}
104
105static void exynos_remove_device_from_domain(struct device *dev)
106{
107 struct generic_pm_domain *genpd = dev_to_genpd(dev);
108 int ret;
109
110 dev_dbg(dev, "removing from power domain %s\n", genpd->name);
111
112 while (1) {
113 ret = pm_genpd_remove_device(genpd, dev);
114 if (ret != -EAGAIN)
115 break;
116 cond_resched();
117 }
118}
119
120static void exynos_read_domain_from_dt(struct device *dev)
121{
122 struct platform_device *pd_pdev;
123 struct exynos_pm_domain *pd;
124 struct device_node *node;
125
126 node = of_parse_phandle(dev->of_node, "samsung,power-domain", 0);
127 if (!node)
128 return;
129 pd_pdev = of_find_device_by_node(node);
130 if (!pd_pdev)
131 return;
132 pd = platform_get_drvdata(pd_pdev);
133 exynos_add_device_to_domain(pd, dev);
134}
135
136static int exynos_pm_notifier_call(struct notifier_block *nb,
137 unsigned long event, void *data)
138{
139 struct device *dev = data;
140
141 switch (event) {
142 case BUS_NOTIFY_BIND_DRIVER:
143 if (dev->of_node)
144 exynos_read_domain_from_dt(dev);
145
146 break;
147
148 case BUS_NOTIFY_UNBOUND_DRIVER:
149 exynos_remove_device_from_domain(dev);
150
151 break;
152 }
153 return NOTIFY_DONE;
154}
155
156static struct notifier_block platform_nb = {
157 .notifier_call = exynos_pm_notifier_call,
158};
159
86static __init int exynos_pm_dt_parse_domains(void) 160static __init int exynos_pm_dt_parse_domains(void)
87{ 161{
162 struct platform_device *pdev;
88 struct device_node *np; 163 struct device_node *np;
89 164
90 for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") { 165 for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") {
91 struct exynos_pm_domain *pd; 166 struct exynos_pm_domain *pd;
167 int on;
168
169 pdev = of_find_device_by_node(np);
92 170
93 pd = kzalloc(sizeof(*pd), GFP_KERNEL); 171 pd = kzalloc(sizeof(*pd), GFP_KERNEL);
94 if (!pd) { 172 if (!pd) {
@@ -97,15 +175,22 @@ static __init int exynos_pm_dt_parse_domains(void)
97 return -ENOMEM; 175 return -ENOMEM;
98 } 176 }
99 177
100 if (of_get_property(np, "samsung,exynos4210-pd-off", NULL)) 178 pd->pd.name = kstrdup(np->name, GFP_KERNEL);
101 pd->is_off = true; 179 pd->name = pd->pd.name;
102 pd->name = np->name;
103 pd->base = of_iomap(np, 0); 180 pd->base = of_iomap(np, 0);
104 pd->pd.power_off = exynos_pd_power_off; 181 pd->pd.power_off = exynos_pd_power_off;
105 pd->pd.power_on = exynos_pd_power_on; 182 pd->pd.power_on = exynos_pd_power_on;
106 pd->pd.of_node = np; 183 pd->pd.of_node = np;
107 pm_genpd_init(&pd->pd, NULL, false); 184
185 platform_set_drvdata(pdev, pd);
186
187 on = __raw_readl(pd->base + 0x4) & S5P_INT_LOCAL_PWR_EN;
188
189 pm_genpd_init(&pd->pd, NULL, !on);
108 } 190 }
191
192 bus_register_notifier(&platform_bus_type, &platform_nb);
193
109 return 0; 194 return 0;
110} 195}
111#else 196#else