1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Samsung's Exynos5250 based Arndale board device tree source
4 *
5 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
6 *		http://www.samsung.com
7 */
8
9/dts-v1/;
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/interrupt-controller/irq.h>
12#include <dt-bindings/input/input.h>
13#include <dt-bindings/clock/samsung,s2mps11.h>
14#include <dt-bindings/sound/samsung-i2s.h>
15#include "exynos5250.dtsi"
16
17/ {
18	model = "Insignal Arndale evaluation board based on Exynos5250";
19	compatible = "insignal,arndale", "samsung,exynos5250", "samsung,exynos5";
20
21	memory@40000000 {
22		device_type = "memory";
23		reg = <0x40000000 0x80000000>;
24	};
25
26	chosen {
27		stdout-path = "serial2:115200n8";
28	};
29
30	gpio-keys {
31		compatible = "gpio-keys";
32
33		key-menu {
34			label = "SW-TACT2";
35			gpios = <&gpx1 4 GPIO_ACTIVE_LOW>;
36			linux,code = <KEY_MENU>;
37			wakeup-source;
38		};
39
40		key-home {
41			label = "SW-TACT3";
42			gpios = <&gpx1 5 GPIO_ACTIVE_LOW>;
43			linux,code = <KEY_HOME>;
44			wakeup-source;
45		};
46
47		key-up {
48			label = "SW-TACT4";
49			gpios = <&gpx1 6 GPIO_ACTIVE_LOW>;
50			linux,code = <KEY_UP>;
51			wakeup-source;
52		};
53
54		key-down {
55			label = "SW-TACT5";
56			gpios = <&gpx1 7 GPIO_ACTIVE_LOW>;
57			linux,code = <KEY_DOWN>;
58			wakeup-source;
59		};
60
61		key-back {
62			label = "SW-TACT6";
63			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
64			linux,code = <KEY_BACK>;
65			wakeup-source;
66		};
67
68		key-wakeup {
69			label = "SW-TACT7";
70			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
71			linux,code = <KEY_WAKEUP>;
72			wakeup-source;
73		};
74	};
75
76	panel: panel {
77		compatible = "boe,hv070wsa-100";
78		power-supply = <&vcc_3v3_reg>;
79		enable-gpios = <&gpd1 3 GPIO_ACTIVE_HIGH>;
80		port {
81			panel_ep: endpoint {
82				remote-endpoint = <&bridge_out_ep>;
83			};
84		};
85	};
86
87	main_dc_reg: regulator-0 {
88		compatible = "regulator-fixed";
89		regulator-name = "MAIN_DC";
90		regulator-always-on;
91	};
92
93	mmc_reg: regulator-1 {
94		compatible = "regulator-fixed";
95		regulator-name = "VDD_MMC";
96		regulator-min-microvolt = <2800000>;
97		regulator-max-microvolt = <2800000>;
98		regulator-always-on;
99	};
100
101	reg_hdmi_en: regulator-2 {
102		compatible = "regulator-fixed";
103		regulator-name = "hdmi-en";
104		regulator-always-on;
105	};
106
107	vcc_1v2_reg: regulator-3 {
108		compatible = "regulator-fixed";
109		regulator-name = "VCC_1V2";
110		regulator-min-microvolt = <1200000>;
111		regulator-max-microvolt = <1200000>;
112		regulator-always-on;
113	};
114
115	vcc_1v8_reg: regulator-4 {
116		compatible = "regulator-fixed";
117		regulator-name = "VCC_1V8";
118		regulator-min-microvolt = <1800000>;
119		regulator-max-microvolt = <1800000>;
120		regulator-always-on;
121	};
122
123	vcc_3v3_reg: regulator-5 {
124		compatible = "regulator-fixed";
125		regulator-name = "VCC_3V3";
126		regulator-min-microvolt = <3300000>;
127		regulator-max-microvolt = <3300000>;
128		regulator-always-on;
129	};
130
131	sound {
132		compatible = "samsung,arndale-wm1811";
133		samsung,audio-cpu = <&i2s0>;
134		samsung,audio-codec = <&wm1811>;
135	};
136
137	fixed-rate-clocks {
138		xxti {
139			compatible = "samsung,clock-xxti";
140			clock-frequency = <24000000>;
141		};
142	};
143
144	// SMSC USB3503 connected in hardware only mode as a PHY
145	usb_hub: usb-hub {
146		compatible = "smsc,usb3503a";
147
148		reset-gpios = <&gpx3 5 GPIO_ACTIVE_LOW>;
149		connect-gpios = <&gpd1 7 GPIO_ACTIVE_HIGH>;
150	};
151};
152
153&clock {
154	assigned-clocks = <&clock CLK_FOUT_EPLL>;
155	assigned-clock-rates = <49152000>;
156};
157
158&clock_audss {
159	assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>;
160	assigned-clock-parents = <&clock CLK_FOUT_EPLL>;
161};
162
163&cpu0 {
164	cpu0-supply = <&buck2_reg>;
165};
166
167&dsi_0 {
168	vddcore-supply = <&ldo8_reg>;
169	vddio-supply = <&ldo10_reg>;
170	samsung,pll-clock-frequency = <24000000>;
171	samsung,burst-clock-frequency = <320000000>;
172	samsung,esc-clock-frequency = <10000000>;
173	status = "okay";
174
175	bridge@0 {
176		reg = <0>;
177		compatible = "toshiba,tc358764";
178		vddc-supply = <&vcc_1v2_reg>;
179		vddio-supply = <&vcc_1v8_reg>;
180		vddlvds-supply = <&vcc_3v3_reg>;
181		reset-gpios = <&gpd1 6 GPIO_ACTIVE_LOW>;
182		#address-cells = <1>;
183		#size-cells = <0>;
184		port@1 {
185			reg = <1>;
186			bridge_out_ep: endpoint {
187				remote-endpoint = <&panel_ep>;
188			};
189		};
190	};
191};
192
193&fimd {
194	status = "okay";
195};
196
197&hdmi {
198	pinctrl-names = "default";
199	pinctrl-0 = <&hdmi_hpd>;
200	status = "okay";
201	ddc = <&i2c_ddc>;
202	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
203	vdd_osc-supply = <&ldo10_reg>;
204	vdd_pll-supply = <&ldo8_reg>;
205	vdd-supply = <&ldo8_reg>;
206};
207
208&i2c_0 {
209	status = "okay";
210	samsung,i2c-sda-delay = <100>;
211	samsung,i2c-max-bus-freq = <20000>;
212	samsung,i2c-slave-addr = <0x66>;
213
214	pmic@66 {
215		compatible = "samsung,s5m8767-pmic";
216		reg = <0x66>;
217		interrupt-parent = <&gpx3>;
218		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
219		pinctrl-names = "default";
220		pinctrl-0 = <&s5m8767_irq>;
221		wakeup-source;
222
223		vinb1-supply = <&main_dc_reg>;
224		vinb2-supply = <&main_dc_reg>;
225		vinb3-supply = <&main_dc_reg>;
226		vinb4-supply = <&main_dc_reg>;
227		vinb5-supply = <&main_dc_reg>;
228		vinb6-supply = <&main_dc_reg>;
229		vinb7-supply = <&main_dc_reg>;
230		vinb8-supply = <&main_dc_reg>;
231		vinb9-supply = <&main_dc_reg>;
232
233		vinl1-supply = <&buck7_reg>;
234		vinl2-supply = <&buck7_reg>;
235		vinl3-supply = <&buck7_reg>;
236		vinl4-supply = <&main_dc_reg>;
237		vinl5-supply = <&main_dc_reg>;
238		vinl6-supply = <&main_dc_reg>;
239		vinl7-supply = <&main_dc_reg>;
240		vinl8-supply = <&buck8_reg>;
241		vinl9-supply = <&buck8_reg>;
242
243		s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_HIGH>,
244					      <&gpd1 1 GPIO_ACTIVE_HIGH>,
245					      <&gpd1 2 GPIO_ACTIVE_HIGH>;
246		s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_HIGH>,
247					     <&gpx2 4 GPIO_ACTIVE_HIGH>,
248					     <&gpx2 5 GPIO_ACTIVE_HIGH>;
249
250		s5m8767_osc: clocks {
251			compatible = "samsung,s5m8767-clk";
252			#clock-cells = <1>;
253			clock-output-names = "s5m8767_ap", "unused1", "unused2";
254		};
255
256		regulators {
257			ldo1_reg: LDO1 {
258				regulator-name = "VDD_ALIVE_1.0V";
259				regulator-min-microvolt = <1100000>;
260				regulator-max-microvolt = <1100000>;
261				regulator-always-on;
262				regulator-boot-on;
263				op_mode = <1>;
264			};
265
266			ldo2_reg: LDO2 {
267				regulator-name = "VDD_28IO_DP_1.35V";
268				regulator-min-microvolt = <1200000>;
269				regulator-max-microvolt = <1200000>;
270				regulator-always-on;
271				regulator-boot-on;
272				op_mode = <1>;
273			};
274
275			ldo3_reg: LDO3 {
276				regulator-name = "VDD_COMMON1_1.8V";
277				regulator-min-microvolt = <1800000>;
278				regulator-max-microvolt = <1800000>;
279				regulator-always-on;
280				regulator-boot-on;
281				op_mode = <1>;
282			};
283
284			ldo4_reg: LDO4 {
285				regulator-name = "VDD_IOPERI_1.8V";
286				regulator-min-microvolt = <1800000>;
287				regulator-max-microvolt = <1800000>;
288				regulator-always-on;
289				op_mode = <1>;
290			};
291
292			ldo5_reg: LDO5 {
293				regulator-name = "VDD_EXT_1.8V";
294				regulator-min-microvolt = <1800000>;
295				regulator-max-microvolt = <1800000>;
296				regulator-always-on;
297				regulator-boot-on;
298				op_mode = <1>;
299			};
300
301			ldo6_reg: LDO6 {
302				regulator-name = "VDD_MPLL_1.1V";
303				regulator-min-microvolt = <1100000>;
304				regulator-max-microvolt = <1100000>;
305				regulator-always-on;
306				regulator-boot-on;
307				op_mode = <1>;
308			};
309
310			ldo7_reg: LDO7 {
311				regulator-name = "VDD_XPLL_1.1V";
312				regulator-min-microvolt = <1100000>;
313				regulator-max-microvolt = <1100000>;
314				regulator-always-on;
315				regulator-boot-on;
316				op_mode = <1>;
317			};
318
319			ldo8_reg: LDO8 {
320				regulator-name = "VDD_COMMON2_1.0V";
321				regulator-min-microvolt = <1000000>;
322				regulator-max-microvolt = <1000000>;
323				regulator-always-on;
324				regulator-boot-on;
325				op_mode = <1>;
326			};
327
328			ldo9_reg: LDO9 {
329				regulator-name = "VDD_33ON_3.0V";
330				regulator-min-microvolt = <3000000>;
331				regulator-max-microvolt = <3000000>;
332				op_mode = <1>;
333			};
334
335			ldo10_reg: LDO10 {
336				regulator-name = "VDD_COMMON3_1.8V";
337				regulator-min-microvolt = <1800000>;
338				regulator-max-microvolt = <1800000>;
339				regulator-always-on;
340				regulator-boot-on;
341				op_mode = <1>;
342			};
343
344			ldo11_reg: LDO11 {
345				regulator-name = "VDD_ABB2_1.8V";
346				regulator-min-microvolt = <1800000>;
347				regulator-max-microvolt = <1800000>;
348				regulator-always-on;
349				regulator-boot-on;
350				op_mode = <1>;
351			};
352
353			ldo12_reg: LDO12 {
354				regulator-name = "VDD_USB_3.0V";
355				regulator-min-microvolt = <3000000>;
356				regulator-max-microvolt = <3000000>;
357				regulator-always-on;
358				regulator-boot-on;
359				op_mode = <1>;
360			};
361
362			ldo13_reg: LDO13 {
363				regulator-name = "VDDQ_C2C_W_1.8V";
364				regulator-min-microvolt = <1800000>;
365				regulator-max-microvolt = <1800000>;
366				regulator-always-on;
367				regulator-boot-on;
368				op_mode = <1>;
369			};
370
371			ldo14_reg: LDO14 {
372				regulator-name = "VDD18_ABB0_3_1.8V";
373				regulator-min-microvolt = <1800000>;
374				regulator-max-microvolt = <1800000>;
375				regulator-always-on;
376				regulator-boot-on;
377				op_mode = <1>;
378			};
379
380			ldo15_reg: LDO15 {
381				regulator-name = "VDD10_COMMON4_1.0V";
382				regulator-min-microvolt = <1000000>;
383				regulator-max-microvolt = <1000000>;
384				regulator-always-on;
385				regulator-boot-on;
386				op_mode = <1>;
387			};
388
389			ldo16_reg: LDO16 {
390				regulator-name = "VDD18_HSIC_1.8V";
391				regulator-min-microvolt = <1800000>;
392				regulator-max-microvolt = <1800000>;
393				regulator-always-on;
394				regulator-boot-on;
395				op_mode = <1>;
396			};
397
398			ldo17_reg: LDO17 {
399				regulator-name = "VDDQ_MMC2_3_2.8V";
400				regulator-min-microvolt = <2800000>;
401				regulator-max-microvolt = <2800000>;
402				regulator-always-on;
403				regulator-boot-on;
404				op_mode = <1>;
405			};
406
407			ldo18_reg: LDO18 {
408				regulator-name = "VDD_33ON_2.8V";
409				regulator-min-microvolt = <2800000>;
410				regulator-max-microvolt = <2800000>;
411				op_mode = <1>;
412			};
413
414			ldo22_reg: LDO22 {
415				regulator-name = "EXT_33_OFF";
416				regulator-min-microvolt = <3300000>;
417				regulator-max-microvolt = <3300000>;
418				op_mode = <1>;
419			};
420
421			ldo23_reg: LDO23 {
422				regulator-name = "EXT_28_OFF";
423				regulator-min-microvolt = <2800000>;
424				regulator-max-microvolt = <2800000>;
425				op_mode = <1>;
426			};
427
428			ldo25_reg: LDO25 {
429				regulator-name = "PVDD_LDO25";
430				regulator-min-microvolt = <1200000>;
431				regulator-max-microvolt = <1200000>;
432				op_mode = <1>;
433			};
434
435			ldo26_reg: LDO26 {
436				regulator-name = "EXT_18_OFF";
437				regulator-min-microvolt = <1800000>;
438				regulator-max-microvolt = <1800000>;
439				op_mode = <1>;
440			};
441
442			buck1_reg: BUCK1 {
443				regulator-name = "VDD_MIF";
444				regulator-min-microvolt = <950000>;
445				regulator-max-microvolt = <1200000>;
446				regulator-always-on;
447				regulator-boot-on;
448				op_mode = <1>;
449			};
450
451			buck2_reg: BUCK2 {
452				regulator-name = "VDD_ARM";
453				regulator-min-microvolt = <912500>;
454				regulator-max-microvolt = <1300000>;
455				regulator-always-on;
456				regulator-boot-on;
457				op_mode = <1>;
458			};
459
460			buck3_reg: BUCK3 {
461				regulator-name = "VDD_INT";
462				regulator-min-microvolt = <900000>;
463				regulator-max-microvolt = <1200000>;
464				regulator-always-on;
465				regulator-boot-on;
466				op_mode = <1>;
467			};
468
469			buck4_reg: BUCK4 {
470				regulator-name = "VDD_G3D";
471				regulator-min-microvolt = <850000>;
472				regulator-max-microvolt = <1300000>;
473				regulator-always-on;
474				regulator-boot-on;
475				op_mode = <1>;
476			};
477
478			buck5_reg: BUCK5 {
479				regulator-name = "VDD_MEM_1.35V";
480				regulator-min-microvolt = <750000>;
481				regulator-max-microvolt = <1355000>;
482				regulator-always-on;
483				regulator-boot-on;
484				op_mode = <1>;
485			};
486
487			buck7_reg: BUCK7 {
488				regulator-name = "PVDD_BUCK7";
489				regulator-always-on;
490				op_mode = <1>;
491			};
492
493			buck8_reg: BUCK8 {
494				regulator-name = "PVDD_BUCK8";
495				regulator-always-on;
496				op_mode = <1>;
497			};
498
499			buck9_reg: BUCK9 {
500				regulator-name = "VDD_33_OFF_EXT1";
501				regulator-min-microvolt = <750000>;
502				regulator-max-microvolt = <3000000>;
503				op_mode = <1>;
504			};
505		};
506	};
507};
508
509&i2c_3 {
510	status = "okay";
511
512	wm1811: audio-codec@1a {
513		compatible = "wlf,wm1811";
514		reg = <0x1a>;
515		clocks = <&i2s0 CLK_I2S_CDCLK>;
516		clock-names = "MCLK1";
517
518		AVDD2-supply = <&main_dc_reg>;
519		CPVDD-supply = <&main_dc_reg>;
520		DBVDD1-supply = <&main_dc_reg>;
521		DBVDD2-supply = <&main_dc_reg>;
522		DBVDD3-supply = <&main_dc_reg>;
523		LDO1VDD-supply = <&main_dc_reg>;
524		SPKVDD1-supply = <&main_dc_reg>;
525		SPKVDD2-supply = <&main_dc_reg>;
526
527		wlf,ldo1ena = <&gpb0 0 GPIO_ACTIVE_HIGH>;
528		wlf,ldo2ena = <&gpb0 1 GPIO_ACTIVE_HIGH>;
529	};
530};
531
532&i2c_8 {
533	status = "okay";
534	/* used by HDMI PHY */
535	samsung,i2c-sda-delay = <100>;
536	samsung,i2c-max-bus-freq = <66000>;
537};
538
539&i2c_9 {
540	status = "okay";
541	samsung,i2c-sda-delay = <100>;
542	samsung,i2c-max-bus-freq = <40000>;
543};
544
545&i2s0 {
546	assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
547	assigned-clock-parents = <&clock_audss EXYNOS_I2S_BUS>;
548	status = "okay";
549};
550
551&i2s0_bus {
552	samsung,pin-drv = <EXYNOS4_PIN_DRV_LV2>;
553};
554
555&mali {
556	mali-supply = <&buck4_reg>;
557	status = "okay";
558};
559
560&mixer {
561	status = "okay";
562};
563
564&mmc_0 {
565	status = "okay";
566	broken-cd;
567	card-detect-delay = <200>;
568	samsung,dw-mshc-ciu-div = <3>;
569	samsung,dw-mshc-sdr-timing = <2 3>;
570	samsung,dw-mshc-ddr-timing = <1 2>;
571	vmmc-supply = <&mmc_reg>;
572	pinctrl-names = "default";
573	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
574	bus-width = <8>;
575	cap-mmc-highspeed;
576};
577
578&mmc_2 {
579	status = "okay";
580	card-detect-delay = <200>;
581	samsung,dw-mshc-ciu-div = <3>;
582	samsung,dw-mshc-sdr-timing = <2 3>;
583	samsung,dw-mshc-ddr-timing = <1 2>;
584	vmmc-supply = <&mmc_reg>;
585	pinctrl-names = "default";
586	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
587	bus-width = <4>;
588	disable-wp;
589	cap-sd-highspeed;
590};
591
592&pinctrl_0 {
593	s5m8767_irq: s5m8767-irq-pins {
594		samsung,pins = "gpx3-2";
595		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
596	};
597};
598
599&rtc {
600	clocks = <&clock CLK_RTC>, <&s5m8767_osc S2MPS11_CLK_AP>;
601	clock-names = "rtc", "rtc_src";
602	status = "okay";
603};
604
605&sata {
606	status = "okay";
607};
608
609&sata_phy {
610	status = "okay";
611	samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
612};
613
614&sata_phy_i2c {
615	status = "okay";
616};
617
618&soc {
619	/*
620	 * For unknown reasons HDMI-DDC does not work with Exynos I2C
621	 * controllers. Lets use software I2C over GPIO pins as a workaround.
622	 */
623	i2c_ddc: i2c-10 {
624		pinctrl-names = "default";
625		pinctrl-0 = <&i2c2_gpio_bus>;
626		status = "okay";
627		compatible = "i2c-gpio";
628		sda-gpios = <&gpa0 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
629		scl-gpios = <&gpa0 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
630		i2c-gpio,delay-us = <2>;
631		#address-cells = <1>;
632		#size-cells = <0>;
633	};
634};
635
636&usbdrd {
637	vdd10-supply = <&ldo15_reg>;
638	vdd33-supply = <&ldo12_reg>;
639};
640