1/*
2 * Common definition for Hardkernel's Exynos4412 based ODROID-X/X2/U2/U3 boards
3 * device tree source
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8*/
9
10#include <dt-bindings/sound/samsung-i2s.h>
11#include <dt-bindings/input/input.h>
12#include <dt-bindings/clock/maxim,max77686.h>
13#include "exynos4412.dtsi"
14
15/ {
16	chosen {
17		stdout-path = &serial_1;
18	};
19
20	firmware@0204F000 {
21		compatible = "samsung,secure-firmware";
22		reg = <0x0204F000 0x1000>;
23	};
24
25	gpio_keys {
26		compatible = "gpio-keys";
27		pinctrl-names = "default";
28		pinctrl-0 = <&gpio_power_key>;
29
30		power_key {
31			interrupt-parent = <&gpx1>;
32			interrupts = <3 0>;
33			gpios = <&gpx1 3 1>;
34			linux,code = <KEY_POWER>;
35			label = "power key";
36			debounce-interval = <10>;
37			gpio-key,wakeup;
38		};
39	};
40
41	i2s0: i2s@03830000 {
42		pinctrl-0 = <&i2s0_bus>;
43		pinctrl-names = "default";
44		status = "okay";
45		clocks = <&clock_audss EXYNOS_I2S_BUS>,
46			 <&clock_audss EXYNOS_DOUT_AUD_BUS>,
47			 <&clock_audss EXYNOS_SCLK_I2S>;
48		clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
49	};
50
51	sound: sound {
52		compatible = "simple-audio-card";
53		assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>,
54				<&clock_audss EXYNOS_MOUT_I2S>,
55				<&clock_audss EXYNOS_DOUT_SRP>,
56				<&clock_audss EXYNOS_DOUT_AUD_BUS>;
57		assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
58				<&clock_audss EXYNOS_MOUT_AUDSS>;
59		assigned-clock-rates = <0>,
60				<0>,
61				<192000000>,
62				<19200000>;
63
64		simple-audio-card,format = "i2s";
65		simple-audio-card,bitclock-master = <&link0_codec>;
66		simple-audio-card,frame-master = <&link0_codec>;
67
68		simple-audio-card,cpu {
69			sound-dai = <&i2s0 0>;
70			system-clock-frequency = <19200000>;
71		};
72
73		link0_codec: simple-audio-card,codec {
74			sound-dai = <&max98090>;
75			clocks = <&i2s0 CLK_I2S_CDCLK>;
76		};
77	};
78
79	emmc_pwrseq: pwrseq {
80		pinctrl-0 = <&sd1_cd>;
81		pinctrl-names = "default";
82		compatible = "mmc-pwrseq-emmc";
83		reset-gpios = <&gpk1 2 1>;
84	};
85
86	mmc@12550000 {
87		pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
88		pinctrl-names = "default";
89		vmmc-supply = <&ldo20_reg &buck8_reg>;
90		mmc-pwrseq = <&emmc_pwrseq>;
91		status = "okay";
92
93		num-slots = <1>;
94		broken-cd;
95		card-detect-delay = <200>;
96		samsung,dw-mshc-ciu-div = <3>;
97		samsung,dw-mshc-sdr-timing = <2 3>;
98		samsung,dw-mshc-ddr-timing = <1 2>;
99		bus-width = <8>;
100		cap-mmc-highspeed;
101	};
102
103	watchdog@10060000 {
104		status = "okay";
105	};
106
107	rtc@10070000 {
108		status = "okay";
109		clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
110		clock-names = "rtc", "rtc_src";
111	};
112
113	g2d@10800000 {
114		status = "okay";
115	};
116
117	camera {
118		status = "okay";
119		pinctrl-names = "default";
120		pinctrl-0 = <>;
121
122		fimc_0: fimc@11800000 {
123			status = "okay";
124			assigned-clocks = <&clock CLK_MOUT_FIMC0>,
125					<&clock CLK_SCLK_FIMC0>;
126			assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
127			assigned-clock-rates = <0>, <176000000>;
128		};
129
130		fimc_1: fimc@11810000 {
131			status = "okay";
132			assigned-clocks = <&clock CLK_MOUT_FIMC1>,
133					<&clock CLK_SCLK_FIMC1>;
134			assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
135			assigned-clock-rates = <0>, <176000000>;
136		};
137
138		fimc_2: fimc@11820000 {
139			status = "okay";
140			assigned-clocks = <&clock CLK_MOUT_FIMC2>,
141					<&clock CLK_SCLK_FIMC2>;
142			assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
143			assigned-clock-rates = <0>, <176000000>;
144		};
145
146		fimc_3: fimc@11830000 {
147			status = "okay";
148			assigned-clocks = <&clock CLK_MOUT_FIMC3>,
149					<&clock CLK_SCLK_FIMC3>;
150			assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
151			assigned-clock-rates = <0>, <176000000>;
152		};
153	};
154
155	sdhci@12530000 {
156		bus-width = <4>;
157		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
158		pinctrl-names = "default";
159		vmmc-supply = <&ldo4_reg &ldo21_reg>;
160		cd-gpios = <&gpk2 2 0>;
161		cd-inverted;
162		status = "okay";
163	};
164
165	serial@13800000 {
166		status = "okay";
167	};
168
169	serial@13810000 {
170		status = "okay";
171	};
172
173	fixed-rate-clocks {
174		xxti {
175			compatible = "samsung,clock-xxti";
176			clock-frequency = <0>;
177		};
178
179		xusbxti {
180			compatible = "samsung,clock-xusbxti";
181			clock-frequency = <24000000>;
182		};
183	};
184
185	i2c@13860000 {
186		pinctrl-0 = <&i2c0_bus>;
187		pinctrl-names = "default";
188		samsung,i2c-sda-delay = <100>;
189		samsung,i2c-max-bus-freq = <400000>;
190		status = "okay";
191
192		usb3503: usb3503@08 {
193			compatible = "smsc,usb3503";
194			reg = <0x08>;
195
196			intn-gpios = <&gpx3 0 0>;
197			connect-gpios = <&gpx3 4 0>;
198			reset-gpios = <&gpx3 5 0>;
199			initial-mode = <1>;
200		};
201
202		max77686: pmic@09 {
203			compatible = "maxim,max77686";
204			interrupt-parent = <&gpx3>;
205			interrupts = <2 0>;
206			pinctrl-names = "default";
207			pinctrl-0 = <&max77686_irq>;
208			reg = <0x09>;
209			#clock-cells = <1>;
210
211			voltage-regulators {
212				ldo1_reg: LDO1 {
213					regulator-name = "VDD_ALIVE_1.0V";
214					regulator-min-microvolt = <1000000>;
215					regulator-max-microvolt = <1000000>;
216					regulator-always-on;
217				};
218
219				ldo2_reg: LDO2 {
220					regulator-name = "VDDQ_M1_2_1.8V";
221					regulator-min-microvolt = <1800000>;
222					regulator-max-microvolt = <1800000>;
223					regulator-always-on;
224				};
225
226				ldo3_reg: LDO3 {
227					regulator-name = "VDDQ_EXT_1.8V";
228					regulator-min-microvolt = <1800000>;
229					regulator-max-microvolt = <1800000>;
230					regulator-always-on;
231				};
232
233				ldo4_reg: LDO4 {
234					regulator-name = "VDDQ_MMC2_2.8V";
235					regulator-min-microvolt = <2800000>;
236					regulator-max-microvolt = <2800000>;
237					regulator-always-on;
238					regulator-boot-on;
239				};
240
241				ldo5_reg: LDO5 {
242					regulator-name = "VDDQ_MMC1_3_1.8V";
243					regulator-min-microvolt = <1800000>;
244					regulator-max-microvolt = <1800000>;
245					regulator-always-on;
246					regulator-boot-on;
247				};
248
249				ldo6_reg: LDO6 {
250					regulator-name = "VDD10_MPLL_1.0V";
251					regulator-min-microvolt = <1000000>;
252					regulator-max-microvolt = <1000000>;
253					regulator-always-on;
254				};
255
256				ldo7_reg: LDO7 {
257					regulator-name = "VDD10_XPLL_1.0V";
258					regulator-min-microvolt = <1000000>;
259					regulator-max-microvolt = <1000000>;
260					regulator-always-on;
261				};
262
263				ldo8_reg: ldo@8 {
264					regulator-compatible = "LDO8";
265					regulator-name = "VDD10_HDMI_1.0V";
266					regulator-min-microvolt = <1000000>;
267					regulator-max-microvolt = <1000000>;
268				};
269
270				ldo10_reg: ldo@10 {
271					regulator-compatible = "LDO10";
272					regulator-name = "VDDQ_MIPIHSI_1.8V";
273					regulator-min-microvolt = <1800000>;
274					regulator-max-microvolt = <1800000>;
275				};
276
277				ldo11_reg: LDO11 {
278					regulator-name = "VDD18_ABB1_1.8V";
279					regulator-min-microvolt = <1800000>;
280					regulator-max-microvolt = <1800000>;
281					regulator-always-on;
282				};
283
284				ldo12_reg: LDO12 {
285					regulator-name = "VDD33_USB_3.3V";
286					regulator-min-microvolt = <3300000>;
287					regulator-max-microvolt = <3300000>;
288					regulator-always-on;
289					regulator-boot-on;
290				};
291
292				ldo13_reg: LDO13 {
293					regulator-name = "VDDQ_C2C_W_1.8V";
294					regulator-min-microvolt = <1800000>;
295					regulator-max-microvolt = <1800000>;
296					regulator-always-on;
297					regulator-boot-on;
298				};
299
300				ldo14_reg: LDO14 {
301					regulator-name = "VDD18_ABB0_2_1.8V";
302					regulator-min-microvolt = <1800000>;
303					regulator-max-microvolt = <1800000>;
304					regulator-always-on;
305					regulator-boot-on;
306				};
307
308				ldo15_reg: LDO15 {
309					regulator-name = "VDD10_HSIC_1.0V";
310					regulator-min-microvolt = <1000000>;
311					regulator-max-microvolt = <1000000>;
312					regulator-always-on;
313					regulator-boot-on;
314				};
315
316				ldo16_reg: LDO16 {
317					regulator-name = "VDD18_HSIC_1.8V";
318					regulator-min-microvolt = <1800000>;
319					regulator-max-microvolt = <1800000>;
320					regulator-always-on;
321					regulator-boot-on;
322				};
323
324				ldo20_reg: LDO20 {
325					regulator-name = "LDO20_1.8V";
326					regulator-min-microvolt = <1800000>;
327					regulator-max-microvolt = <1800000>;
328					regulator-boot-on;
329				};
330
331				ldo21_reg: LDO21 {
332					regulator-name = "LDO21_3.3V";
333					regulator-min-microvolt = <3300000>;
334					regulator-max-microvolt = <3300000>;
335					regulator-always-on;
336					regulator-boot-on;
337				};
338
339				ldo25_reg: LDO25 {
340					regulator-name = "VDDQ_LCD_1.8V";
341					regulator-min-microvolt = <1800000>;
342					regulator-max-microvolt = <1800000>;
343					regulator-always-on;
344					regulator-boot-on;
345				};
346
347				buck1_reg: BUCK1 {
348					regulator-name = "vdd_mif";
349					regulator-min-microvolt = <1000000>;
350					regulator-max-microvolt = <1000000>;
351					regulator-always-on;
352					regulator-boot-on;
353				};
354
355				buck2_reg: BUCK2 {
356					regulator-name = "vdd_arm";
357					regulator-min-microvolt = <900000>;
358					regulator-max-microvolt = <1350000>;
359					regulator-always-on;
360					regulator-boot-on;
361				};
362
363				buck3_reg: BUCK3 {
364					regulator-name = "vdd_int";
365					regulator-min-microvolt = <1000000>;
366					regulator-max-microvolt = <1000000>;
367					regulator-always-on;
368					regulator-boot-on;
369				};
370
371				buck4_reg: BUCK4 {
372					regulator-name = "vdd_g3d";
373					regulator-min-microvolt = <900000>;
374					regulator-max-microvolt = <1100000>;
375					regulator-microvolt-offset = <50000>;
376				};
377
378				buck5_reg: BUCK5 {
379					regulator-name = "VDDQ_CKEM1_2_1.2V";
380					regulator-min-microvolt = <1200000>;
381					regulator-max-microvolt = <1200000>;
382					regulator-always-on;
383					regulator-boot-on;
384				};
385
386				buck6_reg: BUCK6 {
387					regulator-name = "BUCK6_1.35V";
388					regulator-min-microvolt = <1350000>;
389					regulator-max-microvolt = <1350000>;
390					regulator-always-on;
391					regulator-boot-on;
392				};
393
394				buck7_reg: BUCK7 {
395					regulator-name = "BUCK7_2.0V";
396					regulator-min-microvolt = <2000000>;
397					regulator-max-microvolt = <2000000>;
398					regulator-always-on;
399				};
400
401				buck8_reg: BUCK8 {
402					regulator-name = "BUCK8_2.8V";
403					regulator-min-microvolt = <2800000>;
404					regulator-max-microvolt = <2800000>;
405				};
406			};
407		};
408	};
409
410	i2c@13870000 {
411		pinctrl-names = "default";
412		pinctrl-0 = <&i2c1_bus>;
413		status = "okay";
414		max98090: max98090@10 {
415			compatible = "maxim,max98090";
416			reg = <0x10>;
417			interrupt-parent = <&gpx0>;
418			interrupts = <0 0>;
419			clocks = <&i2s0 CLK_I2S_CDCLK>;
420			clock-names = "mclk";
421			#sound-dai-cells = <0>;
422		};
423	};
424
425	exynos-usbphy@125B0000 {
426		status = "okay";
427	};
428
429	hsotg@12480000 {
430		dr_mode = "peripheral";
431		status = "okay";
432		vusb_d-supply = <&ldo15_reg>;
433		vusb_a-supply = <&ldo12_reg>;
434	};
435
436	ehci: ehci@12580000 {
437		status = "okay";
438	};
439
440	tmu@100C0000 {
441		vtmu-supply = <&ldo10_reg>;
442		status = "okay";
443	};
444
445	thermal-zones {
446		cpu_thermal: cpu-thermal {
447			cooling-maps {
448				map0 {
449				     /* Corresponds to 800MHz at freq_table */
450				     cooling-device = <&cpu0 7 7>;
451				};
452				map1 {
453				     /* Corresponds to 200MHz at freq_table */
454				     cooling-device = <&cpu0 13 13>;
455			       };
456		       };
457		};
458	};
459
460	mixer: mixer@12C10000 {
461		status = "okay";
462	};
463
464	hdmi@12D00000 {
465		hpd-gpio = <&gpx3 7 0>;
466		pinctrl-names = "default";
467		pinctrl-0 = <&hdmi_hpd>;
468		vdd-supply = <&ldo8_reg>;
469		vdd_osc-supply = <&ldo10_reg>;
470		vdd_pll-supply = <&ldo8_reg>;
471		ddc = <&hdmi_ddc>;
472		status = "okay";
473	};
474
475	hdmi_ddc: i2c@13880000 {
476		status = "okay";
477		pinctrl-names = "default";
478		pinctrl-0 = <&i2c2_bus>;
479	};
480
481	i2c@138E0000 {
482		status = "okay";
483	};
484};
485
486/* RSTN signal for eMMC */
487&sd1_cd {
488	samsung,pin-pud = <0>;
489	samsung,pin-drv = <0>;
490};
491
492&pinctrl_1 {
493	gpio_power_key: power_key {
494		samsung,pins = "gpx1-3";
495		samsung,pin-pud = <0>;
496	};
497
498	max77686_irq: max77686-irq {
499		samsung,pins = "gpx3-2";
500		samsung,pin-function = <0>;
501		samsung,pin-pud = <0>;
502		samsung,pin-drv = <0>;
503	};
504
505	hdmi_hpd: hdmi-hpd {
506		samsung,pins = "gpx3-7";
507		samsung,pin-pud = <1>;
508	};
509};
510