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		menu {
34			label = "SW-TACT2";
35			gpios = <&gpx1 4 GPIO_ACTIVE_LOW>;
36			linux,code = <KEY_MENU>;
37			wakeup-source;
38		};
39
40		home {
41			label = "SW-TACT3";
42			gpios = <&gpx1 5 GPIO_ACTIVE_LOW>;
43			linux,code = <KEY_HOME>;
44			wakeup-source;
45		};
46
47		up {
48			label = "SW-TACT4";
49			gpios = <&gpx1 6 GPIO_ACTIVE_LOW>;
50			linux,code = <KEY_UP>;
51			wakeup-source;
52		};
53
54		down {
55			label = "SW-TACT5";
56			gpios = <&gpx1 7 GPIO_ACTIVE_LOW>;
57			linux,code = <KEY_DOWN>;
58			wakeup-source;
59		};
60
61		back {
62			label = "SW-TACT6";
63			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
64			linux,code = <KEY_BACK>;
65			wakeup-source;
66		};
67
68		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
222		vinb1-supply = <&main_dc_reg>;
223		vinb2-supply = <&main_dc_reg>;
224		vinb3-supply = <&main_dc_reg>;
225		vinb4-supply = <&main_dc_reg>;
226		vinb5-supply = <&main_dc_reg>;
227		vinb6-supply = <&main_dc_reg>;
228		vinb7-supply = <&main_dc_reg>;
229		vinb8-supply = <&main_dc_reg>;
230		vinb9-supply = <&main_dc_reg>;
231
232		vinl1-supply = <&buck7_reg>;
233		vinl2-supply = <&buck7_reg>;
234		vinl3-supply = <&buck7_reg>;
235		vinl4-supply = <&main_dc_reg>;
236		vinl5-supply = <&main_dc_reg>;
237		vinl6-supply = <&main_dc_reg>;
238		vinl7-supply = <&main_dc_reg>;
239		vinl8-supply = <&buck8_reg>;
240		vinl9-supply = <&buck8_reg>;
241
242		s5m8767,pmic-buck2-dvs-voltage = <1300000>;
243		s5m8767,pmic-buck3-dvs-voltage = <1100000>;
244		s5m8767,pmic-buck4-dvs-voltage = <1200000>;
245		s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_HIGH>,
246					      <&gpd1 1 GPIO_ACTIVE_HIGH>,
247					      <&gpd1 2 GPIO_ACTIVE_HIGH>;
248		s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_HIGH>,
249					     <&gpx2 4 GPIO_ACTIVE_HIGH>,
250					     <&gpx2 5 GPIO_ACTIVE_HIGH>;
251
252		s5m8767_osc: clocks {
253			compatible = "samsung,s5m8767-clk";
254			#clock-cells = <1>;
255			clock-output-names = "s5m8767_ap", "unused1", "unused2";
256		};
257
258		regulators {
259			ldo1_reg: LDO1 {
260				regulator-name = "VDD_ALIVE_1.0V";
261				regulator-min-microvolt = <1100000>;
262				regulator-max-microvolt = <1100000>;
263				regulator-always-on;
264				regulator-boot-on;
265				op_mode = <1>;
266			};
267
268			ldo2_reg: LDO2 {
269				regulator-name = "VDD_28IO_DP_1.35V";
270				regulator-min-microvolt = <1200000>;
271				regulator-max-microvolt = <1200000>;
272				regulator-always-on;
273				regulator-boot-on;
274				op_mode = <1>;
275			};
276
277			ldo3_reg: LDO3 {
278				regulator-name = "VDD_COMMON1_1.8V";
279				regulator-min-microvolt = <1800000>;
280				regulator-max-microvolt = <1800000>;
281				regulator-always-on;
282				regulator-boot-on;
283				op_mode = <1>;
284			};
285
286			ldo4_reg: LDO4 {
287				regulator-name = "VDD_IOPERI_1.8V";
288				regulator-min-microvolt = <1800000>;
289				regulator-max-microvolt = <1800000>;
290				regulator-always-on;
291				op_mode = <1>;
292			};
293
294			ldo5_reg: LDO5 {
295				regulator-name = "VDD_EXT_1.8V";
296				regulator-min-microvolt = <1800000>;
297				regulator-max-microvolt = <1800000>;
298				regulator-always-on;
299				regulator-boot-on;
300				op_mode = <1>;
301			};
302
303			ldo6_reg: LDO6 {
304				regulator-name = "VDD_MPLL_1.1V";
305				regulator-min-microvolt = <1100000>;
306				regulator-max-microvolt = <1100000>;
307				regulator-always-on;
308				regulator-boot-on;
309				op_mode = <1>;
310			};
311
312			ldo7_reg: LDO7 {
313				regulator-name = "VDD_XPLL_1.1V";
314				regulator-min-microvolt = <1100000>;
315				regulator-max-microvolt = <1100000>;
316				regulator-always-on;
317				regulator-boot-on;
318				op_mode = <1>;
319			};
320
321			ldo8_reg: LDO8 {
322				regulator-name = "VDD_COMMON2_1.0V";
323				regulator-min-microvolt = <1000000>;
324				regulator-max-microvolt = <1000000>;
325				regulator-always-on;
326				regulator-boot-on;
327				op_mode = <1>;
328			};
329
330			ldo9_reg: LDO9 {
331				regulator-name = "VDD_33ON_3.0V";
332				regulator-min-microvolt = <3000000>;
333				regulator-max-microvolt = <3000000>;
334				op_mode = <1>;
335			};
336
337			ldo10_reg: LDO10 {
338				regulator-name = "VDD_COMMON3_1.8V";
339				regulator-min-microvolt = <1800000>;
340				regulator-max-microvolt = <1800000>;
341				regulator-always-on;
342				regulator-boot-on;
343				op_mode = <1>;
344			};
345
346			ldo11_reg: LDO11 {
347				regulator-name = "VDD_ABB2_1.8V";
348				regulator-min-microvolt = <1800000>;
349				regulator-max-microvolt = <1800000>;
350				regulator-always-on;
351				regulator-boot-on;
352				op_mode = <1>;
353			};
354
355			ldo12_reg: LDO12 {
356				regulator-name = "VDD_USB_3.0V";
357				regulator-min-microvolt = <3000000>;
358				regulator-max-microvolt = <3000000>;
359				regulator-always-on;
360				regulator-boot-on;
361				op_mode = <1>;
362			};
363
364			ldo13_reg: LDO13 {
365				regulator-name = "VDDQ_C2C_W_1.8V";
366				regulator-min-microvolt = <1800000>;
367				regulator-max-microvolt = <1800000>;
368				regulator-always-on;
369				regulator-boot-on;
370				op_mode = <1>;
371			};
372
373			ldo14_reg: LDO14 {
374				regulator-name = "VDD18_ABB0_3_1.8V";
375				regulator-min-microvolt = <1800000>;
376				regulator-max-microvolt = <1800000>;
377				regulator-always-on;
378				regulator-boot-on;
379				op_mode = <1>;
380			};
381
382			ldo15_reg: LDO15 {
383				regulator-name = "VDD10_COMMON4_1.0V";
384				regulator-min-microvolt = <1000000>;
385				regulator-max-microvolt = <1000000>;
386				regulator-always-on;
387				regulator-boot-on;
388				op_mode = <1>;
389			};
390
391			ldo16_reg: LDO16 {
392				regulator-name = "VDD18_HSIC_1.8V";
393				regulator-min-microvolt = <1800000>;
394				regulator-max-microvolt = <1800000>;
395				regulator-always-on;
396				regulator-boot-on;
397				op_mode = <1>;
398			};
399
400			ldo17_reg: LDO17 {
401				regulator-name = "VDDQ_MMC2_3_2.8V";
402				regulator-min-microvolt = <2800000>;
403				regulator-max-microvolt = <2800000>;
404				regulator-always-on;
405				regulator-boot-on;
406				op_mode = <1>;
407			};
408
409			ldo18_reg: LDO18 {
410				regulator-name = "VDD_33ON_2.8V";
411				regulator-min-microvolt = <2800000>;
412				regulator-max-microvolt = <2800000>;
413				op_mode = <1>;
414			};
415
416			ldo22_reg: LDO22 {
417				regulator-name = "EXT_33_OFF";
418				regulator-min-microvolt = <3300000>;
419				regulator-max-microvolt = <3300000>;
420				op_mode = <1>;
421			};
422
423			ldo23_reg: LDO23 {
424				regulator-name = "EXT_28_OFF";
425				regulator-min-microvolt = <2800000>;
426				regulator-max-microvolt = <2800000>;
427				op_mode = <1>;
428			};
429
430			ldo25_reg: LDO25 {
431				regulator-name = "PVDD_LDO25";
432				regulator-min-microvolt = <1200000>;
433				regulator-max-microvolt = <1200000>;
434				op_mode = <1>;
435			};
436
437			ldo26_reg: LDO26 {
438				regulator-name = "EXT_18_OFF";
439				regulator-min-microvolt = <1800000>;
440				regulator-max-microvolt = <1800000>;
441				op_mode = <1>;
442			};
443
444			buck1_reg: BUCK1 {
445				regulator-name = "VDD_MIF";
446				regulator-min-microvolt = <950000>;
447				regulator-max-microvolt = <1200000>;
448				regulator-always-on;
449				regulator-boot-on;
450				op_mode = <1>;
451			};
452
453			buck2_reg: BUCK2 {
454				regulator-name = "VDD_ARM";
455				regulator-min-microvolt = <912500>;
456				regulator-max-microvolt = <1300000>;
457				regulator-always-on;
458				regulator-boot-on;
459				op_mode = <1>;
460			};
461
462			buck3_reg: BUCK3 {
463				regulator-name = "VDD_INT";
464				regulator-min-microvolt = <900000>;
465				regulator-max-microvolt = <1200000>;
466				regulator-always-on;
467				regulator-boot-on;
468				op_mode = <1>;
469			};
470
471			buck4_reg: BUCK4 {
472				regulator-name = "VDD_G3D";
473				regulator-min-microvolt = <850000>;
474				regulator-max-microvolt = <1300000>;
475				regulator-always-on;
476				regulator-boot-on;
477				op_mode = <1>;
478			};
479
480			buck5_reg: BUCK5 {
481				regulator-name = "VDD_MEM_1.35V";
482				regulator-min-microvolt = <750000>;
483				regulator-max-microvolt = <1355000>;
484				regulator-always-on;
485				regulator-boot-on;
486				op_mode = <1>;
487			};
488
489			buck7_reg: BUCK7 {
490				regulator-name = "PVDD_BUCK7";
491				regulator-always-on;
492				op_mode = <1>;
493			};
494
495			buck8_reg: BUCK8 {
496				regulator-name = "PVDD_BUCK8";
497				regulator-always-on;
498				op_mode = <1>;
499			};
500
501			buck9_reg: BUCK9 {
502				regulator-name = "VDD_33_OFF_EXT1";
503				regulator-min-microvolt = <750000>;
504				regulator-max-microvolt = <3000000>;
505				op_mode = <1>;
506			};
507		};
508	};
509};
510
511&i2c_3 {
512	status = "okay";
513
514	wm1811: audio-codec@1a {
515		compatible = "wlf,wm1811";
516		reg = <0x1a>;
517		clocks = <&i2s0 CLK_I2S_CDCLK>;
518		clock-names = "MCLK1";
519
520		AVDD2-supply = <&main_dc_reg>;
521		CPVDD-supply = <&main_dc_reg>;
522		DBVDD1-supply = <&main_dc_reg>;
523		DBVDD2-supply = <&main_dc_reg>;
524		DBVDD3-supply = <&main_dc_reg>;
525		LDO1VDD-supply = <&main_dc_reg>;
526		SPKVDD1-supply = <&main_dc_reg>;
527		SPKVDD2-supply = <&main_dc_reg>;
528
529		wlf,ldo1ena = <&gpb0 0 GPIO_ACTIVE_HIGH>;
530		wlf,ldo2ena = <&gpb0 1 GPIO_ACTIVE_HIGH>;
531	};
532};
533
534&i2c_8 {
535	status = "okay";
536	/* used by HDMI PHY */
537	samsung,i2c-sda-delay = <100>;
538	samsung,i2c-max-bus-freq = <66000>;
539};
540
541&i2c_9 {
542	status = "okay";
543	samsung,i2c-sda-delay = <100>;
544	samsung,i2c-max-bus-freq = <40000>;
545};
546
547&i2s0 {
548	assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
549	assigned-clock-parents = <&clock_audss EXYNOS_I2S_BUS>;
550	status = "okay";
551};
552
553&i2s0_bus {
554	samsung,pin-drv = <EXYNOS4_PIN_DRV_LV2>;
555};
556
557&mali {
558	mali-supply = <&buck4_reg>;
559	status = "okay";
560};
561
562&mixer {
563	status = "okay";
564};
565
566&mmc_0 {
567	status = "okay";
568	broken-cd;
569	card-detect-delay = <200>;
570	samsung,dw-mshc-ciu-div = <3>;
571	samsung,dw-mshc-sdr-timing = <2 3>;
572	samsung,dw-mshc-ddr-timing = <1 2>;
573	vmmc-supply = <&mmc_reg>;
574	pinctrl-names = "default";
575	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
576	bus-width = <8>;
577	cap-mmc-highspeed;
578};
579
580&mmc_2 {
581	status = "okay";
582	card-detect-delay = <200>;
583	samsung,dw-mshc-ciu-div = <3>;
584	samsung,dw-mshc-sdr-timing = <2 3>;
585	samsung,dw-mshc-ddr-timing = <1 2>;
586	vmmc-supply = <&mmc_reg>;
587	pinctrl-names = "default";
588	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
589	bus-width = <4>;
590	disable-wp;
591	cap-sd-highspeed;
592};
593
594&pinctrl_0 {
595	s5m8767_irq: s5m8767-irq {
596		samsung,pins = "gpx3-2";
597		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
598	};
599};
600
601&rtc {
602	clocks = <&clock CLK_RTC>, <&s5m8767_osc S2MPS11_CLK_AP>;
603	clock-names = "rtc", "rtc_src";
604	status = "okay";
605};
606
607&sata {
608	status = "okay";
609};
610
611&sata_phy {
612	status = "okay";
613	samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
614};
615
616&sata_phy_i2c {
617	status = "okay";
618};
619
620&soc {
621	/*
622	 * For unknown reasons HDMI-DDC does not work with Exynos I2C
623	 * controllers. Lets use software I2C over GPIO pins as a workaround.
624	 */
625	i2c_ddc: i2c-10 {
626		pinctrl-names = "default";
627		pinctrl-0 = <&i2c2_gpio_bus>;
628		status = "okay";
629		compatible = "i2c-gpio";
630		sda-gpios = <&gpa0 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
631		scl-gpios = <&gpa0 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
632		i2c-gpio,delay-us = <2>;
633		#address-cells = <1>;
634		#size-cells = <0>;
635	};
636};
637