ARM: dts: Add cros_ec to exynos5420-peach-pit and exynos5800-peach-pi
[cascardo/linux.git] / arch / arm / boot / dts / exynos5420-peach-pit.dts
1 /*
2  * Google Peach Pit Rev 6+ board device tree source
3  *
4  * Copyright (c) 2014 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 <dt-bindings/input/input.h>
13 #include <dt-bindings/gpio/gpio.h>
14 #include "exynos5420.dtsi"
15
16 / {
17         model = "Google Peach Pit Rev 6+";
18
19         compatible = "google,pit-rev16",
20                 "google,pit-rev15", "google,pit-rev14",
21                 "google,pit-rev13", "google,pit-rev12",
22                 "google,pit-rev11", "google,pit-rev10",
23                 "google,pit-rev9", "google,pit-rev8",
24                 "google,pit-rev7", "google,pit-rev6",
25                 "google,pit", "google,peach","samsung,exynos5420",
26                 "samsung,exynos5";
27
28         aliases {
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";
40         };
41
42         fixed-rate-clocks {
43                 oscclk {
44                         compatible = "samsung,exynos5420-oscclk";
45                         clock-frequency = <24000000>;
46                 };
47         };
48
49         gpio-keys {
50                 compatible = "gpio-keys";
51
52                 pinctrl-names = "default";
53                 pinctrl-0 = <&power_key_irq>;
54
55                 power {
56                         label = "Power";
57                         gpios = <&gpx1 2 GPIO_ACTIVE_LOW>;
58                         linux,code = <KEY_POWER>;
59                         gpio-key,wakeup;
60                 };
61         };
62
63         memory {
64                 reg = <0x20000000 0x80000000>;
65         };
66
67         sound {
68                 compatible = "google,snow-audio-max98090";
69
70                 samsung,model = "Peach-Pit-I2S-MAX98090";
71                 samsung,i2s-controller = <&i2s0>;
72                 samsung,audio-codec = <&max98090>;
73         };
74
75         usb300_vbus_reg: regulator-usb300 {
76                 compatible = "regulator-fixed";
77                 regulator-name = "P5.0V_USB3CON0";
78                 regulator-min-microvolt = <5000000>;
79                 regulator-max-microvolt = <5000000>;
80                 gpio = <&gph0 0 0>;
81                 pinctrl-names = "default";
82                 pinctrl-0 = <&usb300_vbus_en>;
83                 enable-active-high;
84         };
85
86         usb301_vbus_reg: regulator-usb301 {
87                 compatible = "regulator-fixed";
88                 regulator-name = "P5.0V_USB3CON1";
89                 regulator-min-microvolt = <5000000>;
90                 regulator-max-microvolt = <5000000>;
91                 gpio = <&gph0 1 0>;
92                 pinctrl-names = "default";
93                 pinctrl-0 = <&usb301_vbus_en>;
94                 enable-active-high;
95         };
96
97         vbat: fixed-regulator {
98                 compatible = "regulator-fixed";
99                 regulator-name = "vbat-supply";
100                 regulator-boot-on;
101                 regulator-always-on;
102         };
103 };
104
105 &dp {
106         status = "okay";
107         pinctrl-names = "default";
108         pinctrl-0 = <&dp_hpd_gpio>;
109         samsung,color-space = <0>;
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>;
116
117         display-timings {
118                 native-mode = <&timing1>;
119
120                 timing1: timing@1 {
121                         clock-frequency = <70589280>;
122                         hactive = <1366>;
123                         vactive = <768>;
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                 };
131         };
132 };
133
134 &fimd {
135         status = "okay";
136         samsung,invert-vclk;
137 };
138
139 &hdmi {
140         status = "okay";
141         hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
142         pinctrl-names = "default";
143         pinctrl-0 = <&hdmi_hpd_irq>;
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>;
157         };
158 };
159
160 &hsi2c_9 {
161         status = "okay";
162         clock-frequency = <400000>;
163
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>;
171         };
172 };
173
174 &i2c_2 {
175         status = "okay";
176         samsung,i2c-sda-delay = <100>;
177         samsung,i2c-max-bus-freq = <66000>;
178         samsung,i2c-slave-addr = <0x50>;
179 };
180
181 &i2s0 {
182         status = "okay";
183 };
184
185 &mmc_0 {
186         status = "okay";
187         num-slots = <1>;
188         broken-cd;
189         caps2-mmc-hs200-1_8v;
190         supports-highspeed;
191         non-removable;
192         card-detect-delay = <200>;
193         clock-frequency = <400000000>;
194         samsung,dw-mshc-ciu-div = <3>;
195         samsung,dw-mshc-sdr-timing = <0 4>;
196         samsung,dw-mshc-ddr-timing = <0 2>;
197         pinctrl-names = "default";
198         pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
199
200         slot@0 {
201                 reg = <0>;
202                 bus-width = <8>;
203         };
204 };
205
206 &mmc_2 {
207         status = "okay";
208         num-slots = <1>;
209         supports-highspeed;
210         card-detect-delay = <200>;
211         clock-frequency = <400000000>;
212         samsung,dw-mshc-ciu-div = <3>;
213         samsung,dw-mshc-sdr-timing = <2 3>;
214         samsung,dw-mshc-ddr-timing = <1 2>;
215         pinctrl-names = "default";
216         pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
217
218         slot@0 {
219                 reg = <0>;
220                 bus-width = <4>;
221         };
222 };
223
224
225 &pinctrl_0 {
226         pinctrl-names = "default";
227         pinctrl-0 = <&mask_tpm_reset>;
228
229         max98090_irq: max98090-irq {
230                 samsung,pins = "gpx0-2";
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>;
285         };
286 };
287
288 &pinctrl_3 {
289         /* Drive SPI lines at x2 for better integrity */
290         spi2-bus {
291                 samsung,pin-drv = <2>;
292         };
293
294         /* Drive SPI chip select at x2 for better integrity */
295         ec_spi_cs: ec-spi-cs {
296                 samsung,pins = "gpb1-2";
297                 samsung,pin-function = <1>;
298                 samsung,pin-pud = <0>;
299                 samsung,pin-drv = <2>;
300         };
301
302         usb300_vbus_en: usb300-vbus-en {
303                 samsung,pins = "gph0-0";
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>;
314         };
315 };
316
317 &rtc {
318         status = "okay";
319 };
320
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 {
427         status = "okay";
428 };
429
430 &usbdrd_phy0 {
431         vbus-supply = <&usb300_vbus_reg>;
432 };
433
434 &usbdrd_phy1 {
435         vbus-supply = <&usb301_vbus_reg>;
436 };
437
438 /*
439  * Use longest HW watchdog in SoC (32 seconds) since the hardware
440  * watchdog provides no debugging information (compared to soft/hard
441  * lockup detectors) and so should be last resort.
442  */
443 &watchdog {
444         timeout-sec = <32>;
445 };
446
447 #include "cros-ec-keyboard.dtsi"