aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2014-07-19 18:06:48 -0400
committerOlof Johansson <olof@lixom.net>2014-07-19 18:06:48 -0400
commitaaaa10b0961f1fca534dea100ace0fc2991a07dd (patch)
tree754fc858ed5e0a4de754c7564859b9afad0f0dd9
parent223f93ed7e8942a250c1a7ea99ede72f5fd4cc70 (diff)
parentccaba4527156da1619a23bafcb944e8e029d0573 (diff)
Merge tag 'samsung-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/dt
Merge "Samsung DT updates for v3.17" from Kukjin Kim: exynos3250: add i2s dt for audio interface exynos4 - cleanup arm-pmu node because of 4 pmu on exynos4412 but 2 pmu on other exynos4 SoCs - add support sub-nodes to exynos usb host for exynos4 exynos4412-odroid-common - fix T-FLASH hotplug detection - disable 'always on' for BUCK8 - add support for GPIO based buttons - add MAX98090 audio codec exynos4412-odroidx2 and exynos4412-odroidu3 - refactor exynos4412-odroidx and exynos4412-odroid-common for odroid-x2 and u2/u3 exynos4412-odroidx - add support for USB phy, host and device - enable common hardware blocks, secure firmware calls, watchdog, g2d and fimc (mem2mem) multimedia accelerators - add support for USB phy, host and device - correct memory size exynos5410 - fill in CPU clock-frequency property to avoid warning exynos5420 - remove display pd because of instability exynos5420-peach-pit and exynos5800-peach-pi - sort nodes each other to check its differences easily - enable audio support and add sound-card name property - add mask-tpm-reset node - add cros_ec including keyboard, i2c tunnel and tps65090 and battery under the i2c tunnel * tag 'samsung-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung: ARM: dts: Add I2S dt node for exynos3250 ARM: dts: Add cros_ec to exynos5420-peach-pit and exynos5800-peach-pi ARM: dts: clean up arm-pmu node for exynos4 ARM: dts: remove display power domain for exynos5420 ARM: dts: Add sound nodes for Odroid-X2/U3 boards ARM: dts: fix T-FLASH hotplug detection for exynos4412-odroid-common ARM: dts: add support for GPIO buttons for exynos4412-odroid ARM: dts: disable 'always on' for BUCK8 regulator for exynos4412-odroid-common ARM: dts: refactor Odroid DTS file and add support for Odroid X2 and U2/U3 ARM: dts: correct memory size for exynos4412-odroidx ARM: dts: add support for USB phy, host and device for exynos4412-odroidx ARM: dts: enable common hardware blocks for exynos4412-odroidx ARM: dts: add port sub-nodes to exynos usb host modules for exynos4 ARM: dts: Add mask-tpm-reset node in exynos5800-peach-pi ARM: dts: Add mask-tpm-reset node in exynos5420-peach-pit ARM: dts: Add sound-card name for Snow/Peach-Pit/Peach-Pi ARM: dts: Fill in CPU clock-frequency for exynos5410 ARM: dts: Sort nodes within Peach-pit/Peach-pi dts files ARM: dts: Enable audio support for exynos5800-peach-pi
-rw-r--r--arch/arm/boot/dts/Makefile2
-rw-r--r--arch/arm/boot/dts/exynos3250.dtsi13
-rw-r--r--arch/arm/boot/dts/exynos4.dtsi30
-rw-r--r--arch/arm/boot/dts/exynos4210.dtsi6
-rw-r--r--arch/arm/boot/dts/exynos4412-odroid-common.dtsi371
-rw-r--r--arch/arm/boot/dts/exynos4412-odroidu3.dts61
-rw-r--r--arch/arm/boot/dts/exynos4412-odroidx.dts279
-rw-r--r--arch/arm/boot/dts/exynos4412-odroidx2.dts32
-rw-r--r--arch/arm/boot/dts/exynos4412.dtsi4
-rw-r--r--arch/arm/boot/dts/exynos4x12.dtsi6
-rw-r--r--arch/arm/boot/dts/exynos5250-snow.dts1
-rw-r--r--arch/arm/boot/dts/exynos5410.dtsi4
-rw-r--r--arch/arm/boot/dts/exynos5420-peach-pit.dts392
-rw-r--r--arch/arm/boot/dts/exynos5420.dtsi6
-rw-r--r--arch/arm/boot/dts/exynos5800-peach-pi.dts374
15 files changed, 1106 insertions, 475 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 922fa5c99b2c..81bd72af529e 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -66,7 +66,9 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
66 exynos4210-smdkv310.dtb \ 66 exynos4210-smdkv310.dtb \
67 exynos4210-trats.dtb \ 67 exynos4210-trats.dtb \
68 exynos4210-universal_c210.dtb \ 68 exynos4210-universal_c210.dtb \
69 exynos4412-odroidu3.dtb \
69 exynos4412-odroidx.dtb \ 70 exynos4412-odroidx.dtb \
71 exynos4412-odroidx2.dtb \
70 exynos4412-origen.dtb \ 72 exynos4412-origen.dtb \
71 exynos4412-smdk4412.dtb \ 73 exynos4412-smdk4412.dtb \
72 exynos4412-tiny4412.dtb \ 74 exynos4412-tiny4412.dtb \
diff --git a/arch/arm/boot/dts/exynos3250.dtsi b/arch/arm/boot/dts/exynos3250.dtsi
index 3e678fa335bf..77a06df6dc72 100644
--- a/arch/arm/boot/dts/exynos3250.dtsi
+++ b/arch/arm/boot/dts/exynos3250.dtsi
@@ -425,6 +425,19 @@
425 status = "disabled"; 425 status = "disabled";
426 }; 426 };
427 427
428 i2s2: i2s@13970000 {
429 compatible = "samsung,s3c6410-i2s";
430 reg = <0x13970000 0x100>;
431 interrupts = <0 126 0>;
432 clocks = <&cmu CLK_I2S>, <&cmu CLK_SCLK_I2S>;
433 clock-names = "iis", "i2s_opclk0";
434 dmas = <&pdma0 14>, <&pdma0 13>;
435 dma-names = "tx", "rx";
436 pinctrl-0 = <&i2s2_bus>;
437 pinctrl-names = "default";
438 status = "disabled";
439 };
440
428 pwm: pwm@139D0000 { 441 pwm: pwm@139D0000 {
429 compatible = "samsung,exynos4210-pwm"; 442 compatible = "samsung,exynos4210-pwm";
430 reg = <0x139D0000 0x1000>; 443 reg = <0x139D0000 0x1000>;
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index 17b22e9cc2aa..08ea6dc9a92f 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -123,6 +123,12 @@
123 reg = <0x10440000 0x1000>; 123 reg = <0x10440000 0x1000>;
124 }; 124 };
125 125
126 pmu {
127 compatible = "arm,cortex-a9-pmu";
128 interrupt-parent = <&combiner>;
129 interrupts = <2 2>, <3 2>;
130 };
131
126 sys_reg: syscon@10010000 { 132 sys_reg: syscon@10010000 {
127 compatible = "samsung,exynos4-sysreg", "syscon"; 133 compatible = "samsung,exynos4-sysreg", "syscon";
128 reg = <0x10010000 0x400>; 134 reg = <0x10010000 0x400>;
@@ -322,6 +328,23 @@
322 clocks = <&clock CLK_USB_HOST>; 328 clocks = <&clock CLK_USB_HOST>;
323 clock-names = "usbhost"; 329 clock-names = "usbhost";
324 status = "disabled"; 330 status = "disabled";
331 #address-cells = <1>;
332 #size-cells = <0>;
333 port@0 {
334 reg = <0>;
335 phys = <&exynos_usbphy 1>;
336 status = "disabled";
337 };
338 port@1 {
339 reg = <1>;
340 phys = <&exynos_usbphy 2>;
341 status = "disabled";
342 };
343 port@2 {
344 reg = <2>;
345 phys = <&exynos_usbphy 3>;
346 status = "disabled";
347 };
325 }; 348 };
326 349
327 ohci@12590000 { 350 ohci@12590000 {
@@ -331,6 +354,13 @@
331 clocks = <&clock CLK_USB_HOST>; 354 clocks = <&clock CLK_USB_HOST>;
332 clock-names = "usbhost"; 355 clock-names = "usbhost";
333 status = "disabled"; 356 status = "disabled";
357 #address-cells = <1>;
358 #size-cells = <0>;
359 port@0 {
360 reg = <0>;
361 phys = <&exynos_usbphy 1>;
362 status = "disabled";
363 };
334 }; 364 };
335 365
336 i2s1: i2s@13960000 { 366 i2s1: i2s@13960000 {
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi
index ee3001f38821..a4f28e8a6f87 100644
--- a/arch/arm/boot/dts/exynos4210.dtsi
+++ b/arch/arm/boot/dts/exynos4210.dtsi
@@ -93,12 +93,6 @@
93 #clock-cells = <1>; 93 #clock-cells = <1>;
94 }; 94 };
95 95
96 pmu {
97 compatible = "arm,cortex-a9-pmu";
98 interrupt-parent = <&combiner>;
99 interrupts = <2 2>, <3 2>;
100 };
101
102 pinctrl_0: pinctrl@11400000 { 96 pinctrl_0: pinctrl@11400000 {
103 compatible = "samsung,exynos4210-pinctrl"; 97 compatible = "samsung,exynos4210-pinctrl";
104 reg = <0x11400000 0x1000>; 98 reg = <0x11400000 0x1000>;
diff --git a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
new file mode 100644
index 000000000000..6d6d23c83d30
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
@@ -0,0 +1,371 @@
1/*
2 * Common definition for Hardkernel's Exynos4412 based ODROID-X/X2/U2/U3 boards
3 * device tree source
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8*/
9
10#include <dt-bindings/input/input.h>
11#include "exynos4412.dtsi"
12
13/ {
14 firmware@0204F000 {
15 compatible = "samsung,secure-firmware";
16 reg = <0x0204F000 0x1000>;
17 };
18
19 gpio_keys {
20 compatible = "gpio-keys";
21 pinctrl-names = "default";
22 pinctrl-0 = <&gpio_power_key>;
23
24 power_key {
25 interrupt-parent = <&gpx1>;
26 interrupts = <3 0>;
27 gpios = <&gpx1 3 1>;
28 linux,code = <KEY_POWER>;
29 label = "power key";
30 debounce-interval = <10>;
31 gpio-key,wakeup;
32 };
33 };
34
35 i2s0: i2s@03830000 {
36 pinctrl-0 = <&i2s0_bus>;
37 pinctrl-names = "default";
38 status = "okay";
39 clocks = <&clock_audss EXYNOS_I2S_BUS>,
40 <&clock_audss EXYNOS_DOUT_AUD_BUS>;
41 clock-names = "iis", "i2s_opclk0";
42 };
43
44 sound: sound {
45 compatible = "samsung,odroidx2-audio";
46 samsung,i2s-controller = <&i2s0>;
47 samsung,audio-codec = <&max98090>;
48 };
49
50 mmc@12550000 {
51 pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
52 pinctrl-names = "default";
53 vmmc-supply = <&ldo20_reg &buck8_reg>;
54 status = "okay";
55
56 num-slots = <1>;
57 supports-highspeed;
58 broken-cd;
59 card-detect-delay = <200>;
60 samsung,dw-mshc-ciu-div = <3>;
61 samsung,dw-mshc-sdr-timing = <2 3>;
62 samsung,dw-mshc-ddr-timing = <1 2>;
63
64 slot@0 {
65 reg = <0>;
66 bus-width = <8>;
67 };
68 };
69
70 watchdog@10060000 {
71 status = "okay";
72 };
73
74 rtc@10070000 {
75 status = "okay";
76 };
77
78 g2d@10800000 {
79 status = "okay";
80 };
81
82 camera {
83 status = "okay";
84 pinctrl-names = "default";
85 pinctrl-0 = <>;
86
87 fimc_0: fimc@11800000 {
88 status = "okay";
89 };
90
91 fimc_1: fimc@11810000 {
92 status = "okay";
93 };
94
95 fimc_2: fimc@11820000 {
96 status = "okay";
97 };
98
99 fimc_3: fimc@11830000 {
100 status = "okay";
101 };
102 };
103
104 sdhci@12530000 {
105 bus-width = <4>;
106 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
107 pinctrl-names = "default";
108 vmmc-supply = <&ldo4_reg &ldo21_reg>;
109 cd-gpios = <&gpk2 2 0>;
110 cd-inverted;
111 status = "okay";
112 };
113
114 serial@13800000 {
115 status = "okay";
116 };
117
118 serial@13810000 {
119 status = "okay";
120 };
121
122 fixed-rate-clocks {
123 xxti {
124 compatible = "samsung,clock-xxti";
125 clock-frequency = <0>;
126 };
127
128 xusbxti {
129 compatible = "samsung,clock-xusbxti";
130 clock-frequency = <24000000>;
131 };
132 };
133
134 i2c@13860000 {
135 pinctrl-0 = <&i2c0_bus>;
136 pinctrl-names = "default";
137 status = "okay";
138
139 usb3503: usb3503@08 {
140 compatible = "smsc,usb3503";
141 reg = <0x08>;
142
143 intn-gpios = <&gpx3 0 0>;
144 connect-gpios = <&gpx3 4 0>;
145 reset-gpios = <&gpx3 5 0>;
146 initial-mode = <1>;
147 };
148
149 max77686: pmic@09 {
150 compatible = "maxim,max77686";
151 reg = <0x09>;
152 #clock-cells = <1>;
153
154 voltage-regulators {
155 ldo1_reg: LDO1 {
156 regulator-name = "VDD_ALIVE_1.0V";
157 regulator-min-microvolt = <1000000>;
158 regulator-max-microvolt = <1000000>;
159 regulator-always-on;
160 };
161
162 ldo2_reg: LDO2 {
163 regulator-name = "VDDQ_M1_2_1.8V";
164 regulator-min-microvolt = <1800000>;
165 regulator-max-microvolt = <1800000>;
166 regulator-always-on;
167 };
168
169 ldo3_reg: LDO3 {
170 regulator-name = "VDDQ_EXT_1.8V";
171 regulator-min-microvolt = <1800000>;
172 regulator-max-microvolt = <1800000>;
173 regulator-always-on;
174 };
175
176 ldo4_reg: LDO4 {
177 regulator-name = "VDDQ_MMC2_2.8V";
178 regulator-min-microvolt = <2800000>;
179 regulator-max-microvolt = <2800000>;
180 regulator-always-on;
181 regulator-boot-on;
182 };
183
184 ldo5_reg: LDO5 {
185 regulator-name = "VDDQ_MMC1_3_1.8V";
186 regulator-min-microvolt = <1800000>;
187 regulator-max-microvolt = <1800000>;
188 regulator-always-on;
189 regulator-boot-on;
190 };
191
192 ldo6_reg: LDO6 {
193 regulator-name = "VDD10_MPLL_1.0V";
194 regulator-min-microvolt = <1000000>;
195 regulator-max-microvolt = <1000000>;
196 regulator-always-on;
197 };
198
199 ldo7_reg: LDO7 {
200 regulator-name = "VDD10_XPLL_1.0V";
201 regulator-min-microvolt = <1000000>;
202 regulator-max-microvolt = <1000000>;
203 regulator-always-on;
204 };
205
206 ldo11_reg: LDO11 {
207 regulator-name = "VDD18_ABB1_1.8V";
208 regulator-min-microvolt = <1800000>;
209 regulator-max-microvolt = <1800000>;
210 regulator-always-on;
211 };
212
213 ldo12_reg: LDO12 {
214 regulator-name = "VDD33_USB_3.3V";
215 regulator-min-microvolt = <3300000>;
216 regulator-max-microvolt = <3300000>;
217 regulator-always-on;
218 regulator-boot-on;
219 };
220
221 ldo13_reg: LDO13 {
222 regulator-name = "VDDQ_C2C_W_1.8V";
223 regulator-min-microvolt = <1800000>;
224 regulator-max-microvolt = <1800000>;
225 regulator-always-on;
226 regulator-boot-on;
227 };
228
229 ldo14_reg: LDO14 {
230 regulator-name = "VDD18_ABB0_2_1.8V";
231 regulator-min-microvolt = <1800000>;
232 regulator-max-microvolt = <1800000>;
233 regulator-always-on;
234 regulator-boot-on;
235 };
236
237 ldo15_reg: LDO15 {
238 regulator-name = "VDD10_HSIC_1.0V";
239 regulator-min-microvolt = <1000000>;
240 regulator-max-microvolt = <1000000>;
241 regulator-always-on;
242 regulator-boot-on;
243 };
244
245 ldo16_reg: LDO16 {
246 regulator-name = "VDD18_HSIC_1.8V";
247 regulator-min-microvolt = <1800000>;
248 regulator-max-microvolt = <1800000>;
249 regulator-always-on;
250 regulator-boot-on;
251 };
252
253 ldo20_reg: LDO20 {
254 regulator-name = "LDO20_1.8V";
255 regulator-min-microvolt = <1800000>;
256 regulator-max-microvolt = <1800000>;
257 regulator-boot-on;
258 };
259
260 ldo21_reg: LDO21 {
261 regulator-name = "LDO21_3.3V";
262 regulator-min-microvolt = <3300000>;
263 regulator-max-microvolt = <3300000>;
264 regulator-always-on;
265 regulator-boot-on;
266 };
267
268 ldo25_reg: LDO25 {
269 regulator-name = "VDDQ_LCD_1.8V";
270 regulator-min-microvolt = <1800000>;
271 regulator-max-microvolt = <1800000>;
272 regulator-always-on;
273 regulator-boot-on;
274 };
275
276 buck1_reg: BUCK1 {
277 regulator-name = "vdd_mif";
278 regulator-min-microvolt = <1000000>;
279 regulator-max-microvolt = <1000000>;
280 regulator-always-on;
281 regulator-boot-on;
282 };
283
284 buck2_reg: BUCK2 {
285 regulator-name = "vdd_arm";
286 regulator-min-microvolt = <900000>;
287 regulator-max-microvolt = <1350000>;
288 regulator-always-on;
289 regulator-boot-on;
290 };
291
292 buck3_reg: BUCK3 {
293 regulator-name = "vdd_int";
294 regulator-min-microvolt = <1000000>;
295 regulator-max-microvolt = <1000000>;
296 regulator-always-on;
297 regulator-boot-on;
298 };
299
300 buck4_reg: BUCK4 {
301 regulator-name = "vdd_g3d";
302 regulator-min-microvolt = <900000>;
303 regulator-max-microvolt = <1100000>;
304 regulator-microvolt-offset = <50000>;
305 };
306
307 buck5_reg: BUCK5 {
308 regulator-name = "VDDQ_CKEM1_2_1.2V";
309 regulator-min-microvolt = <1200000>;
310 regulator-max-microvolt = <1200000>;
311 regulator-always-on;
312 regulator-boot-on;
313 };
314
315 buck6_reg: BUCK6 {
316 regulator-name = "BUCK6_1.35V";
317 regulator-min-microvolt = <1350000>;
318 regulator-max-microvolt = <1350000>;
319 regulator-always-on;
320 regulator-boot-on;
321 };
322
323 buck7_reg: BUCK7 {
324 regulator-name = "BUCK7_2.0V";
325 regulator-min-microvolt = <2000000>;
326 regulator-max-microvolt = <2000000>;
327 regulator-always-on;
328 };
329
330 buck8_reg: BUCK8 {
331 regulator-name = "BUCK8_2.8V";
332 regulator-min-microvolt = <2800000>;
333 regulator-max-microvolt = <2800000>;
334 };
335 };
336 };
337 };
338
339 i2c@13870000 {
340 pinctrl-names = "default";
341 pinctrl-0 = <&i2c1_bus>;
342 status = "okay";
343 max98090: max98090@10 {
344 compatible = "maxim,max98090";
345 reg = <0x10>;
346 interrupt-parent = <&gpx0>;
347 interrupts = <0 0>;
348 };
349 };
350
351 exynos-usbphy@125B0000 {
352 status = "okay";
353 };
354
355 hsotg@12480000 {
356 status = "okay";
357 vusb_d-supply = <&ldo15_reg>;
358 vusb_a-supply = <&ldo12_reg>;
359 };
360
361 ehci: ehci@12580000 {
362 status = "okay";
363 };
364};
365
366&pinctrl_1 {
367 gpio_power_key: power_key {
368 samsung,pins = "gpx1-3";
369 samsung,pin-pud = <0>;
370 };
371};
diff --git a/arch/arm/boot/dts/exynos4412-odroidu3.dts b/arch/arm/boot/dts/exynos4412-odroidu3.dts
new file mode 100644
index 000000000000..c8a64be55d07
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-odroidu3.dts
@@ -0,0 +1,61 @@
1/*
2 * Hardkernel's Exynos4412 based ODROID-U3 board device tree source
3 *
4 * Copyright (c) 2014 Marek Szyprowski <m.szyprowski@samsung.com>
5 *
6 * Device tree source file for Hardkernel's ODROID-U3 board which is based
7 * on Samsung's Exynos4412 SoC.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12*/
13
14/dts-v1/;
15#include "exynos4412-odroid-common.dtsi"
16
17/ {
18 model = "Hardkernel ODROID-U3 board based on Exynos4412";
19 compatible = "hardkernel,odroid-u3", "samsung,exynos4412", "samsung,exynos4";
20
21 memory {
22 reg = <0x40000000 0x7FF00000>;
23 };
24
25 leds {
26 compatible = "gpio-leds";
27 led1 {
28 label = "led1:heart";
29 gpios = <&gpc1 0 1>;
30 default-state = "on";
31 linux,default-trigger = "heartbeat";
32 };
33 };
34};
35
36&usb3503 {
37 clock-names = "refclk";
38 clocks = <&pmu_system_controller 0>;
39 refclk-frequency = <24000000>;
40};
41
42&ehci {
43 port@1 {
44 status = "okay";
45 };
46 port@2 {
47 status = "okay";
48 };
49};
50
51&sound {
52 compatible = "samsung,odroidu3-audio";
53 samsung,model = "Odroid-U3";
54 samsung,audio-routing =
55 "Headphone Jack", "HPL",
56 "Headphone Jack", "HPR",
57 "Headphone Jack", "MICBIAS",
58 "IN1", "Headphone Jack",
59 "Speakers", "SPKL",
60 "Speakers", "SPKR";
61};
diff --git a/arch/arm/boot/dts/exynos4412-odroidx.dts b/arch/arm/boot/dts/exynos4412-odroidx.dts
index 31db28a4bb33..cb1cfe7239c4 100644
--- a/arch/arm/boot/dts/exynos4412-odroidx.dts
+++ b/arch/arm/boot/dts/exynos4412-odroidx.dts
@@ -3,8 +3,8 @@
3 * 3 *
4 * Copyright (c) 2012 Dongjin Kim <tobetter@gmail.com> 4 * Copyright (c) 2012 Dongjin Kim <tobetter@gmail.com>
5 * 5 *
6 * Device tree source file for Hardkernel's ODROID-X board which is based on 6 * Device tree source file for Hardkernel's ODROID-X board which is based
7 * Samsung's Exynos4412 SoC. 7 * on Samsung's Exynos4412 SoC.
8 * 8 *
9 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as 10 * it under the terms of the GNU General Public License version 2 as
@@ -12,14 +12,14 @@
12*/ 12*/
13 13
14/dts-v1/; 14/dts-v1/;
15#include "exynos4412.dtsi" 15#include "exynos4412-odroid-common.dtsi"
16 16
17/ { 17/ {
18 model = "Hardkernel ODROID-X board based on Exynos4412"; 18 model = "Hardkernel ODROID-X board based on Exynos4412";
19 compatible = "hardkernel,odroid-x", "samsung,exynos4412", "samsung,exynos4"; 19 compatible = "hardkernel,odroid-x", "samsung,exynos4412", "samsung,exynos4";
20 20
21 memory { 21 memory {
22 reg = <0x40000000 0x40000000>; 22 reg = <0x40000000 0x3FF00000>;
23 }; 23 };
24 24
25 leds { 25 leds {
@@ -38,23 +38,25 @@
38 }; 38 };
39 }; 39 };
40 40
41 mmc@12550000 { 41 serial@13820000 {
42 pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
43 pinctrl-names = "default";
44 vmmc-supply = <&ldo20_reg &buck8_reg>;
45 status = "okay"; 42 status = "okay";
43 };
46 44
47 num-slots = <1>; 45 serial@13830000 {
48 supports-highspeed; 46 status = "okay";
49 broken-cd; 47 };
50 card-detect-delay = <200>;
51 samsung,dw-mshc-ciu-div = <3>;
52 samsung,dw-mshc-sdr-timing = <2 3>;
53 samsung,dw-mshc-ddr-timing = <1 2>;
54 48
55 slot@0 { 49 gpio_keys {
56 reg = <0>; 50 pinctrl-0 = <&gpio_power_key &gpio_home_key>;
57 bus-width = <8>; 51
52 home_key {
53 interrupt-parent = <&gpx2>;
54 interrupts = <2 0>;
55 gpios = <&gpx2 2 0>;
56 linux,code = <KEY_HOME>;
57 label = "home key";
58 debounce-interval = <10>;
59 gpio-key,wakeup;
58 }; 60 };
59 }; 61 };
60 62
@@ -65,242 +67,19 @@
65 regulator-max-microvolt = <3300000>; 67 regulator-max-microvolt = <3300000>;
66 gpio = <&gpa1 1 1>; 68 gpio = <&gpa1 1 1>;
67 enable-active-high; 69 enable-active-high;
68 regulator-boot-on; 70 regulator-always-on;
69 };
70
71 rtc@10070000 {
72 status = "okay";
73 };
74
75 sdhci@12530000 {
76 bus-width = <4>;
77 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
78 pinctrl-names = "default";
79 vmmc-supply = <&ldo4_reg &ldo21_reg>;
80 status = "okay";
81 };
82
83 serial@13800000 {
84 status = "okay";
85 };
86
87 serial@13810000 {
88 status = "okay";
89 };
90
91 serial@13820000 {
92 status = "okay";
93 }; 71 };
72};
94 73
95 serial@13830000 { 74&ehci {
75 port@1 {
96 status = "okay"; 76 status = "okay";
97 }; 77 };
78};
98 79
99 fixed-rate-clocks { 80&pinctrl_1 {
100 xxti { 81 gpio_home_key: home_key {
101 compatible = "samsung,clock-xxti"; 82 samsung,pins = "gpx2-2";
102 clock-frequency = <0>; 83 samsung,pin-pud = <0>;
103 };
104
105 xusbxti {
106 compatible = "samsung,clock-xusbxti";
107 clock-frequency = <24000000>;
108 };
109 };
110
111 i2c@13860000 {
112 pinctrl-0 = <&i2c0_bus>;
113 pinctrl-names = "default";
114 status = "okay";
115
116 max77686: pmic@09 {
117 compatible = "maxim,max77686";
118 reg = <0x09>;
119 #clock-cells = <1>;
120
121 voltage-regulators {
122 ldo1_reg: LDO1 {
123 regulator-name = "VDD_ALIVE_1.0V";
124 regulator-min-microvolt = <1000000>;
125 regulator-max-microvolt = <1000000>;
126 regulator-always-on;
127 };
128
129 ldo2_reg: LDO2 {
130 regulator-name = "VDDQ_M1_2_1.8V";
131 regulator-min-microvolt = <1800000>;
132 regulator-max-microvolt = <1800000>;
133 regulator-always-on;
134 };
135
136 ldo3_reg: LDO3 {
137 regulator-name = "VDDQ_EXT_1.8V";
138 regulator-min-microvolt = <1800000>;
139 regulator-max-microvolt = <1800000>;
140 regulator-always-on;
141 };
142
143 ldo4_reg: LDO4 {
144 regulator-name = "VDDQ_MMC2_2.8V";
145 regulator-min-microvolt = <2800000>;
146 regulator-max-microvolt = <2800000>;
147 regulator-always-on;
148 regulator-boot-on;
149 };
150
151 ldo5_reg: LDO5 {
152 regulator-name = "VDDQ_MMC1_3_1.8V";
153 regulator-min-microvolt = <1800000>;
154 regulator-max-microvolt = <1800000>;
155 regulator-always-on;
156 regulator-boot-on;
157 };
158
159 ldo6_reg: LDO6 {
160 regulator-name = "VDD10_MPLL_1.0V";
161 regulator-min-microvolt = <1000000>;
162 regulator-max-microvolt = <1000000>;
163 regulator-always-on;
164 };
165
166 ldo7_reg: LDO7 {
167 regulator-name = "VDD10_XPLL_1.0V";
168 regulator-min-microvolt = <1000000>;
169 regulator-max-microvolt = <1000000>;
170 regulator-always-on;
171 };
172
173 ldo11_reg: LDO11 {
174 regulator-name = "VDD18_ABB1_1.8V";
175 regulator-min-microvolt = <1800000>;
176 regulator-max-microvolt = <1800000>;
177 regulator-always-on;
178 };
179
180 ldo12_reg: LDO12 {
181 regulator-name = "VDD33_USB_3.3V";
182 regulator-min-microvolt = <3300000>;
183 regulator-max-microvolt = <3300000>;
184 regulator-always-on;
185 regulator-boot-on;
186 };
187
188 ldo13_reg: LDO13 {
189 regulator-name = "VDDQ_C2C_W_1.8V";
190 regulator-min-microvolt = <1800000>;
191 regulator-max-microvolt = <1800000>;
192 regulator-always-on;
193 regulator-boot-on;
194 };
195
196 ldo14_reg: LDO14 {
197 regulator-name = "VDD18_ABB0_2_1.8V";
198 regulator-min-microvolt = <1800000>;
199 regulator-max-microvolt = <1800000>;
200 regulator-always-on;
201 regulator-boot-on;
202 };
203
204 ldo15_reg: LDO15 {
205 regulator-name = "VDD10_HSIC_1.0V";
206 regulator-min-microvolt = <1000000>;
207 regulator-max-microvolt = <1000000>;
208 regulator-always-on;
209 regulator-boot-on;
210 };
211
212 ldo16_reg: LDO16 {
213 regulator-name = "VDD18_HSIC_1.8V";
214 regulator-min-microvolt = <1800000>;
215 regulator-max-microvolt = <1800000>;
216 regulator-always-on;
217 regulator-boot-on;
218 };
219
220 ldo20_reg: LDO20 {
221 regulator-name = "LDO20_1.8V";
222 regulator-min-microvolt = <1800000>;
223 regulator-max-microvolt = <1800000>;
224 regulator-boot-on;
225 };
226
227 ldo21_reg: LDO21 {
228 regulator-name = "LDO21_3.3V";
229 regulator-min-microvolt = <3300000>;
230 regulator-max-microvolt = <3300000>;
231 regulator-always-on;
232 regulator-boot-on;
233 };
234
235 ldo25_reg: LDO25 {
236 regulator-name = "VDDQ_LCD_1.8V";
237 regulator-min-microvolt = <1800000>;
238 regulator-max-microvolt = <1800000>;
239 regulator-always-on;
240 regulator-boot-on;
241 };
242
243 buck1_reg: BUCK1 {
244 regulator-name = "vdd_mif";
245 regulator-min-microvolt = <1000000>;
246 regulator-max-microvolt = <1000000>;
247 regulator-always-on;
248 regulator-boot-on;
249 };
250
251 buck2_reg: BUCK2 {
252 regulator-name = "vdd_arm";
253 regulator-min-microvolt = <900000>;
254 regulator-max-microvolt = <1350000>;
255 regulator-always-on;
256 regulator-boot-on;
257 };
258
259 buck3_reg: BUCK3 {
260 regulator-name = "vdd_int";
261 regulator-min-microvolt = <1000000>;
262 regulator-max-microvolt = <1000000>;
263 regulator-always-on;
264 regulator-boot-on;
265 };
266
267 buck4_reg: BUCK4 {
268 regulator-name = "vdd_g3d";
269 regulator-min-microvolt = <900000>;
270 regulator-max-microvolt = <1100000>;
271 regulator-microvolt-offset = <50000>;
272 };
273
274 buck5_reg: BUCK5 {
275 regulator-name = "VDDQ_CKEM1_2_1.2V";
276 regulator-min-microvolt = <1200000>;
277 regulator-max-microvolt = <1200000>;
278 regulator-always-on;
279 regulator-boot-on;
280 };
281
282 buck6_reg: BUCK6 {
283 regulator-name = "BUCK6_1.35V";
284 regulator-min-microvolt = <1350000>;
285 regulator-max-microvolt = <1350000>;
286 regulator-always-on;
287 regulator-boot-on;
288 };
289
290 buck7_reg: BUCK7 {
291 regulator-name = "BUCK7_2.0V";
292 regulator-min-microvolt = <2000000>;
293 regulator-max-microvolt = <2000000>;
294 regulator-always-on;
295 };
296
297 buck8_reg: BUCK8 {
298 regulator-name = "BUCK8_2.8V";
299 regulator-min-microvolt = <2800000>;
300 regulator-max-microvolt = <2800000>;
301 regulator-always-on;
302 };
303 };
304 };
305 }; 84 };
306}; 85};
diff --git a/arch/arm/boot/dts/exynos4412-odroidx2.dts b/arch/arm/boot/dts/exynos4412-odroidx2.dts
new file mode 100644
index 000000000000..96b43f4497cc
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-odroidx2.dts
@@ -0,0 +1,32 @@
1/*
2 * Hardkernel's Exynos4412 based ODROID-X2 board device tree source
3 *
4 * Copyright (c) 2012 Dongjin Kim <tobetter@gmail.com>
5 *
6 * Device tree source file for Hardkernel's ODROID-X2 board which is based
7 * on Samsung's Exynos4412 SoC.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12*/
13
14#include "exynos4412-odroidx.dts"
15
16/ {
17 model = "Hardkernel ODROID-X2 board based on Exynos4412";
18 compatible = "hardkernel,odroid-x2", "samsung,exynos4412", "samsung,exynos4";
19
20 memory {
21 reg = <0x40000000 0x7FF00000>;
22 };
23};
24
25&sound {
26 samsung,model = "Odroid-X2";
27 samsung,audio-routing =
28 "Headphone Jack", "HPL",
29 "Headphone Jack", "HPR",
30 "IN1", "Mic Jack",
31 "Mic Jack", "MICBIAS";
32};
diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi
index c42a3e196cd5..d8bc059e172f 100644
--- a/arch/arm/boot/dts/exynos4412.dtsi
+++ b/arch/arm/boot/dts/exynos4412.dtsi
@@ -26,6 +26,10 @@
26 samsung,combiner-nr = <20>; 26 samsung,combiner-nr = <20>;
27 }; 27 };
28 28
29 pmu {
30 interrupts = <2 2>, <3 2>, <18 2>, <19 2>;
31 };
32
29 gic: interrupt-controller@10490000 { 33 gic: interrupt-controller@10490000 {
30 cpu-offset = <0x4000>; 34 cpu-offset = <0x4000>;
31 }; 35 };
diff --git a/arch/arm/boot/dts/exynos4x12.dtsi b/arch/arm/boot/dts/exynos4x12.dtsi
index c5a943df1cd7..95cdfb9e7d59 100644
--- a/arch/arm/boot/dts/exynos4x12.dtsi
+++ b/arch/arm/boot/dts/exynos4x12.dtsi
@@ -31,12 +31,6 @@
31 mshc0 = &mshc_0; 31 mshc0 = &mshc_0;
32 }; 32 };
33 33
34 pmu {
35 compatible = "arm,cortex-a9-pmu";
36 interrupt-parent = <&combiner>;
37 interrupts = <2 2>, <3 2>, <18 2>, <19 2>;
38 };
39
40 sysram@02020000 { 34 sysram@02020000 {
41 compatible = "mmio-sram"; 35 compatible = "mmio-sram";
42 reg = <0x02020000 0x40000>; 36 reg = <0x02020000 0x40000>;
diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts
index 7bd2df1364c2..c682c8831172 100644
--- a/arch/arm/boot/dts/exynos5250-snow.dts
+++ b/arch/arm/boot/dts/exynos5250-snow.dts
@@ -262,6 +262,7 @@
262 sound { 262 sound {
263 compatible = "google,snow-audio-max98095"; 263 compatible = "google,snow-audio-max98095";
264 264
265 samsung,model = "Snow-I2S-MAX98095";
265 samsung,i2s-controller = <&i2s0>; 266 samsung,i2s-controller = <&i2s0>;
266 samsung,audio-codec = <&max98095>; 267 samsung,audio-codec = <&max98095>;
267 }; 268 };
diff --git a/arch/arm/boot/dts/exynos5410.dtsi b/arch/arm/boot/dts/exynos5410.dtsi
index 3839c26f467f..9d0b8cc1409c 100644
--- a/arch/arm/boot/dts/exynos5410.dtsi
+++ b/arch/arm/boot/dts/exynos5410.dtsi
@@ -28,24 +28,28 @@
28 device_type = "cpu"; 28 device_type = "cpu";
29 compatible = "arm,cortex-a15"; 29 compatible = "arm,cortex-a15";
30 reg = <0x0>; 30 reg = <0x0>;
31 clock-frequency = <1600000000>;
31 }; 32 };
32 33
33 CPU1: cpu@1 { 34 CPU1: cpu@1 {
34 device_type = "cpu"; 35 device_type = "cpu";
35 compatible = "arm,cortex-a15"; 36 compatible = "arm,cortex-a15";
36 reg = <0x1>; 37 reg = <0x1>;
38 clock-frequency = <1600000000>;
37 }; 39 };
38 40
39 CPU2: cpu@2 { 41 CPU2: cpu@2 {
40 device_type = "cpu"; 42 device_type = "cpu";
41 compatible = "arm,cortex-a15"; 43 compatible = "arm,cortex-a15";
42 reg = <0x2>; 44 reg = <0x2>;
45 clock-frequency = <1600000000>;
43 }; 46 };
44 47
45 CPU3: cpu@3 { 48 CPU3: cpu@3 {
46 device_type = "cpu"; 49 device_type = "cpu";
47 compatible = "arm,cortex-a15"; 50 compatible = "arm,cortex-a15";
48 reg = <0x3>; 51 reg = <0x3>;
52 clock-frequency = <1600000000>;
49 }; 53 };
50 }; 54 };
51 55
diff --git a/arch/arm/boot/dts/exynos5420-peach-pit.dts b/arch/arm/boot/dts/exynos5420-peach-pit.dts
index 1c5b8f9f4a36..228a6b1e0aa1 100644
--- a/arch/arm/boot/dts/exynos5420-peach-pit.dts
+++ b/arch/arm/boot/dts/exynos5420-peach-pit.dts
@@ -25,8 +25,18 @@
25 "google,pit", "google,peach","samsung,exynos5420", 25 "google,pit", "google,peach","samsung,exynos5420",
26 "samsung,exynos5"; 26 "samsung,exynos5";
27 27
28 memory { 28 aliases {
29 reg = <0x20000000 0x80000000>; 29 /* Assign 20 so we don't get confused w/ builtin ones */
30 i2c20 = "/spi@12d40000/cros-ec@0/i2c-tunnel";
31 };
32
33 backlight {
34 compatible = "pwm-backlight";
35 pwms = <&pwm 0 1000000 0>;
36 brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
37 default-brightness-level = <7>;
38 pinctrl-0 = <&pwm0_out>;
39 pinctrl-names = "default";
30 }; 40 };
31 41
32 fixed-rate-clocks { 42 fixed-rate-clocks {
@@ -50,18 +60,14 @@
50 }; 60 };
51 }; 61 };
52 62
53 backlight { 63 memory {
54 compatible = "pwm-backlight"; 64 reg = <0x20000000 0x80000000>;
55 pwms = <&pwm 0 1000000 0>;
56 brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
57 default-brightness-level = <7>;
58 pinctrl-0 = <&pwm0_out>;
59 pinctrl-names = "default";
60 }; 65 };
61 66
62 sound { 67 sound {
63 compatible = "google,snow-audio-max98090"; 68 compatible = "google,snow-audio-max98090";
64 69
70 samsung,model = "Peach-Pit-I2S-MAX98090";
65 samsung,i2s-controller = <&i2s0>; 71 samsung,i2s-controller = <&i2s0>;
66 samsung,audio-codec = <&max98090>; 72 samsung,audio-codec = <&max98090>;
67 }; 73 };
@@ -87,66 +93,92 @@
87 pinctrl-0 = <&usb301_vbus_en>; 93 pinctrl-0 = <&usb301_vbus_en>;
88 enable-active-high; 94 enable-active-high;
89 }; 95 };
90};
91 96
92&pinctrl_0 { 97 vbat: fixed-regulator {
93 max98090_irq: max98090-irq { 98 compatible = "regulator-fixed";
94 samsung,pins = "gpx0-2"; 99 regulator-name = "vbat-supply";
95 samsung,pin-function = <0>; 100 regulator-boot-on;
96 samsung,pin-pud = <0>; 101 regulator-always-on;
97 samsung,pin-drv = <0>;
98 }; 102 };
103};
99 104
100 tpm_irq: tpm-irq { 105&dp {
101 samsung,pins = "gpx1-0"; 106 status = "okay";
102 samsung,pin-function = <0>; 107 pinctrl-names = "default";
103 samsung,pin-pud = <0>; 108 pinctrl-0 = <&dp_hpd_gpio>;
104 samsung,pin-drv = <0>; 109 samsung,color-space = <0>;
105 }; 110 samsung,dynamic-range = <0>;
111 samsung,ycbcr-coeff = <0>;
112 samsung,color-depth = <1>;
113 samsung,link-rate = <0x06>;
114 samsung,lane-count = <2>;
115 samsung,hpd-gpio = <&gpx2 6 0>;
106 116
107 power_key_irq: power-key-irq { 117 display-timings {
108 samsung,pins = "gpx1-2"; 118 native-mode = <&timing1>;
109 samsung,pin-function = <0>;
110 samsung,pin-pud = <0>;
111 samsung,pin-drv = <0>;
112 };
113 119
114 hdmi_hpd_irq: hdmi-hpd-irq { 120 timing1: timing@1 {
115 samsung,pins = "gpx3-7"; 121 clock-frequency = <70589280>;
116 samsung,pin-function = <0>; 122 hactive = <1366>;
117 samsung,pin-pud = <1>; 123 vactive = <768>;
118 samsung,pin-drv = <0>; 124 hfront-porch = <40>;
125 hback-porch = <40>;
126 hsync-len = <32>;
127 vback-porch = <10>;
128 vfront-porch = <12>;
129 vsync-len = <6>;
130 };
119 }; 131 };
132};
120 133
121 dp_hpd_gpio: dp_hpd_gpio { 134&fimd {
122 samsung,pins = "gpx2-6"; 135 status = "okay";
123 samsung,pin-function = <0>; 136 samsung,invert-vclk;
124 samsung,pin-pud = <3>;
125 samsung,pin-drv = <0>;
126 };
127}; 137};
128 138
129&pinctrl_3 { 139&hdmi {
130 usb300_vbus_en: usb300-vbus-en { 140 status = "okay";
131 samsung,pins = "gph0-0"; 141 hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
132 samsung,pin-function = <1>; 142 pinctrl-names = "default";
133 samsung,pin-pud = <0>; 143 pinctrl-0 = <&hdmi_hpd_irq>;
134 samsung,pin-drv = <0>; 144 ddc = <&i2c_2>;
145};
146
147&hsi2c_7 {
148 status = "okay";
149
150 max98090: codec@10 {
151 compatible = "maxim,max98090";
152 reg = <0x10>;
153 interrupts = <2 0>;
154 interrupt-parent = <&gpx0>;
155 pinctrl-names = "default";
156 pinctrl-0 = <&max98090_irq>;
135 }; 157 };
158};
136 159
137 usb301_vbus_en: usb301-vbus-en { 160&hsi2c_9 {
138 samsung,pins = "gph0-1"; 161 status = "okay";
139 samsung,pin-function = <1>; 162 clock-frequency = <400000>;
140 samsung,pin-pud = <0>; 163
141 samsung,pin-drv = <0>; 164 tpm@20 {
165 compatible = "infineon,slb9645tt";
166 reg = <0x20>;
167
168 /* Unused irq; but still need to configure the pins */
169 pinctrl-names = "default";
170 pinctrl-0 = <&tpm_irq>;
142 }; 171 };
143}; 172};
144 173
145&rtc { 174&i2c_2 {
146 status = "okay"; 175 status = "okay";
176 samsung,i2c-sda-delay = <100>;
177 samsung,i2c-max-bus-freq = <66000>;
178 samsung,i2c-slave-addr = <0x50>;
147}; 179};
148 180
149&uart_3 { 181&i2s0 {
150 status = "okay"; 182 status = "okay";
151}; 183};
152 184
@@ -189,46 +221,210 @@
189 }; 221 };
190}; 222};
191 223
192&hsi2c_7 {
193 status = "okay";
194 224
195 max98090: codec@10 { 225&pinctrl_0 {
196 compatible = "maxim,max98090"; 226 pinctrl-names = "default";
197 reg = <0x10>; 227 pinctrl-0 = <&mask_tpm_reset>;
198 interrupts = <2 0>; 228
199 interrupt-parent = <&gpx0>; 229 max98090_irq: max98090-irq {
200 pinctrl-names = "default"; 230 samsung,pins = "gpx0-2";
201 pinctrl-0 = <&max98090_irq>; 231 samsung,pin-function = <0>;
232 samsung,pin-pud = <0>;
233 samsung,pin-drv = <0>;
234 };
235
236 /* We need GPX0_6 to be low at sleep time; just keep it low always */
237 mask_tpm_reset: mask-tpm-reset {
238 samsung,pins = "gpx0-6";
239 samsung,pin-function = <1>;
240 samsung,pin-pud = <0>;
241 samsung,pin-drv = <0>;
242 samsung,pin-val = <0>;
243 };
244
245 tpm_irq: tpm-irq {
246 samsung,pins = "gpx1-0";
247 samsung,pin-function = <0>;
248 samsung,pin-pud = <0>;
249 samsung,pin-drv = <0>;
250 };
251
252 power_key_irq: power-key-irq {
253 samsung,pins = "gpx1-2";
254 samsung,pin-function = <0>;
255 samsung,pin-pud = <0>;
256 samsung,pin-drv = <0>;
257 };
258
259 ec_irq: ec-irq {
260 samsung,pins = "gpx1-5";
261 samsung,pin-function = <0>;
262 samsung,pin-pud = <0>;
263 samsung,pin-drv = <0>;
264 };
265
266 tps65090_irq: tps65090-irq {
267 samsung,pins = "gpx2-5";
268 samsung,pin-function = <0>;
269 samsung,pin-pud = <0>;
270 samsung,pin-drv = <0>;
271 };
272
273 dp_hpd_gpio: dp_hpd_gpio {
274 samsung,pins = "gpx2-6";
275 samsung,pin-function = <0>;
276 samsung,pin-pud = <3>;
277 samsung,pin-drv = <0>;
278 };
279
280 hdmi_hpd_irq: hdmi-hpd-irq {
281 samsung,pins = "gpx3-7";
282 samsung,pin-function = <0>;
283 samsung,pin-pud = <1>;
284 samsung,pin-drv = <0>;
202 }; 285 };
203}; 286};
204 287
205&hsi2c_9 { 288&pinctrl_3 {
206 status = "okay"; 289 /* Drive SPI lines at x2 for better integrity */
207 clock-frequency = <400000>; 290 spi2-bus {
291 samsung,pin-drv = <2>;
292 };
208 293
209 tpm@20 { 294 /* Drive SPI chip select at x2 for better integrity */
210 compatible = "infineon,slb9645tt"; 295 ec_spi_cs: ec-spi-cs {
211 reg = <0x20>; 296 samsung,pins = "gpb1-2";
297 samsung,pin-function = <1>;
298 samsung,pin-pud = <0>;
299 samsung,pin-drv = <2>;
300 };
212 301
213 /* Unused irq; but still need to configure the pins */ 302 usb300_vbus_en: usb300-vbus-en {
214 pinctrl-names = "default"; 303 samsung,pins = "gph0-0";
215 pinctrl-0 = <&tpm_irq>; 304 samsung,pin-function = <1>;
305 samsung,pin-pud = <0>;
306 samsung,pin-drv = <0>;
307 };
308
309 usb301_vbus_en: usb301-vbus-en {
310 samsung,pins = "gph0-1";
311 samsung,pin-function = <1>;
312 samsung,pin-pud = <0>;
313 samsung,pin-drv = <0>;
216 }; 314 };
217}; 315};
218 316
219&i2c_2 { 317&rtc {
220 status = "okay"; 318 status = "okay";
221 samsung,i2c-sda-delay = <100>;
222 samsung,i2c-max-bus-freq = <66000>;
223 samsung,i2c-slave-addr = <0x50>;
224}; 319};
225 320
226&hdmi { 321&spi_2 {
322 status = "okay";
323 num-cs = <1>;
324 samsung,spi-src-clk = <0>;
325 cs-gpios = <&gpb1 2 0>;
326
327 cros_ec: cros-ec@0 {
328 compatible = "google,cros-ec-spi";
329 interrupt-parent = <&gpx1>;
330 interrupts = <5 0>;
331 pinctrl-names = "default";
332 pinctrl-0 = <&ec_spi_cs &ec_irq>;
333 reg = <0>;
334 spi-max-frequency = <3125000>;
335
336 controller-data {
337 samsung,spi-feedback-delay = <1>;
338 };
339
340 i2c-tunnel {
341 compatible = "google,cros-ec-i2c-tunnel";
342 #address-cells = <1>;
343 #size-cells = <0>;
344 google,remote-bus = <0>;
345
346 battery: sbs-battery@b {
347 compatible = "sbs,sbs-battery";
348 reg = <0xb>;
349 sbs,poll-retry-count = <1>;
350 sbs,i2c-retry-count = <2>;
351 };
352
353 power-regulator@48 {
354 compatible = "ti,tps65090";
355 reg = <0x48>;
356
357 /*
358 * Config irq to disable internal pulls
359 * even though we run in polling mode.
360 */
361 pinctrl-names = "default";
362 pinctrl-0 = <&tps65090_irq>;
363
364 vsys1-supply = <&vbat>;
365 vsys2-supply = <&vbat>;
366 vsys3-supply = <&vbat>;
367 infet1-supply = <&vbat>;
368 infet2-supply = <&vbat>;
369 infet3-supply = <&vbat>;
370 infet4-supply = <&vbat>;
371 infet5-supply = <&vbat>;
372 infet6-supply = <&vbat>;
373 infet7-supply = <&vbat>;
374 vsys-l1-supply = <&vbat>;
375 vsys-l2-supply = <&vbat>;
376
377 regulators {
378 tps65090_dcdc1: dcdc1 {
379 ti,enable-ext-control;
380 };
381 tps65090_dcdc2: dcdc2 {
382 ti,enable-ext-control;
383 };
384 tps65090_dcdc3: dcdc3 {
385 ti,enable-ext-control;
386 };
387 tps65090_fet1: fet1 {
388 regulator-name = "vcd_led";
389 };
390 tps65090_fet2: fet2 {
391 regulator-name = "video_mid";
392 regulator-always-on;
393 };
394 tps65090_fet3: fet3 {
395 regulator-name = "wwan_r";
396 regulator-always-on;
397 };
398 tps65090_fet4: fet4 {
399 regulator-name = "sdcard";
400 regulator-always-on;
401 };
402 tps65090_fet5: fet5 {
403 regulator-name = "camout";
404 };
405 tps65090_fet6: fet6 {
406 regulator-name = "lcd_vdd";
407 };
408 tps65090_fet7: fet7 {
409 regulator-name = "video_mid_1a";
410 regulator-always-on;
411 };
412 tps65090_ldo1: ldo1 {
413 };
414 tps65090_ldo2: ldo2 {
415 };
416 };
417
418 charger {
419 compatible = "ti,tps65090-charger";
420 };
421 };
422 };
423 };
424};
425
426&uart_3 {
227 status = "okay"; 427 status = "okay";
228 hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
229 pinctrl-names = "default";
230 pinctrl-0 = <&hdmi_hpd_irq>;
231 ddc = <&i2c_2>;
232}; 428};
233 429
234&usbdrd_phy0 { 430&usbdrd_phy0 {
@@ -248,40 +444,4 @@
248 timeout-sec = <32>; 444 timeout-sec = <32>;
249}; 445};
250 446
251&i2s0 { 447#include "cros-ec-keyboard.dtsi"
252 status = "okay";
253};
254
255&fimd {
256 status = "okay";
257 samsung,invert-vclk;
258};
259
260&dp {
261 status = "okay";
262 pinctrl-names = "default";
263 pinctrl-0 = <&dp_hpd_gpio>;
264 samsung,color-space = <0>;
265 samsung,dynamic-range = <0>;
266 samsung,ycbcr-coeff = <0>;
267 samsung,color-depth = <1>;
268 samsung,link-rate = <0x06>;
269 samsung,lane-count = <2>;
270 samsung,hpd-gpio = <&gpx2 6 0>;
271
272 display-timings {
273 native-mode = <&timing1>;
274
275 timing1: timing@1 {
276 clock-frequency = <70589280>;
277 hactive = <1366>;
278 vactive = <768>;
279 hfront-porch = <40>;
280 hback-porch = <40>;
281 hsync-len = <32>;
282 vback-porch = <10>;
283 vfront-porch = <12>;
284 vsync-len = <6>;
285 };
286 };
287};
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
index 15957227ffda..b69de2661011 100644
--- a/arch/arm/boot/dts/exynos5420.dtsi
+++ b/arch/arm/boot/dts/exynos5420.dtsi
@@ -265,11 +265,6 @@
265 clock-names = "oscclk", "pclk0", "clk0"; 265 clock-names = "oscclk", "pclk0", "clk0";
266 }; 266 };
267 267
268 disp_pd: power-domain@100440C0 {
269 compatible = "samsung,exynos4210-pd";
270 reg = <0x100440C0 0x20>;
271 };
272
273 msc_pd: power-domain@10044120 { 268 msc_pd: power-domain@10044120 {
274 compatible = "samsung,exynos4210-pd"; 269 compatible = "samsung,exynos4210-pd";
275 reg = <0x10044120 0x20>; 270 reg = <0x10044120 0x20>;
@@ -521,7 +516,6 @@
521 }; 516 };
522 517
523 fimd: fimd@14400000 { 518 fimd: fimd@14400000 {
524 samsung,power-domain = <&disp_pd>;
525 clocks = <&clock CLK_SCLK_FIMD1>, <&clock CLK_FIMD1>; 519 clocks = <&clock CLK_SCLK_FIMD1>, <&clock CLK_FIMD1>;
526 clock-names = "sclk_fimd", "fimd"; 520 clock-names = "sclk_fimd", "fimd";
527 }; 521 };
diff --git a/arch/arm/boot/dts/exynos5800-peach-pi.dts b/arch/arm/boot/dts/exynos5800-peach-pi.dts
index f3af2079a063..f3ee48bbe05f 100644
--- a/arch/arm/boot/dts/exynos5800-peach-pi.dts
+++ b/arch/arm/boot/dts/exynos5800-peach-pi.dts
@@ -23,8 +23,18 @@
23 "google,pi", "google,peach", "samsung,exynos5800", 23 "google,pi", "google,peach", "samsung,exynos5800",
24 "samsung,exynos5"; 24 "samsung,exynos5";
25 25
26 memory { 26 aliases {
27 reg = <0x20000000 0x80000000>; 27 /* Assign 20 so we don't get confused w/ builtin ones */
28 i2c20 = "/spi@12d40000/cros-ec@0/i2c-tunnel";
29 };
30
31 backlight {
32 compatible = "pwm-backlight";
33 pwms = <&pwm 0 1000000 0>;
34 brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
35 default-brightness-level = <7>;
36 pinctrl-0 = <&pwm0_out>;
37 pinctrl-names = "default";
28 }; 38 };
29 39
30 fixed-rate-clocks { 40 fixed-rate-clocks {
@@ -48,13 +58,16 @@
48 }; 58 };
49 }; 59 };
50 60
51 backlight { 61 memory {
52 compatible = "pwm-backlight"; 62 reg = <0x20000000 0x80000000>;
53 pwms = <&pwm 0 1000000 0>; 63 };
54 brightness-levels = <0 100 500 1000 1500 2000 2500 2800>; 64
55 default-brightness-level = <7>; 65 sound {
56 pinctrl-0 = <&pwm0_out>; 66 compatible = "google,snow-audio-max98091";
57 pinctrl-names = "default"; 67
68 samsung,model = "Peach-Pi-I2S-MAX98091";
69 samsung,i2s-controller = <&i2s0>;
70 samsung,audio-codec = <&max98091>;
58 }; 71 };
59 72
60 usb300_vbus_reg: regulator-usb300 { 73 usb300_vbus_reg: regulator-usb300 {
@@ -78,59 +91,92 @@
78 pinctrl-0 = <&usb301_vbus_en>; 91 pinctrl-0 = <&usb301_vbus_en>;
79 enable-active-high; 92 enable-active-high;
80 }; 93 };
81};
82 94
83&pinctrl_0 { 95 vbat: fixed-regulator {
84 tpm_irq: tpm-irq { 96 compatible = "regulator-fixed";
85 samsung,pins = "gpx1-0"; 97 regulator-name = "vbat-supply";
86 samsung,pin-function = <0>; 98 regulator-boot-on;
87 samsung,pin-pud = <0>; 99 regulator-always-on;
88 samsung,pin-drv = <0>;
89 }; 100 };
101};
90 102
91 power_key_irq: power-key-irq { 103&dp {
92 samsung,pins = "gpx1-2"; 104 status = "okay";
93 samsung,pin-function = <0>; 105 pinctrl-names = "default";
94 samsung,pin-pud = <0>; 106 pinctrl-0 = <&dp_hpd_gpio>;
95 samsung,pin-drv = <0>; 107 samsung,color-space = <0>;
96 }; 108 samsung,dynamic-range = <0>;
109 samsung,ycbcr-coeff = <0>;
110 samsung,color-depth = <1>;
111 samsung,link-rate = <0x0a>;
112 samsung,lane-count = <2>;
113 samsung,hpd-gpio = <&gpx2 6 0>;
97 114
98 dp_hpd_gpio: dp_hpd_gpio { 115 display-timings {
99 samsung,pins = "gpx2-6"; 116 native-mode = <&timing1>;
100 samsung,pin-function = <0>;
101 samsung,pin-pud = <3>;
102 samsung,pin-drv = <0>;
103 };
104 117
105 hdmi_hpd_irq: hdmi-hpd-irq { 118 timing1: timing@1 {
106 samsung,pins = "gpx3-7"; 119 clock-frequency = <150660000>;
107 samsung,pin-function = <0>; 120 hactive = <1920>;
108 samsung,pin-pud = <1>; 121 vactive = <1080>;
109 samsung,pin-drv = <0>; 122 hfront-porch = <60>;
123 hback-porch = <172>;
124 hsync-len = <80>;
125 vback-porch = <25>;
126 vfront-porch = <10>;
127 vsync-len = <10>;
128 };
110 }; 129 };
111}; 130};
112 131
113&pinctrl_3 { 132&fimd {
114 usb300_vbus_en: usb300-vbus-en { 133 status = "okay";
115 samsung,pins = "gph0-0"; 134 samsung,invert-vclk;
116 samsung,pin-function = <1>; 135};
117 samsung,pin-pud = <0>; 136
118 samsung,pin-drv = <0>; 137&hdmi {
138 status = "okay";
139 hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
140 pinctrl-names = "default";
141 pinctrl-0 = <&hdmi_hpd_irq>;
142 ddc = <&i2c_2>;
143};
144
145&hsi2c_7 {
146 status = "okay";
147
148 max98091: codec@10 {
149 compatible = "maxim,max98091";
150 reg = <0x10>;
151 interrupts = <2 0>;
152 interrupt-parent = <&gpx0>;
153 pinctrl-names = "default";
154 pinctrl-0 = <&max98091_irq>;
119 }; 155 };
156};
120 157
121 usb301_vbus_en: usb301-vbus-en { 158&hsi2c_9 {
122 samsung,pins = "gph0-1"; 159 status = "okay";
123 samsung,pin-function = <1>; 160 clock-frequency = <400000>;
124 samsung,pin-pud = <0>; 161
125 samsung,pin-drv = <0>; 162 tpm@20 {
163 compatible = "infineon,slb9645tt";
164 reg = <0x20>;
165
166 /* Unused irq; but still need to configure the pins */
167 pinctrl-names = "default";
168 pinctrl-0 = <&tpm_irq>;
126 }; 169 };
127}; 170};
128 171
129&rtc { 172&i2c_2 {
130 status = "okay"; 173 status = "okay";
174 samsung,i2c-sda-delay = <100>;
175 samsung,i2c-max-bus-freq = <66000>;
176 samsung,i2c-slave-addr = <0x50>;
131}; 177};
132 178
133&uart_3 { 179&i2s0 {
134 status = "okay"; 180 status = "okay";
135}; 181};
136 182
@@ -173,66 +219,210 @@
173 }; 219 };
174}; 220};
175 221
176&dp { 222
177 status = "okay"; 223&pinctrl_0 {
178 pinctrl-names = "default"; 224 pinctrl-names = "default";
179 pinctrl-0 = <&dp_hpd_gpio>; 225 pinctrl-0 = <&mask_tpm_reset>;
180 samsung,color-space = <0>;
181 samsung,dynamic-range = <0>;
182 samsung,ycbcr-coeff = <0>;
183 samsung,color-depth = <1>;
184 samsung,link-rate = <0x0a>;
185 samsung,lane-count = <2>;
186 samsung,hpd-gpio = <&gpx2 6 0>;
187 226
188 display-timings { 227 max98091_irq: max98091-irq {
189 native-mode = <&timing1>; 228 samsung,pins = "gpx0-2";
229 samsung,pin-function = <0>;
230 samsung,pin-pud = <0>;
231 samsung,pin-drv = <0>;
232 };
190 233
191 timing1: timing@1 { 234 /* We need GPX0_6 to be low at sleep time; just keep it low always */
192 clock-frequency = <150660000>; 235 mask_tpm_reset: mask-tpm-reset {
193 hactive = <1920>; 236 samsung,pins = "gpx0-6";
194 vactive = <1080>; 237 samsung,pin-function = <1>;
195 hfront-porch = <60>; 238 samsung,pin-pud = <0>;
196 hback-porch = <172>; 239 samsung,pin-drv = <0>;
197 hsync-len = <80>; 240 samsung,pin-val = <0>;
198 vback-porch = <25>;
199 vfront-porch = <10>;
200 vsync-len = <10>;
201 };
202 }; 241 };
203};
204 242
205&fimd { 243 tpm_irq: tpm-irq {
206 status = "okay"; 244 samsung,pins = "gpx1-0";
207 samsung,invert-vclk; 245 samsung,pin-function = <0>;
246 samsung,pin-pud = <0>;
247 samsung,pin-drv = <0>;
248 };
249
250 power_key_irq: power-key-irq {
251 samsung,pins = "gpx1-2";
252 samsung,pin-function = <0>;
253 samsung,pin-pud = <0>;
254 samsung,pin-drv = <0>;
255 };
256
257 ec_irq: ec-irq {
258 samsung,pins = "gpx1-5";
259 samsung,pin-function = <0>;
260 samsung,pin-pud = <0>;
261 samsung,pin-drv = <0>;
262 };
263
264 tps65090_irq: tps65090-irq {
265 samsung,pins = "gpx2-5";
266 samsung,pin-function = <0>;
267 samsung,pin-pud = <0>;
268 samsung,pin-drv = <0>;
269 };
270
271 dp_hpd_gpio: dp_hpd_gpio {
272 samsung,pins = "gpx2-6";
273 samsung,pin-function = <0>;
274 samsung,pin-pud = <3>;
275 samsung,pin-drv = <0>;
276 };
277
278 hdmi_hpd_irq: hdmi-hpd-irq {
279 samsung,pins = "gpx3-7";
280 samsung,pin-function = <0>;
281 samsung,pin-pud = <1>;
282 samsung,pin-drv = <0>;
283 };
208}; 284};
209 285
210&hsi2c_9 { 286&pinctrl_3 {
211 status = "okay"; 287 /* Drive SPI lines at x2 for better integrity */
212 clock-frequency = <400000>; 288 spi2-bus {
289 samsung,pin-drv = <2>;
290 };
213 291
214 tpm@20 { 292 /* Drive SPI chip select at x2 for better integrity */
215 compatible = "infineon,slb9645tt"; 293 ec_spi_cs: ec-spi-cs {
216 reg = <0x20>; 294 samsung,pins = "gpb1-2";
217 /* Unused irq; but still need to configure the pins */ 295 samsung,pin-function = <1>;
218 pinctrl-names = "default"; 296 samsung,pin-pud = <0>;
219 pinctrl-0 = <&tpm_irq>; 297 samsung,pin-drv = <2>;
298 };
299
300 usb300_vbus_en: usb300-vbus-en {
301 samsung,pins = "gph0-0";
302 samsung,pin-function = <1>;
303 samsung,pin-pud = <0>;
304 samsung,pin-drv = <0>;
305 };
306
307 usb301_vbus_en: usb301-vbus-en {
308 samsung,pins = "gph0-1";
309 samsung,pin-function = <1>;
310 samsung,pin-pud = <0>;
311 samsung,pin-drv = <0>;
220 }; 312 };
221}; 313};
222 314
223&i2c_2 { 315&rtc {
224 status = "okay"; 316 status = "okay";
225 samsung,i2c-sda-delay = <100>;
226 samsung,i2c-max-bus-freq = <66000>;
227 samsung,i2c-slave-addr = <0x50>;
228}; 317};
229 318
230&hdmi { 319&spi_2 {
320 status = "okay";
321 num-cs = <1>;
322 samsung,spi-src-clk = <0>;
323 cs-gpios = <&gpb1 2 0>;
324
325 cros_ec: cros-ec@0 {
326 compatible = "google,cros-ec-spi";
327 interrupt-parent = <&gpx1>;
328 interrupts = <5 0>;
329 pinctrl-names = "default";
330 pinctrl-0 = <&ec_spi_cs &ec_irq>;
331 reg = <0>;
332 spi-max-frequency = <3125000>;
333
334 controller-data {
335 samsung,spi-feedback-delay = <1>;
336 };
337
338 i2c-tunnel {
339 compatible = "google,cros-ec-i2c-tunnel";
340 #address-cells = <1>;
341 #size-cells = <0>;
342 google,remote-bus = <0>;
343
344 battery: sbs-battery@b {
345 compatible = "sbs,sbs-battery";
346 reg = <0xb>;
347 sbs,poll-retry-count = <1>;
348 sbs,i2c-retry-count = <2>;
349 };
350
351 power-regulator@48 {
352 compatible = "ti,tps65090";
353 reg = <0x48>;
354
355 /*
356 * Config irq to disable internal pulls
357 * even though we run in polling mode.
358 */
359 pinctrl-names = "default";
360 pinctrl-0 = <&tps65090_irq>;
361
362 vsys1-supply = <&vbat>;
363 vsys2-supply = <&vbat>;
364 vsys3-supply = <&vbat>;
365 infet1-supply = <&vbat>;
366 infet2-supply = <&vbat>;
367 infet3-supply = <&vbat>;
368 infet4-supply = <&vbat>;
369 infet5-supply = <&vbat>;
370 infet6-supply = <&vbat>;
371 infet7-supply = <&vbat>;
372 vsys-l1-supply = <&vbat>;
373 vsys-l2-supply = <&vbat>;
374
375 regulators {
376 tps65090_dcdc1: dcdc1 {
377 ti,enable-ext-control;
378 };
379 tps65090_dcdc2: dcdc2 {
380 ti,enable-ext-control;
381 };
382 tps65090_dcdc3: dcdc3 {
383 ti,enable-ext-control;
384 };
385 tps65090_fet1: fet1 {
386 regulator-name = "vcd_led";
387 };
388 tps65090_fet2: fet2 {
389 regulator-name = "video_mid";
390 regulator-always-on;
391 };
392 tps65090_fet3: fet3 {
393 regulator-name = "wwan_r";
394 regulator-always-on;
395 };
396 tps65090_fet4: fet4 {
397 regulator-name = "sdcard";
398 regulator-always-on;
399 };
400 tps65090_fet5: fet5 {
401 regulator-name = "camout";
402 };
403 tps65090_fet6: fet6 {
404 regulator-name = "lcd_vdd";
405 };
406 tps65090_fet7: fet7 {
407 regulator-name = "video_mid_1a";
408 regulator-always-on;
409 };
410 tps65090_ldo1: ldo1 {
411 };
412 tps65090_ldo2: ldo2 {
413 };
414 };
415
416 charger {
417 compatible = "ti,tps65090-charger";
418 };
419 };
420 };
421 };
422};
423
424&uart_3 {
231 status = "okay"; 425 status = "okay";
232 hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
233 pinctrl-names = "default";
234 pinctrl-0 = <&hdmi_hpd_irq>;
235 ddc = <&i2c_2>;
236}; 426};
237 427
238&usbdrd_phy0 { 428&usbdrd_phy0 {
@@ -251,3 +441,5 @@
251&watchdog { 441&watchdog {
252 timeout-sec = <32>; 442 timeout-sec = <32>;
253}; 443};
444
445#include "cros-ec-keyboard.dtsi"