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