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