1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Google Peach Pi Rev 10+ board device tree source
4 *
5 * Copyright (c) 2014 Google, Inc
6 */
7
8/dts-v1/;
9#include <dt-bindings/input/input.h>
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/interrupt-controller/irq.h>
12#include <dt-bindings/clock/maxim,max77802.h>
13#include <dt-bindings/regulator/maxim,max77802.h>
14#include <dt-bindings/sound/samsung-i2s.h>
15#include "exynos5800.dtsi"
16#include "exynos5420-cpus.dtsi"
17
18/ {
19	model = "Google Peach Pi Rev 10+";
20
21	compatible = "google,pi-rev16",
22		"google,pi-rev15", "google,pi-rev14",
23		"google,pi-rev13", "google,pi-rev12",
24		"google,pi-rev11", "google,pi-rev10",
25		"google,pi", "google,peach", "samsung,exynos5800",
26		"samsung,exynos5";
27
28	aliases {
29		/* Assign 20 so we don't get confused w/ builtin ones */
30		i2c20 = &i2c_tunnel;
31	};
32
33	backlight: 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		enable-gpios = <&gpx2 2 GPIO_ACTIVE_HIGH>;
39		power-supply = <&tps65090_fet1>;
40		pinctrl-0 = <&pwm0_out>;
41		pinctrl-names = "default";
42	};
43
44	chosen {
45		stdout-path = "serial3:115200n8";
46	};
47
48	fixed-rate-clocks {
49		oscclk {
50			compatible = "samsung,exynos5420-oscclk";
51			clock-frequency = <24000000>;
52		};
53	};
54
55	gpio-keys {
56		compatible = "gpio-keys";
57
58		pinctrl-names = "default";
59		pinctrl-0 = <&power_key_irq &lid_irq>;
60
61		power {
62			label = "Power";
63			gpios = <&gpx1 2 GPIO_ACTIVE_LOW>;
64			linux,code = <KEY_POWER>;
65			wakeup-source;
66		};
67
68		lid-switch {
69			label = "Lid";
70			gpios = <&gpx3 4 GPIO_ACTIVE_LOW>;
71			linux,input-type = <5>; /* EV_SW */
72			linux,code = <0>; /* SW_LID */
73			debounce-interval = <1>;
74			wakeup-source;
75		};
76
77	};
78
79	memory@20000000 {
80		device_type = "memory";
81		reg = <0x20000000 0x80000000>;
82	};
83
84	sound {
85		compatible = "google,snow-audio-max98091";
86
87		samsung,model = "Peach-Pi-I2S-MAX98091";
88		samsung,i2s-controller = <&i2s0>;
89		samsung,audio-codec = <&max98091>;
90
91		cpu {
92			sound-dai = <&i2s0 0>;
93		};
94
95		codec {
96			sound-dai = <&max98091>, <&hdmi>;
97		};
98	};
99
100	usb300_vbus_reg: regulator-usb300 {
101		compatible = "regulator-fixed";
102		regulator-name = "P5.0V_USB3CON0";
103		regulator-min-microvolt = <5000000>;
104		regulator-max-microvolt = <5000000>;
105		gpio = <&gph0 0 GPIO_ACTIVE_HIGH>;
106		pinctrl-names = "default";
107		pinctrl-0 = <&usb300_vbus_en>;
108		enable-active-high;
109	};
110
111	usb301_vbus_reg: regulator-usb301 {
112		compatible = "regulator-fixed";
113		regulator-name = "P5.0V_USB3CON1";
114		regulator-min-microvolt = <5000000>;
115		regulator-max-microvolt = <5000000>;
116		gpio = <&gph0 1 GPIO_ACTIVE_HIGH>;
117		pinctrl-names = "default";
118		pinctrl-0 = <&usb301_vbus_en>;
119		enable-active-high;
120	};
121
122	vbat: fixed-regulator {
123		compatible = "regulator-fixed";
124		regulator-name = "vbat-supply";
125		regulator-boot-on;
126		regulator-always-on;
127	};
128
129	panel: panel {
130		compatible = "auo,b133htn01";
131		power-supply = <&tps65090_fet6>;
132		backlight = <&backlight>;
133
134		port {
135			panel_in: endpoint {
136				remote-endpoint = <&dp_out>;
137			};
138		};
139	};
140
141	mmc1_pwrseq: mmc1-pwrseq {
142		compatible = "mmc-pwrseq-simple";
143		reset-gpios = <&gpx0 0 GPIO_ACTIVE_LOW>; /* WIFI_EN */
144		clocks = <&max77802 MAX77802_CLK_32K_CP>;
145		clock-names = "ext_clock";
146	};
147};
148
149&adc {
150	status = "okay";
151	vdd-supply = <&ldo9_reg>;
152};
153
154&clock_audss {
155	assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>;
156	assigned-clock-parents = <&clock CLK_MAU_EPLL>;
157};
158
159/*
160 * Peach Pi board uses SoC revision with lower maximum frequency for A7 cores
161 * (1.3 GHz instead of 1.4 GHz) than Odroid XU3/XU4 boards.  Thus we need to
162 * update A7 OPPs table accordingly.
163 */
164&cluster_a7_opp_table {
165	/delete-node/opp-1400000000;
166};
167
168&cpu0 {
169	cpu-supply = <&buck2_reg>;
170};
171
172&cpu4 {
173	cpu-supply = <&buck6_reg>;
174};
175
176&dp {
177	status = "okay";
178	pinctrl-names = "default";
179	pinctrl-0 = <&dp_hpd_gpio>;
180	samsung,color-space = <0>;
181	samsung,color-depth = <1>;
182	samsung,link-rate = <0x0a>;
183	samsung,lane-count = <2>;
184	samsung,hpd-gpio = <&gpx2 6 GPIO_ACTIVE_HIGH>;
185
186	ports {
187		port {
188			dp_out: endpoint {
189				remote-endpoint = <&panel_in>;
190			};
191		};
192	};
193};
194
195&fimd {
196	status = "okay";
197	samsung,invert-vclk;
198};
199
200&hdmi {
201	status = "okay";
202	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
203	pinctrl-names = "default";
204	pinctrl-0 = <&hdmi_hpd_irq>;
205	ddc = <&i2c_2>;
206
207	hdmi-en-supply = <&tps65090_fet7>;
208	vdd-supply = <&ldo8_reg>;
209	vdd_osc-supply = <&ldo10_reg>;
210	vdd_pll-supply = <&ldo8_reg>;
211};
212
213&hsi2c_4 {
214	status = "okay";
215	clock-frequency = <400000>;
216
217	max77802: pmic@9 {
218		compatible = "maxim,max77802";
219		interrupt-parent = <&gpx3>;
220		interrupts = <1 IRQ_TYPE_NONE>;
221		pinctrl-names = "default";
222		pinctrl-0 = <&max77802_irq>, <&pmic_selb>,
223			    <&pmic_dvs_1>, <&pmic_dvs_2>, <&pmic_dvs_3>;
224		wakeup-source;
225		reg = <0x9>;
226		#clock-cells = <1>;
227
228		inb1-supply = <&tps65090_dcdc2>;
229		inb2-supply = <&tps65090_dcdc1>;
230		inb3-supply = <&tps65090_dcdc2>;
231		inb4-supply = <&tps65090_dcdc2>;
232		inb5-supply = <&tps65090_dcdc1>;
233		inb6-supply = <&tps65090_dcdc2>;
234		inb7-supply = <&tps65090_dcdc1>;
235		inb8-supply = <&tps65090_dcdc1>;
236		inb9-supply = <&tps65090_dcdc1>;
237		inb10-supply = <&tps65090_dcdc1>;
238
239		inl1-supply = <&buck5_reg>;
240		inl2-supply = <&buck7_reg>;
241		inl3-supply = <&buck9_reg>;
242		inl4-supply = <&buck9_reg>;
243		inl5-supply = <&buck9_reg>;
244		inl6-supply = <&tps65090_dcdc2>;
245		inl7-supply = <&buck9_reg>;
246		inl9-supply = <&tps65090_dcdc2>;
247		inl10-supply = <&buck7_reg>;
248
249		regulators {
250			buck1_reg: BUCK1 {
251				regulator-name = "vdd_mif";
252				regulator-min-microvolt = <800000>;
253				regulator-max-microvolt = <1300000>;
254				regulator-always-on;
255				regulator-boot-on;
256				regulator-ramp-delay = <12500>;
257				regulator-state-mem {
258					regulator-off-in-suspend;
259				};
260			};
261
262			buck2_reg: BUCK2 {
263				regulator-name = "vdd_arm";
264				regulator-min-microvolt = <800000>;
265				regulator-max-microvolt = <1500000>;
266				regulator-always-on;
267				regulator-boot-on;
268				regulator-ramp-delay = <12500>;
269				regulator-coupled-with = <&buck3_reg>;
270				regulator-coupled-max-spread = <300000>;
271				regulator-state-mem {
272					regulator-off-in-suspend;
273				};
274			};
275
276			buck3_reg: BUCK3 {
277				regulator-name = "vdd_int";
278				regulator-min-microvolt = <800000>;
279				regulator-max-microvolt = <1400000>;
280				regulator-always-on;
281				regulator-boot-on;
282				regulator-ramp-delay = <12500>;
283				regulator-coupled-with = <&buck2_reg>;
284				regulator-coupled-max-spread = <300000>;
285				regulator-state-mem {
286					regulator-off-in-suspend;
287				};
288			};
289
290			buck4_reg: BUCK4 {
291				regulator-name = "vdd_g3d";
292				regulator-min-microvolt = <700000>;
293				regulator-max-microvolt = <1400000>;
294				regulator-always-on;
295				regulator-boot-on;
296				regulator-ramp-delay = <12500>;
297				regulator-state-mem {
298					regulator-off-in-suspend;
299				};
300			};
301
302			buck5_reg: BUCK5 {
303				regulator-name = "vdd_1v2";
304				regulator-min-microvolt = <1200000>;
305				regulator-max-microvolt = <1200000>;
306				regulator-boot-on;
307				regulator-state-mem {
308					regulator-off-in-suspend;
309				};
310			};
311
312			buck6_reg: BUCK6 {
313				regulator-name = "vdd_kfc";
314				regulator-min-microvolt = <800000>;
315				regulator-max-microvolt = <1500000>;
316				regulator-always-on;
317				regulator-boot-on;
318				regulator-ramp-delay = <12500>;
319				regulator-state-mem {
320					regulator-off-in-suspend;
321				};
322			};
323
324			buck7_reg: BUCK7 {
325				regulator-name = "vdd_1v35";
326				regulator-min-microvolt = <1350000>;
327				regulator-max-microvolt = <1350000>;
328				regulator-always-on;
329				regulator-boot-on;
330				regulator-state-mem {
331					regulator-on-in-suspend;
332				};
333			};
334
335			buck8_reg: BUCK8 {
336				regulator-name = "vdd_emmc";
337				regulator-min-microvolt = <2850000>;
338				regulator-max-microvolt = <2850000>;
339				regulator-always-on;
340				regulator-boot-on;
341				regulator-state-mem {
342					regulator-off-in-suspend;
343				};
344			};
345
346			buck9_reg: BUCK9 {
347				regulator-name = "vdd_2v";
348				regulator-min-microvolt = <2000000>;
349				regulator-max-microvolt = <2000000>;
350				regulator-always-on;
351				regulator-boot-on;
352				regulator-state-mem {
353					regulator-on-in-suspend;
354				};
355			};
356
357			buck10_reg: BUCK10 {
358				regulator-name = "vdd_1v8";
359				regulator-min-microvolt = <1800000>;
360				regulator-max-microvolt = <1800000>;
361				regulator-always-on;
362				regulator-boot-on;
363				regulator-state-mem {
364					regulator-on-in-suspend;
365				};
366			};
367
368			ldo1_reg: LDO1 {
369				regulator-name = "vdd_1v0";
370				regulator-min-microvolt = <1000000>;
371				regulator-max-microvolt = <1000000>;
372				regulator-always-on;
373				regulator-state-mem {
374					regulator-on-in-suspend;
375					regulator-mode = <MAX77802_OPMODE_LP>;
376				};
377			};
378
379			ldo2_reg: LDO2 {
380				regulator-name = "vdd_1v2_2";
381				regulator-min-microvolt = <1200000>;
382				regulator-max-microvolt = <1200000>;
383			};
384
385			ldo3_reg: LDO3 {
386				regulator-name = "vdd_1v8_3";
387				regulator-min-microvolt = <1800000>;
388				regulator-max-microvolt = <1800000>;
389				regulator-always-on;
390				regulator-state-mem {
391					regulator-on-in-suspend;
392					regulator-mode = <MAX77802_OPMODE_LP>;
393				};
394			};
395
396			vqmmc_sdcard: ldo4_reg: LDO4 {
397				regulator-name = "vdd_sd";
398				regulator-min-microvolt = <1800000>;
399				regulator-max-microvolt = <2800000>;
400				regulator-always-on;
401				regulator-state-mem {
402					regulator-off-in-suspend;
403				};
404			};
405
406			ldo5_reg: LDO5 {
407				regulator-name = "vdd_1v8_5";
408				regulator-min-microvolt = <1800000>;
409				regulator-max-microvolt = <1800000>;
410				regulator-always-on;
411				regulator-state-mem {
412					regulator-off-in-suspend;
413				};
414			};
415
416			ldo6_reg: LDO6 {
417				regulator-name = "vdd_1v8_6";
418				regulator-min-microvolt = <1800000>;
419				regulator-max-microvolt = <1800000>;
420				regulator-always-on;
421				regulator-state-mem {
422					regulator-off-in-suspend;
423				};
424			};
425
426			ldo7_reg: LDO7 {
427				regulator-name = "vdd_1v8_7";
428				regulator-min-microvolt = <1800000>;
429				regulator-max-microvolt = <1800000>;
430			};
431
432			ldo8_reg: LDO8 {
433				regulator-name = "vdd_ldo8";
434				regulator-min-microvolt = <1000000>;
435				regulator-max-microvolt = <1000000>;
436				regulator-always-on;
437				regulator-state-mem {
438					regulator-off-in-suspend;
439				};
440			};
441
442			ldo9_reg: LDO9 {
443				regulator-name = "vdd_ldo9";
444				regulator-min-microvolt = <1800000>;
445				regulator-max-microvolt = <1800000>;
446				regulator-state-mem {
447					regulator-on-in-suspend;
448					regulator-mode = <MAX77802_OPMODE_LP>;
449				};
450			};
451
452			ldo10_reg: LDO10 {
453				regulator-name = "vdd_ldo10";
454				regulator-min-microvolt = <1800000>;
455				regulator-max-microvolt = <1800000>;
456				regulator-always-on;
457				regulator-state-mem {
458					regulator-off-in-suspend;
459				};
460			};
461
462			ldo11_reg: LDO11 {
463				regulator-name = "vdd_ldo11";
464				regulator-min-microvolt = <1800000>;
465				regulator-max-microvolt = <1800000>;
466				regulator-always-on;
467				regulator-state-mem {
468					regulator-on-in-suspend;
469					regulator-mode = <MAX77802_OPMODE_LP>;
470				};
471			};
472
473			ldo12_reg: LDO12 {
474				regulator-name = "vdd_ldo12";
475				regulator-min-microvolt = <3000000>;
476				regulator-max-microvolt = <3000000>;
477				regulator-always-on;
478				regulator-state-mem {
479					regulator-off-in-suspend;
480				};
481			};
482
483			ldo13_reg: LDO13 {
484				regulator-name = "vdd_ldo13";
485				regulator-min-microvolt = <1800000>;
486				regulator-max-microvolt = <1800000>;
487				regulator-always-on;
488				regulator-state-mem {
489					regulator-on-in-suspend;
490					regulator-mode = <MAX77802_OPMODE_LP>;
491				};
492			};
493
494			ldo14_reg: LDO14 {
495				regulator-name = "vdd_ldo14";
496				regulator-min-microvolt = <1800000>;
497				regulator-max-microvolt = <1800000>;
498				regulator-always-on;
499				regulator-state-mem {
500					regulator-off-in-suspend;
501				};
502			};
503
504			ldo15_reg: LDO15 {
505				regulator-name = "vdd_ldo15";
506				regulator-min-microvolt = <1000000>;
507				regulator-max-microvolt = <1000000>;
508				regulator-always-on;
509				regulator-state-mem {
510					regulator-off-in-suspend;
511				};
512			};
513
514			ldo17_reg: LDO17 {
515				regulator-name = "vdd_g3ds";
516				regulator-min-microvolt = <900000>;
517				regulator-max-microvolt = <1400000>;
518				regulator-always-on;
519				regulator-state-mem {
520					regulator-off-in-suspend;
521				};
522			};
523
524			ldo18_reg: LDO18 {
525				regulator-name = "ldo_18";
526				regulator-min-microvolt = <1800000>;
527				regulator-max-microvolt = <1800000>;
528			};
529
530			ldo19_reg: LDO19 {
531				regulator-name = "ldo_19";
532				regulator-min-microvolt = <1800000>;
533				regulator-max-microvolt = <1800000>;
534			};
535
536			ldo20_reg: LDO20 {
537				regulator-name = "ldo_20";
538				regulator-min-microvolt = <1800000>;
539				regulator-max-microvolt = <1800000>;
540				regulator-always-on;
541			};
542
543			ldo21_reg: LDO21 {
544				regulator-name = "ldo_21";
545				regulator-min-microvolt = <2800000>;
546				regulator-max-microvolt = <2800000>;
547			};
548
549			ldo23_reg: LDO23 {
550				regulator-name = "ldo_23";
551				regulator-min-microvolt = <3300000>;
552				regulator-max-microvolt = <3300000>;
553			};
554			ldo24_reg: LDO24 {
555				regulator-name = "ldo_24";
556				regulator-min-microvolt = <2800000>;
557				regulator-max-microvolt = <2800000>;
558			};
559
560			ldo25_reg: LDO25 {
561				regulator-name = "ldo_25";
562				regulator-min-microvolt = <3300000>;
563				regulator-max-microvolt = <3300000>;
564			};
565
566			ldo26_reg: LDO26 {
567				regulator-name = "ldo_26";
568				regulator-min-microvolt = <1200000>;
569				regulator-max-microvolt = <1200000>;
570			};
571
572			ldo27_reg: LDO27 {
573				regulator-name = "ldo_27";
574				regulator-min-microvolt = <1200000>;
575				regulator-max-microvolt = <1200000>;
576			};
577
578			ldo28_reg: LDO28 {
579				regulator-name = "ldo_28";
580				regulator-min-microvolt = <1800000>;
581				regulator-max-microvolt = <1800000>;
582			};
583
584			ldo29_reg: LDO29 {
585				regulator-name = "ldo_29";
586				regulator-min-microvolt = <1800000>;
587				regulator-max-microvolt = <1800000>;
588			};
589
590			ldo30_reg: LDO30 {
591				regulator-name = "vdd_mifs";
592				regulator-min-microvolt = <1000000>;
593				regulator-max-microvolt = <1000000>;
594				regulator-always-on;
595				regulator-state-mem {
596					regulator-off-in-suspend;
597				};
598			};
599
600			ldo32_reg: LDO32 {
601				regulator-name = "ldo_32";
602				regulator-min-microvolt = <3000000>;
603				regulator-max-microvolt = <3000000>;
604			};
605
606			ldo33_reg: LDO33 {
607				regulator-name = "ldo_33";
608				regulator-min-microvolt = <2800000>;
609				regulator-max-microvolt = <2800000>;
610			};
611
612			ldo34_reg: LDO34 {
613				regulator-name = "ldo_34";
614				regulator-min-microvolt = <3000000>;
615				regulator-max-microvolt = <3000000>;
616			};
617
618			ldo35_reg: LDO35 {
619				regulator-name = "ldo_35";
620				regulator-min-microvolt = <1200000>;
621				regulator-max-microvolt = <1200000>;
622			};
623		};
624	};
625};
626
627&hsi2c_7 {
628	status = "okay";
629	clock-frequency = <400000>;
630
631	max98091: codec@10 {
632		compatible = "maxim,max98091";
633		reg = <0x10>;
634		interrupts = <2 IRQ_TYPE_NONE>;
635		interrupt-parent = <&gpx0>;
636		pinctrl-names = "default";
637		pinctrl-0 = <&max98091_irq>;
638		clocks = <&pmu_system_controller 0>;
639		clock-names = "mclk";
640		#sound-dai-cells = <0>;
641	};
642
643	light-sensor@44 {
644		compatible = "isil,isl29018";
645		reg = <0x44>;
646		vcc-supply = <&tps65090_fet5>;
647	};
648};
649
650&hsi2c_8 {
651	status = "okay";
652	clock-frequency = <333000>;
653	/* Atmel mXT540S */
654	trackpad@4b {
655		compatible = "atmel,maxtouch";
656		reg = <0x4b>;
657		interrupt-parent = <&gpx1>;
658		interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
659		wakeup-source;
660		pinctrl-names = "default";
661		pinctrl-0 = <&trackpad_irq>;
662		linux,gpio-keymap = <KEY_RESERVED
663				     KEY_RESERVED
664				     KEY_RESERVED	/* GPIO 0 */
665				     KEY_RESERVED	/* GPIO 1 */
666				     BTN_LEFT		/* GPIO 2 */
667				     KEY_RESERVED>;	/* GPIO 3 */
668	};
669};
670
671&hsi2c_9 {
672	status = "okay";
673	clock-frequency = <400000>;
674
675	tpm@20 {
676		compatible = "infineon,slb9645tt";
677		reg = <0x20>;
678
679		/* Unused irq; but still need to configure the pins */
680		pinctrl-names = "default";
681		pinctrl-0 = <&tpm_irq>;
682	};
683};
684
685&i2c_2 {
686	status = "okay";
687	samsung,i2c-sda-delay = <100>;
688	samsung,i2c-max-bus-freq = <66000>;
689	samsung,i2c-slave-addr = <0x50>;
690};
691
692&i2s0 {
693	assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
694	assigned-clock-parents = <&clock_audss EXYNOS_I2S_BUS>;
695	status = "okay";
696};
697
698&mixer {
699	status = "okay";
700};
701
702/* eMMC flash */
703&mmc_0 {
704	status = "okay";
705	mmc-hs200-1_8v;
706	mmc-hs400-1_8v;
707	cap-mmc-highspeed;
708	non-removable;
709	clock-frequency = <800000000>;
710	samsung,dw-mshc-ciu-div = <3>;
711	samsung,dw-mshc-sdr-timing = <0 4>;
712	samsung,dw-mshc-ddr-timing = <0 2>;
713	samsung,dw-mshc-hs400-timing = <0 2>;
714	samsung,read-strobe-delay = <90>;
715	pinctrl-names = "default";
716	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_rclk>;
717	bus-width = <8>;
718};
719
720/* WiFi SDIO module */
721&mmc_1 {
722	status = "okay";
723	non-removable;
724	cap-sdio-irq;
725	keep-power-in-suspend;
726	clock-frequency = <400000000>;
727	samsung,dw-mshc-ciu-div = <1>;
728	samsung,dw-mshc-sdr-timing = <0 1>;
729	samsung,dw-mshc-ddr-timing = <0 2>;
730	pinctrl-names = "default";
731	pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_int>, <&sd1_bus1>,
732		    <&sd1_bus4>, <&sd1_bus8>, <&wifi_en>;
733	bus-width = <4>;
734	cap-sd-highspeed;
735	mmc-pwrseq = <&mmc1_pwrseq>;
736	vqmmc-supply = <&buck10_reg>;
737};
738
739/* uSD card */
740&mmc_2 {
741	status = "okay";
742	cap-sd-highspeed;
743	card-detect-delay = <200>;
744	clock-frequency = <400000000>;
745	samsung,dw-mshc-ciu-div = <3>;
746	samsung,dw-mshc-sdr-timing = <2 3>;
747	samsung,dw-mshc-ddr-timing = <1 2>;
748	pinctrl-names = "default";
749	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
750	bus-width = <4>;
751};
752
753
754&pinctrl_0 {
755	pinctrl-names = "default";
756	pinctrl-0 = <&mask_tpm_reset>;
757
758	wifi_en: wifi-en {
759		samsung,pins = "gpx0-0";
760		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
761		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
762		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
763	};
764
765	max98091_irq: max98091-irq {
766		samsung,pins = "gpx0-2";
767		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
768		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
769		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
770	};
771
772	/* We need GPX0_6 to be low at sleep time; just keep it low always */
773	mask_tpm_reset: mask-tpm-reset {
774		samsung,pins = "gpx0-6";
775		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
776		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
777		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
778		samsung,pin-val = <0>;
779	};
780
781	tpm_irq: tpm-irq {
782		samsung,pins = "gpx1-0";
783		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
784		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
785		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
786	};
787
788	trackpad_irq: trackpad-irq {
789		samsung,pins = "gpx1-1";
790		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
791		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
792		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
793	};
794
795	power_key_irq: power-key-irq {
796		samsung,pins = "gpx1-2";
797		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
798		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
799		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
800	};
801
802	ec_irq: ec-irq {
803		samsung,pins = "gpx1-5";
804		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
805		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
806		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
807	};
808
809	tps65090_irq: tps65090-irq {
810		samsung,pins = "gpx2-5";
811		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
812		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
813		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
814	};
815
816	dp_hpd_gpio: dp_hpd_gpio {
817		samsung,pins = "gpx2-6";
818		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
819		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
820		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
821	};
822
823	max77802_irq: max77802-irq {
824		samsung,pins = "gpx3-1";
825		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
826		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
827		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
828	};
829
830	lid_irq: lid-irq {
831		samsung,pins = "gpx3-4";
832		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
833		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
834		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
835	};
836
837	hdmi_hpd_irq: hdmi-hpd-irq {
838		samsung,pins = "gpx3-7";
839		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
840		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
841		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
842	};
843
844	pmic_dvs_1: pmic-dvs-1 {
845		samsung,pins = "gpy7-6";
846		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
847		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
848		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
849	};
850};
851
852&pinctrl_1 {
853	/* Adjust WiFi drive strengths lower for EMI */
854	sd1_clk: sd1-clk {
855		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV3>;
856	};
857
858	sd1_cmd: sd1-cmd {
859		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV3>;
860	};
861
862	sd1_bus1: sd1-bus-width1 {
863		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV3>;
864	};
865
866	sd1_bus4: sd1-bus-width4 {
867		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV3>;
868	};
869
870	sd1_bus8: sd1-bus-width8 {
871		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV3>;
872	};
873};
874
875&pinctrl_2 {
876	pmic_dvs_2: pmic-dvs-2 {
877		samsung,pins = "gpj4-2";
878		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
879		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
880		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
881	};
882
883	pmic_dvs_3: pmic-dvs-3 {
884		samsung,pins = "gpj4-3";
885		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
886		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
887		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
888	};
889};
890
891&pinctrl_3 {
892	/* Drive SPI lines at x2 for better integrity */
893	spi2-bus {
894		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV3>;
895	};
896
897	/* Drive SPI chip select at x2 for better integrity */
898	ec_spi_cs: ec-spi-cs {
899		samsung,pins = "gpb1-2";
900		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
901		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
902		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV3>;
903	};
904
905	usb300_vbus_en: usb300-vbus-en {
906		samsung,pins = "gph0-0";
907		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
908		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
909		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
910	};
911
912	usb301_vbus_en: usb301-vbus-en {
913		samsung,pins = "gph0-1";
914		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
915		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
916		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
917	};
918
919	pmic_selb: pmic-selb {
920		samsung,pins = "gph0-2", "gph0-3", "gph0-4", "gph0-5",
921			       "gph0-6";
922		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
923		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
924		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
925	};
926};
927
928&pmu_system_controller {
929	assigned-clocks = <&pmu_system_controller 0>;
930	assigned-clock-parents = <&clock CLK_FIN_PLL>;
931};
932
933&rtc {
934	status = "okay";
935	clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>;
936	clock-names = "rtc", "rtc_src";
937};
938
939&spi_2 {
940	status = "okay";
941	num-cs = <1>;
942	samsung,spi-src-clk = <0>;
943	cs-gpios = <&gpb1 2 GPIO_ACTIVE_HIGH>;
944
945	cros_ec: cros-ec@0 {
946		compatible = "google,cros-ec-spi";
947		interrupt-parent = <&gpx1>;
948		interrupts = <5 IRQ_TYPE_NONE>;
949		pinctrl-names = "default";
950		pinctrl-0 = <&ec_spi_cs &ec_irq>;
951		reg = <0>;
952		spi-max-frequency = <3125000>;
953		google,has-vbc-nvram;
954
955		controller-data {
956			samsung,spi-feedback-delay = <1>;
957		};
958
959		i2c_tunnel: i2c-tunnel {
960			compatible = "google,cros-ec-i2c-tunnel";
961			#address-cells = <1>;
962			#size-cells = <0>;
963			google,remote-bus = <0>;
964
965			battery: sbs-battery@b {
966				compatible = "sbs,sbs-battery";
967				reg = <0xb>;
968				sbs,poll-retry-count = <1>;
969				sbs,i2c-retry-count = <2>;
970			};
971
972			power-regulator@48 {
973				compatible = "ti,tps65090";
974				reg = <0x48>;
975
976				/*
977				 * Config irq to disable internal pulls
978				 * even though we run in polling mode.
979				 */
980				pinctrl-names = "default";
981				pinctrl-0 = <&tps65090_irq>;
982
983				vsys1-supply = <&vbat>;
984				vsys2-supply = <&vbat>;
985				vsys3-supply = <&vbat>;
986				infet1-supply = <&vbat>;
987				infet2-supply = <&tps65090_dcdc1>;
988				infet3-supply = <&tps65090_dcdc2>;
989				infet4-supply = <&tps65090_dcdc2>;
990				infet5-supply = <&tps65090_dcdc2>;
991				infet6-supply = <&tps65090_dcdc2>;
992				infet7-supply = <&tps65090_dcdc1>;
993				vsys-l1-supply = <&vbat>;
994				vsys-l2-supply = <&vbat>;
995
996				regulators {
997					tps65090_dcdc1: dcdc1 {
998						ti,enable-ext-control;
999					};
1000					tps65090_dcdc2: dcdc2 {
1001						ti,enable-ext-control;
1002					};
1003					tps65090_dcdc3: dcdc3 {
1004						ti,enable-ext-control;
1005					};
1006					tps65090_fet1: fet1 {
1007						regulator-name = "vcd_led";
1008					};
1009					tps65090_fet2: fet2 {
1010						regulator-name = "video_mid";
1011						regulator-always-on;
1012					};
1013					tps65090_fet3: fet3 {
1014						regulator-name = "wwan_r";
1015						regulator-always-on;
1016					};
1017					tps65090_fet4: fet4 {
1018						regulator-name = "sdcard";
1019						regulator-always-on;
1020					};
1021					tps65090_fet5: fet5 {
1022						regulator-name = "camout";
1023						regulator-always-on;
1024					};
1025					tps65090_fet6: fet6 {
1026						regulator-name = "lcd_vdd";
1027					};
1028					tps65090_fet7: fet7 {
1029						regulator-name = "video_mid_1a";
1030						regulator-always-on;
1031					};
1032					tps65090_ldo1: ldo1 {
1033					};
1034					tps65090_ldo2: ldo2 {
1035					};
1036				};
1037
1038				charger {
1039					compatible = "ti,tps65090-charger";
1040				};
1041			};
1042		};
1043	};
1044};
1045
1046&serial_3 {
1047	status = "okay";
1048};
1049
1050&timer {
1051	arm,cpu-registers-not-fw-configured;
1052};
1053
1054&tmu_cpu0 {
1055	vtmu-supply = <&ldo10_reg>;
1056};
1057
1058&tmu_cpu1 {
1059	vtmu-supply = <&ldo10_reg>;
1060};
1061
1062&tmu_cpu2 {
1063	vtmu-supply = <&ldo10_reg>;
1064};
1065
1066&tmu_cpu3 {
1067	vtmu-supply = <&ldo10_reg>;
1068};
1069
1070&tmu_gpu {
1071	vtmu-supply = <&ldo10_reg>;
1072};
1073
1074&usbdrd_dwc3_0 {
1075	dr_mode = "host";
1076};
1077
1078&usbdrd_dwc3_1 {
1079	dr_mode = "host";
1080};
1081
1082&usbdrd_phy0 {
1083	vbus-supply = <&usb300_vbus_reg>;
1084};
1085
1086&usbdrd_phy1 {
1087	vbus-supply = <&usb301_vbus_reg>;
1088};
1089
1090/*
1091 * Use longest HW watchdog in SoC (32 seconds) since the hardware
1092 * watchdog provides no debugging information (compared to soft/hard
1093 * lockup detectors) and so should be last resort.
1094 */
1095&watchdog {
1096	timeout-sec = <32>;
1097};
1098
1099#include "cros-ec-keyboard.dtsi"
1100#include "cros-adc-thermistors.dtsi"
1101