xref: /trueos/sys/gnu/dts/arm/exynos5250-spring.dts (revision 5868f7205430cd67aa3b655419d3f15f83b70119)
1/*
2 * Google Spring board device tree source
3 *
4 * Copyright (c) 2013 Google, Inc
5 * Copyright (c) 2014 SUSE LINUX Products GmbH
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/dts-v1/;
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/interrupt-controller/irq.h>
15#include <dt-bindings/input/input.h>
16#include "exynos5250.dtsi"
17
18/ {
19	model = "Google Spring";
20	compatible = "google,spring", "samsung,exynos5250", "samsung,exynos5";
21
22	memory {
23		reg = <0x40000000 0x80000000>;
24	};
25
26	chosen {
27		bootargs = "console=tty1";
28	};
29
30	gpio-keys {
31		compatible = "gpio-keys";
32		pinctrl-names = "default";
33		pinctrl-0 = <&power_key_irq>, <&lid_irq>;
34
35		power {
36			label = "Power";
37			gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
38			linux,code = <KEY_POWER>;
39			gpio-key,wakeup;
40		};
41
42		lid-switch {
43			label = "Lid";
44			gpios = <&gpx3 5 GPIO_ACTIVE_LOW>;
45			linux,input-type = <5>; /* EV_SW */
46			linux,code = <0>; /* SW_LID */
47			debounce-interval = <1>;
48			gpio-key,wakeup;
49		};
50	};
51
52	usb-hub {
53		compatible = "smsc,usb3503a";
54		reset-gpios = <&gpe1 0 GPIO_ACTIVE_LOW>;
55		pinctrl-names = "default";
56		pinctrl-0 = <&hsic_reset>;
57	};
58
59	fixed-rate-clocks {
60		xxti {
61			compatible = "samsung,clock-xxti";
62			clock-frequency = <24000000>;
63		};
64	};
65};
66
67&dp {
68	status = "okay";
69	pinctrl-names = "default";
70	pinctrl-0 = <&dp_hpd_gpio>;
71	samsung,color-space = <0>;
72	samsung,dynamic-range = <0>;
73	samsung,ycbcr-coeff = <0>;
74	samsung,color-depth = <1>;
75	samsung,link-rate = <0x0a>;
76	samsung,lane-count = <1>;
77	samsung,hpd-gpio = <&gpc3 0 GPIO_ACTIVE_HIGH>;
78};
79
80&ehci {
81	samsung,vbus-gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>;
82};
83
84&fimd {
85	status = "okay";
86	samsung,invert-vclk;
87};
88
89&hdmi {
90	hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
91	pinctrl-names = "default";
92	pinctrl-0 = <&hdmi_hpd_irq>;
93	phy = <&hdmiphy>;
94	ddc = <&i2c_2>;
95	hdmi-en-supply = <&ldo8_reg>;
96	vdd-supply = <&ldo8_reg>;
97	vdd_osc-supply = <&ldo10_reg>;
98	vdd_pll-supply = <&ldo8_reg>;
99};
100
101&i2c_0 {
102	status = "okay";
103	samsung,i2c-sda-delay = <100>;
104	samsung,i2c-max-bus-freq = <378000>;
105
106	s5m8767-pmic@66 {
107		compatible = "samsung,s5m8767-pmic";
108		reg = <0x66>;
109		interrupt-parent = <&gpx3>;
110		interrupts = <2 IRQ_TYPE_NONE>;
111		pinctrl-names = "default";
112		pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
113		wakeup-source;
114
115		s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>, /* DVS1 */
116		                              <&gpd1 1 GPIO_ACTIVE_LOW>, /* DVS2 */
117		                              <&gpd1 2 GPIO_ACTIVE_LOW>; /* DVS3 */
118
119		s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>, /* SET1 */
120		                             <&gpx2 4 GPIO_ACTIVE_LOW>, /* SET2 */
121		                             <&gpx2 5 GPIO_ACTIVE_LOW>; /* SET3 */
122
123		/*
124		 * The following arrays of DVS voltages are not used, since we are
125		 * not using GPIOs to control PMIC bucks, but they must be defined
126		 * to please the driver.
127		 */
128		s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>,
129		                                 <1250000>, <1200000>,
130		                                 <1150000>, <1100000>,
131		                                 <1000000>, <950000>;
132
133		s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
134		                                 <1100000>, <1100000>,
135		                                 <1000000>, <1000000>,
136		                                 <1000000>, <1000000>;
137
138		s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>,
139		                                 <1200000>, <1200000>,
140		                                 <1200000>, <1200000>,
141		                                 <1200000>, <1200000>;
142
143		clocks {
144			compatible = "samsung,s5m8767-clk";
145			#clock-cells = <1>;
146			clock-output-names = "en32khz_ap",
147			                     "en32khz_cp",
148			                     "en32khz_bt";
149		};
150
151		regulators {
152			ldo4_reg: LDO4 {
153				regulator-name = "P1.0V_LDO_OUT4";
154				regulator-min-microvolt = <1000000>;
155				regulator-max-microvolt = <1000000>;
156				regulator-always-on;
157				op_mode = <0>;
158			};
159
160			ldo5_reg: LDO5 {
161				regulator-name = "P1.0V_LDO_OUT5";
162				regulator-min-microvolt = <1000000>;
163				regulator-max-microvolt = <1000000>;
164				regulator-always-on;
165				op_mode = <0>;
166			};
167
168			ldo6_reg: LDO6 {
169				regulator-name = "vdd_mydp";
170				regulator-min-microvolt = <1000000>;
171				regulator-max-microvolt = <1000000>;
172				regulator-always-on;
173				op_mode = <3>;
174			};
175
176			ldo7_reg: LDO7 {
177				regulator-name = "P1.1V_LDO_OUT7";
178				regulator-min-microvolt = <1100000>;
179				regulator-max-microvolt = <1100000>;
180				regulator-always-on;
181				op_mode = <3>;
182			};
183
184			ldo8_reg: LDO8 {
185				regulator-name = "P1.0V_LDO_OUT8";
186				regulator-min-microvolt = <1000000>;
187				regulator-max-microvolt = <1000000>;
188				regulator-always-on;
189				op_mode = <3>;
190			};
191
192			ldo10_reg: LDO10 {
193				regulator-name = "P1.8V_LDO_OUT10";
194				regulator-min-microvolt = <1800000>;
195				regulator-max-microvolt = <1800000>;
196				regulator-always-on;
197				op_mode = <3>;
198			};
199
200			ldo11_reg: LDO11 {
201				regulator-name = "P1.8V_LDO_OUT11";
202				regulator-min-microvolt = <1800000>;
203				regulator-max-microvolt = <1800000>;
204				regulator-always-on;
205				op_mode = <0>;
206			};
207
208			ldo12_reg: LDO12 {
209				regulator-name = "P3.0V_LDO_OUT12";
210				regulator-min-microvolt = <3000000>;
211				regulator-max-microvolt = <3000000>;
212				regulator-always-on;
213				op_mode = <3>;
214			};
215
216			ldo13_reg: LDO13 {
217				regulator-name = "P1.8V_LDO_OUT13";
218				regulator-min-microvolt = <1800000>;
219				regulator-max-microvolt = <1800000>;
220				regulator-always-on;
221				op_mode = <0>;
222			};
223
224			ldo14_reg: LDO14 {
225				regulator-name = "P1.8V_LDO_OUT14";
226				regulator-min-microvolt = <1800000>;
227				regulator-max-microvolt = <1800000>;
228				regulator-always-on;
229				op_mode = <3>;
230			};
231
232			ldo15_reg: LDO15 {
233				regulator-name = "P1.0V_LDO_OUT15";
234				regulator-min-microvolt = <1000000>;
235				regulator-max-microvolt = <1000000>;
236				regulator-always-on;
237				op_mode = <3>;
238			};
239
240			ldo16_reg: LDO16 {
241				regulator-name = "P1.8V_LDO_OUT16";
242				regulator-min-microvolt = <1800000>;
243				regulator-max-microvolt = <1800000>;
244				regulator-always-on;
245				op_mode = <3>;
246			};
247
248			ldo17_reg: LDO17 {
249				regulator-name = "P2.8V_LDO_OUT17";
250				regulator-min-microvolt = <2800000>;
251				regulator-max-microvolt = <2800000>;
252				regulator-always-on;
253				op_mode = <0>;
254			};
255
256			ldo25_reg: LDO25 {
257				regulator-name = "vdd_bridge";
258				regulator-min-microvolt = <1200000>;
259				regulator-max-microvolt = <1200000>;
260				regulator-always-on;
261				op_mode = <1>;
262			};
263
264			buck1_reg: BUCK1 {
265				regulator-name = "vdd_mif";
266				regulator-min-microvolt = <950000>;
267				regulator-max-microvolt = <1300000>;
268				regulator-always-on;
269				regulator-boot-on;
270				op_mode = <3>;
271			};
272
273			buck2_reg: BUCK2 {
274				regulator-name = "vdd_arm";
275				regulator-min-microvolt = <850000>;
276				regulator-max-microvolt = <1350000>;
277				regulator-always-on;
278				regulator-boot-on;
279				op_mode = <3>;
280			};
281
282			buck3_reg: BUCK3 {
283				regulator-name = "vdd_int";
284				regulator-min-microvolt = <900000>;
285				regulator-max-microvolt = <1200000>;
286				regulator-always-on;
287				regulator-boot-on;
288				op_mode = <3>;
289			};
290
291			buck4_reg: BUCK4 {
292				regulator-name = "vdd_g3d";
293				regulator-min-microvolt = <850000>;
294				regulator-max-microvolt = <1300000>;
295				regulator-boot-on;
296				op_mode = <3>;
297			};
298
299			buck5_reg: BUCK5 {
300				regulator-name = "P1.8V_BUCK_OUT5";
301				regulator-min-microvolt = <1800000>;
302				regulator-max-microvolt = <1800000>;
303				regulator-always-on;
304				regulator-boot-on;
305				op_mode = <1>;
306			};
307
308			buck6_reg: BUCK6 {
309				regulator-name = "P1.2V_BUCK_OUT6";
310				regulator-min-microvolt = <1200000>;
311				regulator-max-microvolt = <1200000>;
312				regulator-always-on;
313				regulator-boot-on;
314				op_mode = <0>;
315			};
316
317			buck9_reg: BUCK9 {
318				regulator-name = "vdd_ummc";
319				regulator-min-microvolt = <950000>;
320				regulator-max-microvolt = <3000000>;
321				regulator-always-on;
322				regulator-boot-on;
323				op_mode = <3>;
324			};
325		};
326	};
327};
328
329&i2c_1 {
330	status = "okay";
331	samsung,i2c-sda-delay = <100>;
332	samsung,i2c-max-bus-freq = <378000>;
333
334	trackpad@4b {
335		compatible = "atmel,maxtouch";
336		reg = <0x4b>;
337		interrupt-parent = <&gpx1>;
338		interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
339		pinctrl-names = "default";
340		pinctrl-0 = <&trackpad_irq>;
341		linux,gpio-keymap = <KEY_RESERVED
342				     KEY_RESERVED
343				     KEY_RESERVED
344				     KEY_RESERVED
345				     KEY_RESERVED
346				     BTN_LEFT>;
347		wakeup-source;
348	};
349};
350
351/*
352 * Disabled pullups since external part has its own pullups and
353 * double-pulling gets us out of spec in some cases.
354 */
355&i2c2_bus {
356	samsung,pin-pud = <0>;
357};
358
359&i2c_2 {
360	status = "okay";
361	samsung,i2c-sda-delay = <100>;
362	samsung,i2c-max-bus-freq = <66000>;
363
364	hdmiddc@50 {
365		compatible = "samsung,exynos4210-hdmiddc";
366		reg = <0x50>;
367	};
368};
369
370&i2c_3 {
371	status = "okay";
372	samsung,i2c-sda-delay = <100>;
373	samsung,i2c-max-bus-freq = <66000>;
374};
375
376&i2c_4 {
377	status = "okay";
378	samsung,i2c-sda-delay = <100>;
379	samsung,i2c-max-bus-freq = <66000>;
380
381	cros_ec: embedded-controller {
382		compatible = "google,cros-ec-i2c";
383		reg = <0x1e>;
384		interrupts = <6 IRQ_TYPE_NONE>;
385		interrupt-parent = <&gpx1>;
386		wakeup-source;
387		pinctrl-names = "default";
388		pinctrl-0 = <&ec_irq>;
389	};
390};
391
392&i2c_5 {
393	status = "okay";
394	samsung,i2c-sda-delay = <100>;
395	samsung,i2c-max-bus-freq = <66000>;
396};
397
398&i2c_7 {
399	status = "okay";
400	samsung,i2c-sda-delay = <100>;
401	samsung,i2c-max-bus-freq = <66000>;
402
403	temperature-sensor@4c {
404		compatible = "gmt,g781";
405		reg = <0x4c>;
406	};
407};
408
409&i2c_8 {
410	status = "okay";
411	samsung,i2c-sda-delay = <100>;
412	samsung,i2c-max-bus-freq = <378000>;
413
414	hdmiphy: hdmiphy@38 {
415		compatible = "samsung,exynos4212-hdmiphy";
416		reg = <0x38>;
417	};
418};
419
420&i2s0 {
421	status = "okay";
422};
423
424&mfc {
425	samsung,mfc-r = <0x43000000 0x800000>;
426	samsung,mfc-l = <0x51000000 0x800000>;
427};
428
429&mmc_0 {
430	status = "okay";
431	num-slots = <1>;
432	supports-highspeed;
433	broken-cd;
434	card-detect-delay = <200>;
435	samsung,dw-mshc-ciu-div = <3>;
436	samsung,dw-mshc-sdr-timing = <2 3>;
437	samsung,dw-mshc-ddr-timing = <1 2>;
438	pinctrl-names = "default";
439	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>;
440
441	slot@0 {
442		reg = <0>;
443		bus-width = <8>;
444	};
445};
446
447/*
448 * On Spring we've got SIP WiFi and so can keep drive strengths low to
449 * reduce EMI.
450 */
451&mmc_1 {
452	status = "okay";
453	num-slots = <1>;
454	supports-highspeed;
455	broken-cd;
456	card-detect-delay = <200>;
457	samsung,dw-mshc-ciu-div = <3>;
458	samsung,dw-mshc-sdr-timing = <2 3>;
459	samsung,dw-mshc-ddr-timing = <1 2>;
460	pinctrl-names = "default";
461	pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus4>;
462
463	slot@0 {
464		reg = <0>;
465		bus-width = <4>;
466	};
467};
468
469&pinctrl_0 {
470	s5m8767_dvs: s5m8767-dvs {
471		samsung,pins = "gpd1-0", "gpd1-1", "gpd1-2";
472		samsung,pin-function = <0>;
473		samsung,pin-pud = <1>;
474		samsung,pin-drv = <0>;
475	};
476
477	dp_hpd_gpio: dp-hpd-gpio {
478		samsung,pins = "gpc3-0";
479		samsung,pin-function = <0>;
480		samsung,pin-pud = <3>;
481		samsung,pin-drv = <0>;
482	};
483
484	trackpad_irq: trackpad-irq {
485		samsung,pins = "gpx1-2";
486		samsung,pin-function = <0xf>;
487		samsung,pin-pud = <0>;
488		samsung,pin-drv = <0>;
489	};
490
491	power_key_irq: power-key-irq {
492		samsung,pins = "gpx1-3";
493		samsung,pin-function = <0>;
494		samsung,pin-pud = <0>;
495		samsung,pin-drv = <0>;
496	};
497
498	ec_irq: ec-irq {
499		samsung,pins = "gpx1-6";
500		samsung,pin-function = <0>;
501		samsung,pin-pud = <0>;
502		samsung,pin-drv = <0>;
503	};
504
505	s5m8767_ds: s5m8767-ds {
506		samsung,pins = "gpx2-3", "gpx2-4", "gpx2-5";
507		samsung,pin-function = <0>;
508		samsung,pin-pud = <1>;
509		samsung,pin-drv = <0>;
510	};
511
512	s5m8767_irq: s5m8767-irq {
513		samsung,pins = "gpx3-2";
514		samsung,pin-function = <0>;
515		samsung,pin-pud = <0>;
516		samsung,pin-drv = <0>;
517	};
518
519	lid_irq: lid-irq {
520		samsung,pins = "gpx3-5";
521		samsung,pin-function = <0>;
522		samsung,pin-pud = <0>;
523		samsung,pin-drv = <0>;
524	};
525
526	hdmi_hpd_irq: hdmi-hpd-irq {
527		samsung,pins = "gpx3-7";
528		samsung,pin-function = <0>;
529		samsung,pin-pud = <1>;
530		samsung,pin-drv = <0>;
531	};
532};
533
534&pinctrl_1 {
535	hsic_reset: hsic-reset {
536		samsung,pins = "gpe1-0";
537		samsung,pin-function = <1>;
538		samsung,pin-pud = <0>;
539		samsung,pin-drv = <0>;
540	};
541};
542
543&sd1_bus4 {
544	samsung,pin-drv = <0>;
545};
546
547&sd1_cd {
548	samsung,pin-drv = <0>;
549};
550
551&sd1_clk {
552	samsung,pin-drv = <0>;
553};
554
555&sd1_cmd {
556	samsung,pin-pud = <3>;
557	samsung,pin-drv = <0>;
558};
559
560&spi_1 {
561	status = "okay";
562	samsung,spi-src-clk = <0>;
563	num-cs = <1>;
564};
565
566#include "cros-ec-keyboard.dtsi"
567