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