xref: /linux/scripts/dtc/include-prefixes/arm64/amlogic/meson-g12b-odroid-go-ultra.dts (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2022 Neil Armstrong <neil.armstrong@linaro.org>
4 */
5
6/dts-v1/;
7
8#include "meson-g12b-s922x.dtsi"
9#include <dt-bindings/input/input.h>
10#include <dt-bindings/leds/common.h>
11#include <dt-bindings/gpio/meson-g12a-gpio.h>
12#include <dt-bindings/sound/meson-g12a-toacodec.h>
13#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
14
15/ {
16	compatible = "hardkernel,odroid-go-ultra", "amlogic,s922x", "amlogic,g12b";
17	model = "Hardkernel ODROID-GO-Ultra";
18
19	aliases {
20		serial0 = &uart_AO;
21		rtc0 = &vrtc;
22	};
23
24	adc-joystick-left {
25		compatible = "adc-joystick";
26		io-channels = <&saradc 2>, <&saradc 3>;
27		poll-interval = <10>;
28		#address-cells = <1>;
29		#size-cells = <0>;
30
31		axis@0 {
32			reg = <0>;
33			linux,code = <ABS_Y>;
34			abs-range = <3150 950>;
35			abs-fuzz = <32>;
36			abs-flat = <64>;
37		};
38		axis@1 {
39			reg = <1>;
40			linux,code = <ABS_X>;
41			abs-range = <700 2900>;
42			abs-fuzz = <32>;
43			abs-flat = <64>;
44		};
45	};
46
47	adc-joystick-right {
48		compatible = "adc-joystick";
49		io-channels = <&saradc 0>, <&saradc 1>;
50		poll-interval = <10>;
51		#address-cells = <1>;
52		#size-cells = <0>;
53
54		axis@0 {
55			reg = <0>;
56			linux,code = <ABS_RY>;
57			abs-range = <3150 950>;
58			abs-fuzz = <32>;
59			abs-flat = <64>;
60		};
61		axis@1 {
62			reg = <1>;
63			linux,code = <ABS_RX>;
64			abs-range = <800 3000>;
65			abs-fuzz = <32>;
66			abs-flat = <64>;
67		};
68	};
69
70	chosen {
71		stdout-path = "serial0:115200n8";
72	};
73
74	codec_clk: codec-clk {
75		compatible = "fixed-clock";
76		clock-frequency = <12288000>;
77		clock-output-names = "codec_clk";
78		#clock-cells = <0>;
79	};
80
81	gpio-keys {
82		compatible = "gpio-keys-polled";
83		poll-interval = <10>;
84		pinctrl-0 = <&keypad_gpio_pins>;
85		pinctrl-names = "default";
86
87		volume-up-button {
88			label = "VOLUME-UP";
89			linux,code = <KEY_VOLUMEUP>;
90			gpios = <&gpio GPIOX_8 GPIO_ACTIVE_LOW>;
91		};
92		volume-down-button {
93			label = "VOLUME-DOWN";
94			linux,code = <KEY_VOLUMEDOWN>;
95			gpios = <&gpio GPIOX_9 GPIO_ACTIVE_LOW>;
96		};
97		dpad-up-button {
98			label = "DPAD-UP";
99			linux,code = <BTN_DPAD_UP>;
100			gpios = <&gpio GPIOX_0 GPIO_ACTIVE_LOW>;
101		};
102		dpad-down-button {
103			label = "DPAD-DOWN";
104			linux,code = <BTN_DPAD_DOWN>;
105			gpios = <&gpio GPIOX_1 GPIO_ACTIVE_LOW>;
106		};
107		dpad-left-button {
108			label = "DPAD-LEFT";
109			linux,code = <BTN_DPAD_LEFT>;
110			gpios = <&gpio GPIOX_2 GPIO_ACTIVE_LOW>;
111		};
112		dpad-right-button {
113			label = "DPAD-RIGHT";
114			linux,code = <BTN_DPAD_RIGHT>;
115			gpios = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>;
116		};
117		a-button {
118			label = "A";
119			linux,code = <BTN_EAST>;
120			gpios = <&gpio GPIOX_4 GPIO_ACTIVE_LOW>;
121		};
122		b-button {
123			label = "B";
124			linux,code = <BTN_SOUTH>;
125			gpios = <&gpio GPIOX_5 GPIO_ACTIVE_LOW>;
126		};
127		y-button {
128			label = "Y";
129			linux,code = <BTN_WEST>;
130			gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
131		};
132		x-button {
133			label = "X";
134			linux,code = <BTN_NORTH>;
135			gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
136		};
137		f1-button {
138			label = "F1";
139			linux,code = <BTN_TRIGGER_HAPPY1>;
140			gpios = <&gpio GPIOX_17 GPIO_ACTIVE_LOW>;
141		};
142		f2-button {
143			label = "F2";
144			linux,code = <BTN_TRIGGER_HAPPY2>;
145			gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>;
146		};
147		f3-button {
148			label = "F3";
149			linux,code = <BTN_TRIGGER_HAPPY3>;
150			gpios = <&gpio GPIOX_11 GPIO_ACTIVE_LOW>;
151		};
152		f4-button {
153			label = "F4";
154			linux,code = <BTN_TRIGGER_HAPPY4>;
155			gpios = <&gpio GPIOX_12 GPIO_ACTIVE_LOW>;
156		};
157		f5-button {
158			label = "F5";
159			linux,code = <BTN_TRIGGER_HAPPY5>;
160			gpios = <&gpio GPIOX_13 GPIO_ACTIVE_LOW>;
161		};
162		f6-button {
163			label = "F6";
164			linux,code = <BTN_TRIGGER_HAPPY6>;
165			gpios = <&gpio GPIOX_16 GPIO_ACTIVE_LOW>;
166		};
167		top-left-button {
168			label = "TOP Left";
169			linux,code = <BTN_TL>;
170			gpios = <&gpio GPIOX_14 GPIO_ACTIVE_LOW>;
171		};
172		top-left2-button {
173			label = "TOP Left 2";
174			linux,code = <BTN_TL2>;
175			gpios = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>;
176		};
177		top-right-button {
178			label = "TOP Right";
179			linux,code = <BTN_TR>;
180			gpios = <&gpio GPIOX_15 GPIO_ACTIVE_LOW>;
181		};
182		top-right2-button {
183			label = "TOP Right 2";
184			linux,code = <BTN_TR2>;
185			gpios = <&gpio GPIOX_18 GPIO_ACTIVE_LOW>;
186		};
187	};
188
189	memory@0 {
190		device_type = "memory";
191		reg = <0x0 0x0 0x0 0x40000000>;
192	};
193
194	emmc_pwrseq: emmc-pwrseq {
195		compatible = "mmc-pwrseq-emmc";
196		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
197	};
198
199	leds {
200		compatible = "gpio-leds";
201
202		led-blue {
203			color = <LED_COLOR_ID_BLUE>;
204			gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
205			linux,default-trigger = "heartbeat";
206		};
207	};
208
209	vdd_sys: regulator-vdd-sys {
210		compatible = "regulator-fixed";
211		regulator-name = "VDD_SYS";
212		regulator-min-microvolt = <3800000>;
213		regulator-max-microvolt = <3800000>;
214		regulator-always-on;
215	};
216
217	sound {
218		compatible = "amlogic,axg-sound-card";
219		model = "Odroid GO Ultra";
220		audio-widgets = "Microphone", "Mic Jack",
221				"Headphone", "Headphones",
222				"Speaker", "Internal Speakers";
223		audio-aux-devs = <&tdmout_b>, <&tdmin_b>, <&speaker_amp>;
224		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
225				"TDM_B Playback", "TDMOUT_B OUT",
226				"TDMIN_B IN 1", "TDM_B Capture",
227				"TDMIN_B IN 4", "TDM_B Loopback",
228				"TODDR_A IN 1", "TDMIN_B OUT",
229				"MICL", "Mic Jack",
230				"Headphones", "HPOL",
231				"Headphones", "HPOR",
232				"Speaker Amplifier INL", "HPOL",
233				"Speaker Amplifier INR", "HPOR",
234				"Internal Speakers", "Speaker Amplifier OUTL",
235				"Internal Speakers", "Speaker Amplifier OUTR";
236
237		clocks = <&clkc CLKID_MPLL2>,
238			 <&clkc CLKID_MPLL0>,
239			 <&clkc CLKID_MPLL1>;
240
241		assigned-clocks = <&clkc CLKID_MPLL2>,
242				  <&clkc CLKID_MPLL0>,
243				  <&clkc CLKID_MPLL1>;
244		assigned-clock-parents = <0>, <0>, <0>;
245		assigned-clock-rates = <294912000>,
246				       <270950400>,
247				       <393216000>;
248
249		dai-link-0 {
250			sound-dai = <&frddr_a>;
251		};
252
253		dai-link-1 {
254			sound-dai = <&toddr_a>;
255		};
256
257		dai-link-2 {
258			sound-dai = <&tdmif_b>;
259			dai-format = "i2s";
260			dai-tdm-slot-tx-mask-0 = <1 1>;
261			mclk-fs = <256>;
262
263			codec-0 {
264				sound-dai = <&rk817>;
265			};
266		};
267	};
268
269	speaker_amp: speaker-amplifier {
270		compatible = "simple-audio-amplifier";
271		sound-name-prefix = "Speaker Amplifier";
272		VCC-supply = <&hp_5v>;
273	};
274};
275
276&arb {
277	status = "okay";
278};
279
280&cpu0 {
281	cpu-supply = <&vddcpu_b>;
282	operating-points-v2 = <&cpu_opp_table_0>;
283	clocks = <&clkc CLKID_CPU_CLK>;
284};
285
286&cpu1 {
287	cpu-supply = <&vddcpu_b>;
288	operating-points-v2 = <&cpu_opp_table_0>;
289	clocks = <&clkc CLKID_CPU_CLK>;
290};
291
292&cpu100 {
293	cpu-supply = <&vddcpu_a>;
294	operating-points-v2 = <&cpub_opp_table_1>;
295	clocks = <&clkc CLKID_CPUB_CLK>;
296};
297
298&cpu101 {
299	cpu-supply = <&vddcpu_a>;
300	operating-points-v2 = <&cpub_opp_table_1>;
301	clocks = <&clkc CLKID_CPUB_CLK>;
302};
303
304&cpu102 {
305	cpu-supply = <&vddcpu_a>;
306	operating-points-v2 = <&cpub_opp_table_1>;
307	clocks = <&clkc CLKID_CPUB_CLK>;
308};
309
310&cpu103 {
311	cpu-supply = <&vddcpu_a>;
312	operating-points-v2 = <&cpub_opp_table_1>;
313	clocks = <&clkc CLKID_CPUB_CLK>;
314};
315
316/* RK817 only supports 12.5mV steps, round up the values */
317&cpu_opp_table_0 {
318	opp-1000000000 {
319		opp-microvolt = <737500>;
320	};
321	opp-1200000000 {
322		opp-microvolt = <737500>;
323	};
324	opp-1398000000 {
325		opp-microvolt = <762500>;
326	};
327	opp-1512000000 {
328		opp-microvolt = <800000>;
329	};
330	opp-1608000000 {
331		opp-microvolt = <837500>;
332	};
333	opp-1704000000 {
334		opp-microvolt = <862500>;
335	};
336	opp-1896000000 {
337		opp-microvolt = <987500>;
338	};
339	opp-1992000000 {
340		opp-microvolt = <1012500>;
341	};
342};
343
344/* RK818 only supports 12.5mV steps, round up the values */
345&cpub_opp_table_1 {
346	opp-1000000000 {
347		opp-microvolt = <775000>;
348	};
349	opp-1200000000 {
350		opp-microvolt = <775000>;
351	};
352	opp-1398000000 {
353		opp-microvolt = <800000>;
354	};
355	opp-1512000000 {
356		opp-microvolt = <825000>;
357	};
358	opp-1608000000 {
359		opp-microvolt = <862500>;
360	};
361	opp-1704000000 {
362		opp-microvolt = <900000>;
363	};
364	opp-1800000000 {
365		opp-microvolt = <987500>;
366	};
367	opp-1908000000 {
368		opp-microvolt = <1025000>;
369	};
370};
371
372&i2c_AO {
373	status = "okay";
374	pinctrl-0 = <&i2c_ao_sck_pins>, <&i2c_ao_sda_pins>;
375	pinctrl-names = "default";
376
377	rk818: pmic@1c {
378		compatible = "rockchip,rk818";
379		reg = <0x1c>;
380		interrupt-parent = <&gpio_intc>;
381		interrupts = <IRQID_GPIOAO_7 IRQ_TYPE_LEVEL_LOW>; /* GPIOAO_7 */
382		#clock-cells = <1>;
383
384		vcc1-supply = <&vdd_sys>;
385		vcc2-supply = <&vdd_sys>;
386		vcc3-supply = <&vdd_sys>;
387		vcc4-supply = <&vdd_sys>;
388		vcc6-supply = <&vdd_sys>;
389		vcc7-supply = <&vcc_2v3>;
390		vcc8-supply = <&vcc_2v3>;
391		vcc9-supply = <&vddao_3v3>;
392		boost-supply = <&vdd_sys>;
393
394		regulators {
395			vddcpu_a: DCDC_REG1 {
396				regulator-name = "vddcpu_a";
397				regulator-always-on;
398				regulator-boot-on;
399				regulator-min-microvolt = <775000>;
400				regulator-max-microvolt = <1025000>;
401				regulator-ramp-delay = <6001>;
402				regulator-state-mem {
403					regulator-on-in-suspend;
404					regulator-suspend-microvolt = <775000>;
405				};
406			};
407
408			vdd_ee: DCDC_REG2 {
409				regulator-name = "vdd_ee";
410				regulator-always-on;
411				regulator-boot-on;
412				regulator-min-microvolt = <875000>;
413				regulator-max-microvolt = <1250000>;
414				regulator-ramp-delay = <6001>;
415				regulator-state-mem {
416					regulator-on-in-suspend;
417					regulator-suspend-microvolt = <875000>;
418				};
419			};
420
421			vddq_1v1: DCDC_REG3 {
422				regulator-name = "vddq_1v1";
423				regulator-always-on;
424				regulator-boot-on;
425				regulator-state-mem {
426					regulator-on-in-suspend;
427				};
428			};
429
430			vddao_3v3: DCDC_REG4 {
431				regulator-always-on;
432				regulator-boot-on;
433				regulator-min-microvolt = <3300000>;
434				regulator-max-microvolt = <3300000>;
435				regulator-name = "vddao_3v3";
436				regulator-state-mem {
437					regulator-on-in-suspend;
438					regulator-suspend-microvolt = <3300000>;
439				};
440			};
441
442			hp_5v: DCDC_BOOST {
443				regulator-always-on;
444				regulator-boot-on;
445				regulator-name = "hp_5v";
446				regulator-min-microvolt = <5000000>;
447				regulator-max-microvolt = <5000000>;
448				regulator-state-mem {
449					regulator-off-in-suspend;
450				};
451			};
452
453			vddio_ao1v8: LDO_REG5 {
454				regulator-always-on;
455				regulator-boot-on;
456				regulator-min-microvolt = <1800000>;
457				regulator-max-microvolt = <1800000>;
458				regulator-name = "vddio_ao1v8";
459				regulator-state-mem {
460					regulator-on-in-suspend;
461					regulator-suspend-microvolt = <1800000>;
462				};
463			};
464
465			vddq_1v8: LDO_REG7 {
466				regulator-always-on;
467				regulator-boot-on;
468				regulator-min-microvolt = <1800000>;
469				regulator-max-microvolt = <1800000>;
470				regulator-name = "vddq_1v8";
471				regulator-state-mem {
472					regulator-on-in-suspend;
473					regulator-suspend-microvolt = <1800000>;
474				};
475			};
476
477			vddio_c: LDO_REG9 {
478				regulator-always-on;
479				regulator-boot-on;
480				regulator-min-microvolt = <1800000>;
481				regulator-max-microvolt = <3300000>;
482				regulator-name = "vddio_c";
483				regulator-state-mem {
484					regulator-on-in-suspend;
485					regulator-suspend-microvolt = <3300000>;
486				};
487			};
488
489			vcc_sd: SWITCH_REG {
490				regulator-name = "vcc_sd";
491				regulator-always-on;
492				regulator-boot-on;
493				regulator-min-microvolt = <3300000>;
494				regulator-max-microvolt = <3300000>;
495				regulator-state-mem {
496					regulator-on-in-suspend;
497				};
498			};
499
500			OTG_SWITCH {
501				regulator-name = "otg_switch";
502				regulator-state-mem {
503					regulator-off-in-suspend;
504				};
505			};
506		};
507	};
508};
509
510&i2c3 {
511	status = "okay";
512	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
513	pinctrl-names = "default";
514
515	rk817: pmic@20 {
516		compatible = "rockchip,rk817";
517		reg = <0x20>;
518		interrupt-parent = <&gpio_intc>;
519
520		interrupts = <IRQID_GPIOAO_5 IRQ_TYPE_LEVEL_LOW>; /* GPIOAO_5 */
521
522		vcc1-supply = <&vdd_sys>;
523		vcc2-supply = <&vdd_sys>;
524		vcc3-supply = <&vdd_sys>;
525		vcc4-supply = <&vdd_sys>;
526		vcc5-supply = <&vdd_sys>;
527		vcc6-supply = <&vdd_sys>;
528		vcc7-supply = <&vdd_sys>;
529		vcc8-supply = <&vdd_sys>;
530		vcc9-supply = <&rk817_boost>;
531
532		#sound-dai-cells = <0>;
533		clocks = <&codec_clk>;
534		clock-names = "mclk";
535
536		#clock-cells = <1>;
537
538		regulators {
539			vddcpu_b: DCDC_REG2 {
540				regulator-always-on;
541				regulator-boot-on;
542				regulator-min-microvolt = <737500>;
543				regulator-max-microvolt = <1012500>;
544				regulator-ramp-delay = <6001>;
545				regulator-initial-mode = <0x2>;
546				regulator-name = "vddcpu_b";
547				regulator-state-mem {
548					regulator-on-in-suspend;
549					regulator-suspend-microvolt = <1000000>;
550				};
551			};
552
553			vcc_2v3: DCDC_REG3 {
554				regulator-always-on;
555				regulator-boot-on;
556				regulator-min-microvolt = <2300000>;
557				regulator-max-microvolt = <2400000>;
558				regulator-initial-mode = <0x2>;
559				regulator-name = "vcc_2v3";
560				regulator-state-mem {
561					regulator-on-in-suspend;
562				};
563			};
564
565			LDO_REG4 {
566				regulator-always-on;
567				regulator-boot-on;
568				regulator-min-microvolt = <3300000>;
569				regulator-max-microvolt = <3300000>;
570				regulator-name = "vdd_codec";
571				regulator-state-mem {
572					regulator-off-in-suspend;
573				};
574			};
575
576			vcc_lcd: LDO_REG8 {
577				regulator-min-microvolt = <3300000>;
578				regulator-max-microvolt = <3300000>;
579				regulator-name = "vcc_lcd";
580				regulator-state-mem {
581					regulator-off-in-suspend;
582				};
583			};
584
585			rk817_boost: BOOST {
586				regulator-always-on;
587				regulator-boot-on;
588				regulator-min-microvolt = <5000000>;
589				regulator-max-microvolt = <5400000>;
590				regulator-name = "rk817_boost";
591				regulator-state-mem {
592					regulator-off-in-suspend;
593				};
594			};
595
596			usb_host: OTG_SWITCH {
597				regulator-name = "usb_host";
598				regulator-min-microvolt = <5000000>;
599				regulator-max-microvolt = <5000000>;
600				regulator-state-mem {
601					regulator-off-in-suspend;
602				};
603			};
604		};
605	};
606};
607
608&clkc_audio {
609	status = "okay";
610};
611
612&eth_phy {
613	status = "disabled";
614};
615
616&frddr_a {
617	status = "okay";
618};
619
620&periphs_pinctrl {
621	keypad_gpio_pins: keypad-gpio-state {
622		mux {
623			groups = "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3",
624			         "GPIOX_4", "GPIOX_5", "GPIOX_6", "GPIOX_7",
625				 "GPIOX_8", "GPIOX_9", "GPIOX_10", "GPIOX_11",
626				 "GPIOX_12", "GPIOX_13", "GPIOX_14",  "GPIOX_15",
627				 "GPIOX_16", "GPIOX_17", "GPIOX_18",  "GPIOX_19";
628			function = "gpio_periphs";
629			bias-pull-up;
630			output-disable;
631		};
632	};
633};
634
635&saradc {
636	status = "okay";
637	vref-supply = <&vddio_ao1v8>;
638};
639
640/* SD card */
641&sd_emmc_b {
642	status = "okay";
643	pinctrl-0 = <&sdcard_c_pins>;
644	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
645	pinctrl-names = "default", "clk-gate";
646
647	bus-width = <4>;
648	cap-sd-highspeed;
649	max-frequency = <50000000>;
650	disable-wp;
651
652	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
653	vmmc-supply = <&vcc_sd>;
654	vqmmc-supply = <&vddio_c>;
655
656};
657
658/* eMMC */
659&sd_emmc_c {
660	status = "okay";
661	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
662	pinctrl-1 = <&emmc_clk_gate_pins>;
663	pinctrl-names = "default", "clk-gate";
664
665	bus-width = <8>;
666	cap-mmc-highspeed;
667	mmc-ddr-1_8v;
668	mmc-hs200-1_8v;
669	max-frequency = <200000000>;
670	disable-wp;
671
672	mmc-pwrseq = <&emmc_pwrseq>;
673	vmmc-supply = <&vcc_sd>;
674	vqmmc-supply = <&vddio_ao1v8>;
675};
676
677
678&tdmif_b {
679	pinctrl-0 = <&tdm_b_dout0_pins>, <&tdm_b_fs_pins>, <&tdm_b_sclk_pins>, <&tdm_b_din1_pins>;
680	pinctrl-names = "default";
681	status = "okay";
682
683	assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>,
684			  <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>;
685	assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_SCLK>,
686				 <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
687	assigned-clock-rates = <0>, <0>;
688};
689
690&tdmin_b {
691	status = "okay";
692};
693
694&tdmout_b {
695	status = "okay";
696};
697
698&toddr_a {
699	status = "okay";
700};
701
702&uart_AO {
703	status = "okay";
704	pinctrl-0 = <&uart_ao_a_pins>;
705	pinctrl-names = "default";
706};
707
708&usb {
709	status = "okay";
710	dr_mode = "peripheral";
711};
712
713&usb2_phy0 {
714	status = "okay";
715};
716
717&usb2_phy1 {
718	status = "okay";
719	phy-supply = <&usb_host>;
720};
721