1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
29d59b708SYixun Lan/*
39d59b708SYixun Lan * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
49d59b708SYixun Lan */
59d59b708SYixun Lan
69d59b708SYixun Lan/dts-v1/;
79d59b708SYixun Lan
89d59b708SYixun Lan#include "meson-axg.dtsi"
9aabe5d2dSJerome Brunet#include <dt-bindings/input/input.h>
109d59b708SYixun Lan
119d59b708SYixun Lan/ {
129d59b708SYixun Lan	compatible = "amlogic,s400", "amlogic,a113d", "amlogic,meson-axg";
139d59b708SYixun Lan	model = "Amlogic Meson AXG S400 Development Board";
149d59b708SYixun Lan
15aabe5d2dSJerome Brunet	adc_keys {
16aabe5d2dSJerome Brunet		compatible = "adc-keys";
17aabe5d2dSJerome Brunet		io-channels = <&saradc 0>;
18aabe5d2dSJerome Brunet		io-channel-names = "buttons";
19aabe5d2dSJerome Brunet		keyup-threshold-microvolt = <1800000>;
20aabe5d2dSJerome Brunet
21aabe5d2dSJerome Brunet		button-next {
22aabe5d2dSJerome Brunet			label = "Next";
23aabe5d2dSJerome Brunet			linux,code = <KEY_NEXT>;
24aabe5d2dSJerome Brunet			press-threshold-microvolt = <1116000>; /* 62% */
25aabe5d2dSJerome Brunet		};
26aabe5d2dSJerome Brunet
27aabe5d2dSJerome Brunet		button-prev {
28aabe5d2dSJerome Brunet			label = "Previous";
29aabe5d2dSJerome Brunet			linux,code = <KEY_PREVIOUS>;
30aabe5d2dSJerome Brunet			press-threshold-microvolt = <900000>; /* 50% */
31aabe5d2dSJerome Brunet		};
32aabe5d2dSJerome Brunet
33aabe5d2dSJerome Brunet		button-wifi {
34aabe5d2dSJerome Brunet			label = "Wifi";
35aabe5d2dSJerome Brunet			linux,code = <KEY_WLAN>;
36aabe5d2dSJerome Brunet			press-threshold-microvolt = <684000>; /* 38% */
37aabe5d2dSJerome Brunet		};
38aabe5d2dSJerome Brunet
39aabe5d2dSJerome Brunet		button-up {
40aabe5d2dSJerome Brunet			label = "Volume Up";
41aabe5d2dSJerome Brunet			linux,code = <KEY_VOLUMEUP>;
42aabe5d2dSJerome Brunet			press-threshold-microvolt = <468000>; /* 26% */
43aabe5d2dSJerome Brunet		};
44aabe5d2dSJerome Brunet
45aabe5d2dSJerome Brunet		button-down {
46aabe5d2dSJerome Brunet			label = "Volume Down";
47aabe5d2dSJerome Brunet			linux,code = <KEY_VOLUMEDOWN>;
48aabe5d2dSJerome Brunet			press-threshold-microvolt = <252000>; /* 14% */
49aabe5d2dSJerome Brunet		};
50aabe5d2dSJerome Brunet
51aabe5d2dSJerome Brunet		button-voice {
52aabe5d2dSJerome Brunet			label = "Voice";
53aabe5d2dSJerome Brunet			linux,code = <KEY_VOICECOMMAND>;
54aabe5d2dSJerome Brunet			press-threshold-microvolt = <0>; /* 0% */
55aabe5d2dSJerome Brunet		};
56aabe5d2dSJerome Brunet	};
57aabe5d2dSJerome Brunet
589d59b708SYixun Lan	aliases {
599d59b708SYixun Lan		serial0 = &uart_AO;
603e5925c6SYixun Lan		serial1 = &uart_A;
619d59b708SYixun Lan	};
62221cf34bSNan Li
63fbd5cbc5SJerome Brunet	linein: audio-codec-0 {
648c0cf40fSJerome Brunet		#sound-dai-cells = <0>;
658c0cf40fSJerome Brunet		compatible = "everest,es7241";
668c0cf40fSJerome Brunet		VDDA-supply = <&vcc_3v3>;
678c0cf40fSJerome Brunet		VDDP-supply = <&vcc_3v3>;
688c0cf40fSJerome Brunet		VDDD-supply = <&vcc_3v3>;
698c0cf40fSJerome Brunet		status = "okay";
708c0cf40fSJerome Brunet		sound-name-prefix = "Linein";
718c0cf40fSJerome Brunet	};
728c0cf40fSJerome Brunet
73fbd5cbc5SJerome Brunet	lineout: audio-codec-1 {
748c0cf40fSJerome Brunet		#sound-dai-cells = <0>;
758c0cf40fSJerome Brunet		compatible = "everest,es7154";
768c0cf40fSJerome Brunet		VDD-supply = <&vcc_3v3>;
778c0cf40fSJerome Brunet		PVDD-supply = <&vcc_5v>;
788c0cf40fSJerome Brunet		status = "okay";
798c0cf40fSJerome Brunet		sound-name-prefix = "Lineout";
808c0cf40fSJerome Brunet	};
818c0cf40fSJerome Brunet
82fbd5cbc5SJerome Brunet	spdif_dit: audio-codec-2 {
838c0cf40fSJerome Brunet		#sound-dai-cells = <0>;
848c0cf40fSJerome Brunet		compatible = "linux,spdif-dit";
858c0cf40fSJerome Brunet		status = "okay";
868c0cf40fSJerome Brunet		sound-name-prefix = "DIT";
878c0cf40fSJerome Brunet	};
888c0cf40fSJerome Brunet
89fbd5cbc5SJerome Brunet	dmics: audio-codec-3 {
9063d1e757SJerome Brunet		#sound-dai-cells = <0>;
9163d1e757SJerome Brunet		compatible = "dmic-codec";
9263d1e757SJerome Brunet		num-channels = <7>;
9363d1e757SJerome Brunet		wakeup-delay-ms = <50>;
9463d1e757SJerome Brunet		status = "okay";
9563d1e757SJerome Brunet		sound-name-prefix = "MIC";
9663d1e757SJerome Brunet	};
9763d1e757SJerome Brunet
98e6a55397SJerome Brunet	spdif_dir: audio-codec-4 {
99e6a55397SJerome Brunet		#sound-dai-cells = <0>;
100e6a55397SJerome Brunet		compatible = "linux,spdif-dir";
101e6a55397SJerome Brunet		status = "okay";
102e6a55397SJerome Brunet		sound-name-prefix = "DIR";
103e6a55397SJerome Brunet	};
104e6a55397SJerome Brunet
1058c0cf40fSJerome Brunet	emmc_pwrseq: emmc-pwrseq {
1068c0cf40fSJerome Brunet		compatible = "mmc-pwrseq-emmc";
1078c0cf40fSJerome Brunet		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
1088c0cf40fSJerome Brunet	};
1098c0cf40fSJerome Brunet
1102250e0f5SNeil Armstrong	chosen {
1112250e0f5SNeil Armstrong		stdout-path = "serial0:115200n8";
1122250e0f5SNeil Armstrong	};
1132250e0f5SNeil Armstrong
1142250e0f5SNeil Armstrong	memory@0 {
1152250e0f5SNeil Armstrong		device_type = "memory";
1162250e0f5SNeil Armstrong		reg = <0x0 0x0 0x0 0x40000000>;
1172250e0f5SNeil Armstrong	};
1182250e0f5SNeil Armstrong
119e120289cSJerome Brunet	main_12v: regulator-main_12v {
120e120289cSJerome Brunet		compatible = "regulator-fixed";
121e120289cSJerome Brunet		regulator-name = "12V";
122e120289cSJerome Brunet		regulator-min-microvolt = <12000000>;
123e120289cSJerome Brunet		regulator-max-microvolt = <12000000>;
1249f2619d5SJerome Brunet		regulator-always-on;
125e120289cSJerome Brunet	};
126e120289cSJerome Brunet
127221cf34bSNan Li	vcc_3v3: regulator-vcc_3v3 {
128221cf34bSNan Li		compatible = "regulator-fixed";
129221cf34bSNan Li		regulator-name = "VCC_3V3";
130221cf34bSNan Li		regulator-min-microvolt = <3300000>;
131221cf34bSNan Li		regulator-max-microvolt = <3300000>;
1329f2619d5SJerome Brunet		vin-supply = <&vddao_3v3>;
1339f2619d5SJerome Brunet		regulator-always-on;
134221cf34bSNan Li	};
135221cf34bSNan Li
136ff36932eSJerome Brunet	vcc_5v: regulator-vcc_5v {
137ff36932eSJerome Brunet		compatible = "regulator-fixed";
138ff36932eSJerome Brunet		regulator-name = "VCC5V";
139ff36932eSJerome Brunet		regulator-min-microvolt = <5000000>;
140ff36932eSJerome Brunet		regulator-max-microvolt = <5000000>;
141ff36932eSJerome Brunet		vin-supply = <&main_12v>;
142ff36932eSJerome Brunet
143ff36932eSJerome Brunet		gpio = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
144ff36932eSJerome Brunet		enable-active-high;
145ff36932eSJerome Brunet	};
146ff36932eSJerome Brunet
1478c0cf40fSJerome Brunet	vddao_3v3: regulator-vddao_3v3 {
1488c0cf40fSJerome Brunet		compatible = "regulator-fixed";
1498c0cf40fSJerome Brunet		regulator-name = "VDDAO_3V3";
1508c0cf40fSJerome Brunet		regulator-min-microvolt = <3300000>;
1518c0cf40fSJerome Brunet		regulator-max-microvolt = <3300000>;
1528c0cf40fSJerome Brunet		vin-supply = <&main_12v>;
1538c0cf40fSJerome Brunet		regulator-always-on;
1548c0cf40fSJerome Brunet	};
1558c0cf40fSJerome Brunet
1568c0cf40fSJerome Brunet	vddio_ao18: regulator-vddio_ao18 {
1578c0cf40fSJerome Brunet		compatible = "regulator-fixed";
1588c0cf40fSJerome Brunet		regulator-name = "VDDIO_AO18";
1598c0cf40fSJerome Brunet		regulator-min-microvolt = <1800000>;
1608c0cf40fSJerome Brunet		regulator-max-microvolt = <1800000>;
1618c0cf40fSJerome Brunet		vin-supply = <&vddao_3v3>;
1628c0cf40fSJerome Brunet		regulator-always-on;
1638c0cf40fSJerome Brunet	};
1648c0cf40fSJerome Brunet
1658c0cf40fSJerome Brunet	vddio_boot: regulator-vddio_boot {
1668c0cf40fSJerome Brunet		compatible = "regulator-fixed";
1678c0cf40fSJerome Brunet		regulator-name = "VDDIO_BOOT";
1688c0cf40fSJerome Brunet		regulator-min-microvolt = <1800000>;
1698c0cf40fSJerome Brunet		regulator-max-microvolt = <1800000>;
1708c0cf40fSJerome Brunet		vin-supply = <&vddao_3v3>;
1718c0cf40fSJerome Brunet		regulator-always-on;
1728c0cf40fSJerome Brunet	};
1738c0cf40fSJerome Brunet
174fd1a3b7eSJerome Brunet	usb_pwr: regulator-usb_pwr {
175fd1a3b7eSJerome Brunet		compatible = "regulator-fixed";
176fd1a3b7eSJerome Brunet		regulator-name = "USB_PWR";
177fd1a3b7eSJerome Brunet		regulator-min-microvolt = <5000000>;
178fd1a3b7eSJerome Brunet		regulator-max-microvolt = <5000000>;
179fd1a3b7eSJerome Brunet		vin-supply = <&vcc_5v>;
180fd1a3b7eSJerome Brunet
181fd1a3b7eSJerome Brunet		gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
182fd1a3b7eSJerome Brunet		enable-active-high;
183221cf34bSNan Li	};
184221cf34bSNan Li
1855a8a2ed6SYixun Lan	sdio_pwrseq: sdio-pwrseq {
1865a8a2ed6SYixun Lan		compatible = "mmc-pwrseq-simple";
1875a8a2ed6SYixun Lan		reset-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
1885a8a2ed6SYixun Lan		clocks = <&wifi32k>;
1895a8a2ed6SYixun Lan		clock-names = "ext_clock";
1905a8a2ed6SYixun Lan	};
1915a8a2ed6SYixun Lan
1926279f666SJerome Brunet	speaker-leds {
1936279f666SJerome Brunet		compatible = "gpio-leds";
1946279f666SJerome Brunet
1956279f666SJerome Brunet		aled1 {
1966279f666SJerome Brunet			label = "speaker:aled1";
1976279f666SJerome Brunet			gpios = <&gpio_speaker 7 0>;
1986279f666SJerome Brunet		};
1996279f666SJerome Brunet
2006279f666SJerome Brunet		aled2 {
2016279f666SJerome Brunet			label = "speaker:aled2";
2026279f666SJerome Brunet			gpios = <&gpio_speaker 6 0>;
2036279f666SJerome Brunet		};
2046279f666SJerome Brunet
2056279f666SJerome Brunet		aled3 {
2066279f666SJerome Brunet			label = "speaker:aled3";
2076279f666SJerome Brunet			gpios = <&gpio_speaker 5 0>;
2086279f666SJerome Brunet		};
2096279f666SJerome Brunet
2106279f666SJerome Brunet		aled4 {
2116279f666SJerome Brunet			label = "speaker:aled4";
2126279f666SJerome Brunet			gpios = <&gpio_speaker 4 0>;
2136279f666SJerome Brunet		};
2146279f666SJerome Brunet
2156279f666SJerome Brunet		aled5 {
2166279f666SJerome Brunet			label = "speaker:aled5";
2176279f666SJerome Brunet			gpios = <&gpio_speaker 3 0>;
2186279f666SJerome Brunet		};
2196279f666SJerome Brunet
2206279f666SJerome Brunet		aled6 {
2216279f666SJerome Brunet			label = "speaker:aled6";
2226279f666SJerome Brunet			gpios = <&gpio_speaker 2 0>;
2236279f666SJerome Brunet		};
2246279f666SJerome Brunet	};
225cfc34f04SJerome Brunet
2266f59dc1aSJerome Brunet	sound {
2276f59dc1aSJerome Brunet		compatible = "amlogic,axg-sound-card";
2286f59dc1aSJerome Brunet		model = "AXG-S400";
2296f59dc1aSJerome Brunet		audio-aux-devs = <&tdmin_a>, <&tdmin_b>,  <&tdmin_c>,
2306f59dc1aSJerome Brunet				 <&tdmin_lb>, <&tdmout_c>;
2316f59dc1aSJerome Brunet		audio-widgets = "Line", "Lineout",
2326f59dc1aSJerome Brunet				"Line", "Linein",
2336f59dc1aSJerome Brunet				"Speaker", "Speaker1 Left",
2346f59dc1aSJerome Brunet				"Speaker", "Speaker1 Right";
2356f59dc1aSJerome Brunet		audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
2366f59dc1aSJerome Brunet				"SPDIFOUT IN 0", "FRDDR_A OUT 3",
2376f59dc1aSJerome Brunet				"TDMOUT_C IN 1", "FRDDR_B OUT 2",
2386f59dc1aSJerome Brunet				"SPDIFOUT IN 1", "FRDDR_B OUT 3",
2396f59dc1aSJerome Brunet				"TDMOUT_C IN 2", "FRDDR_C OUT 2",
2406f59dc1aSJerome Brunet				"SPDIFOUT IN 2", "FRDDR_C OUT 3",
2416f59dc1aSJerome Brunet				"TDM_C Playback", "TDMOUT_C OUT",
2426f59dc1aSJerome Brunet				"TDMIN_A IN 2", "TDM_C Capture",
2436f59dc1aSJerome Brunet				"TDMIN_A IN 5", "TDM_C Loopback",
2446f59dc1aSJerome Brunet				"TDMIN_B IN 2", "TDM_C Capture",
2456f59dc1aSJerome Brunet				"TDMIN_B IN 5", "TDM_C Loopback",
2466f59dc1aSJerome Brunet				"TDMIN_C IN 2", "TDM_C Capture",
2476f59dc1aSJerome Brunet				"TDMIN_C IN 5", "TDM_C Loopback",
2486f59dc1aSJerome Brunet				"TDMIN_LB IN 2", "TDM_C Loopback",
2496f59dc1aSJerome Brunet				"TDMIN_LB IN 5", "TDM_C Capture",
2506f59dc1aSJerome Brunet				"TODDR_A IN 0", "TDMIN_A OUT",
2516f59dc1aSJerome Brunet				"TODDR_B IN 0", "TDMIN_A OUT",
2526f59dc1aSJerome Brunet				"TODDR_C IN 0", "TDMIN_A OUT",
2536f59dc1aSJerome Brunet				"TODDR_A IN 1", "TDMIN_B OUT",
2546f59dc1aSJerome Brunet				"TODDR_B IN 1", "TDMIN_B OUT",
2556f59dc1aSJerome Brunet				"TODDR_C IN 1", "TDMIN_B OUT",
2566f59dc1aSJerome Brunet				"TODDR_A IN 2", "TDMIN_C OUT",
2576f59dc1aSJerome Brunet				"TODDR_B IN 2", "TDMIN_C OUT",
2586f59dc1aSJerome Brunet				"TODDR_C IN 2", "TDMIN_C OUT",
25999e322ccSJerome Brunet				"TODDR_A IN 3", "SPDIFIN Capture",
26099e322ccSJerome Brunet				"TODDR_B IN 3", "SPDIFIN Capture",
26199e322ccSJerome Brunet				"TODDR_C IN 3", "SPDIFIN Capture",
262d85163c7SJerome Brunet				"TODDR_A IN 4", "PDM Capture",
263d85163c7SJerome Brunet				"TODDR_B IN 4", "PDM Capture",
264d85163c7SJerome Brunet				"TODDR_C IN 4", "PDM Capture",
2656f59dc1aSJerome Brunet				"TODDR_A IN 6", "TDMIN_LB OUT",
2666f59dc1aSJerome Brunet				"TODDR_B IN 6", "TDMIN_LB OUT",
2676f59dc1aSJerome Brunet				"TODDR_C IN 6", "TDMIN_LB OUT",
2686f59dc1aSJerome Brunet				"Lineout", "Lineout AOUTL",
2696f59dc1aSJerome Brunet				"Lineout", "Lineout AOUTR",
2706f59dc1aSJerome Brunet				"Speaker1 Left", "SPK1 OUT_A",
2716f59dc1aSJerome Brunet				"Speaker1 Left", "SPK1 OUT_B",
2726f59dc1aSJerome Brunet				"Speaker1 Right", "SPK1 OUT_C",
2736f59dc1aSJerome Brunet				"Speaker1 Right", "SPK1 OUT_D",
2746f59dc1aSJerome Brunet				"Linein AINL", "Linein",
2756f59dc1aSJerome Brunet				"Linein AINR", "Linein";
2766f59dc1aSJerome Brunet		assigned-clocks = <&clkc CLKID_HIFI_PLL>,
2776f59dc1aSJerome Brunet				  <&clkc CLKID_MPLL0>,
2786f59dc1aSJerome Brunet				  <&clkc CLKID_MPLL1>;
2796f59dc1aSJerome Brunet		assigned-clock-parents = <0>, <0>, <0>;
2806f59dc1aSJerome Brunet		assigned-clock-rates = <589824000>,
2816f59dc1aSJerome Brunet				       <270950400>,
2826f59dc1aSJerome Brunet				       <393216000>;
2836f59dc1aSJerome Brunet
284fbd5cbc5SJerome Brunet		dai-link-0 {
2856f59dc1aSJerome Brunet			sound-dai = <&frddr_a>;
2866f59dc1aSJerome Brunet		};
2876f59dc1aSJerome Brunet
288fbd5cbc5SJerome Brunet		dai-link-1 {
2896f59dc1aSJerome Brunet			sound-dai = <&frddr_b>;
2906f59dc1aSJerome Brunet		};
2916f59dc1aSJerome Brunet
292fbd5cbc5SJerome Brunet		dai-link-2 {
2936f59dc1aSJerome Brunet			sound-dai = <&frddr_c>;
2946f59dc1aSJerome Brunet		};
2956f59dc1aSJerome Brunet
296fbd5cbc5SJerome Brunet		dai-link-3 {
2976f59dc1aSJerome Brunet			sound-dai = <&toddr_a>;
2986f59dc1aSJerome Brunet		};
2996f59dc1aSJerome Brunet
300fbd5cbc5SJerome Brunet		dai-link-4 {
3016f59dc1aSJerome Brunet			sound-dai = <&toddr_b>;
3026f59dc1aSJerome Brunet		};
3036f59dc1aSJerome Brunet
304fbd5cbc5SJerome Brunet		dai-link-5 {
3056f59dc1aSJerome Brunet			sound-dai = <&toddr_c>;
3066f59dc1aSJerome Brunet		};
3076f59dc1aSJerome Brunet
308fbd5cbc5SJerome Brunet		dai-link-6 {
3096f59dc1aSJerome Brunet			sound-dai = <&tdmif_c>;
3106f59dc1aSJerome Brunet			dai-format = "i2s";
3116f59dc1aSJerome Brunet			dai-tdm-slot-tx-mask-2 = <1 1>;
3126f59dc1aSJerome Brunet			dai-tdm-slot-rx-mask-1 = <1 1>;
3136f59dc1aSJerome Brunet			mclk-fs = <256>;
3146f59dc1aSJerome Brunet
31543004923SJerome Brunet			codec-0 {
3166f59dc1aSJerome Brunet				sound-dai = <&lineout>;
3176f59dc1aSJerome Brunet			};
3186f59dc1aSJerome Brunet
31943004923SJerome Brunet			codec-1 {
3206f59dc1aSJerome Brunet				sound-dai = <&speaker_amp1>;
3216f59dc1aSJerome Brunet			};
3226f59dc1aSJerome Brunet
32343004923SJerome Brunet			codec-2 {
3246f59dc1aSJerome Brunet				sound-dai = <&linein>;
3256f59dc1aSJerome Brunet			};
3266f59dc1aSJerome Brunet
3276f59dc1aSJerome Brunet		};
3286f59dc1aSJerome Brunet
329fbd5cbc5SJerome Brunet		dai-link-7 {
3306f59dc1aSJerome Brunet			sound-dai = <&spdifout>;
3316f59dc1aSJerome Brunet
3326f59dc1aSJerome Brunet			codec {
3336f59dc1aSJerome Brunet				sound-dai = <&spdif_dit>;
3346f59dc1aSJerome Brunet			};
3356f59dc1aSJerome Brunet		};
336d85163c7SJerome Brunet
337fbd5cbc5SJerome Brunet		dai-link-8 {
33899e322ccSJerome Brunet			sound-dai = <&spdifin>;
33999e322ccSJerome Brunet
34099e322ccSJerome Brunet			codec {
34199e322ccSJerome Brunet				sound-dai = <&spdif_dir>;
34299e322ccSJerome Brunet			};
34399e322ccSJerome Brunet		};
34499e322ccSJerome Brunet
34599e322ccSJerome Brunet		dai-link-9 {
346d85163c7SJerome Brunet			sound-dai = <&pdm>;
347d85163c7SJerome Brunet
348d85163c7SJerome Brunet			codec {
349d85163c7SJerome Brunet				sound-dai = <&dmics>;
350d85163c7SJerome Brunet			};
351d85163c7SJerome Brunet		};
3526f59dc1aSJerome Brunet	};
3538c0cf40fSJerome Brunet
3548c0cf40fSJerome Brunet	wifi32k: wifi32k {
3558c0cf40fSJerome Brunet		compatible = "pwm-clock";
3568c0cf40fSJerome Brunet		#clock-cells = <0>;
3578c0cf40fSJerome Brunet		clock-frequency = <32768>;
3588c0cf40fSJerome Brunet		pwms = <&pwm_ab 0 30518 0>; /* PWM_A at 32.768KHz */
3598c0cf40fSJerome Brunet	};
3609d59b708SYixun Lan};
3619d59b708SYixun Lan
362f6f6ac91SYixun Lan&ethmac {
363f6f6ac91SYixun Lan	status = "okay";
364f6f6ac91SYixun Lan	pinctrl-0 = <&eth_rgmii_y_pins>;
365f6f6ac91SYixun Lan	pinctrl-names = "default";
3666d28d577SJerome Brunet	phy-handle = <&eth_phy0>;
3676d28d577SJerome Brunet	phy-mode = "rgmii";
3686d28d577SJerome Brunet
3696d28d577SJerome Brunet	mdio {
3706d28d577SJerome Brunet		compatible = "snps,dwmac-mdio";
3716d28d577SJerome Brunet		#address-cells = <1>;
3726d28d577SJerome Brunet		#size-cells = <0>;
3736d28d577SJerome Brunet
3746d28d577SJerome Brunet		eth_phy0: ethernet-phy@0 {
3756d28d577SJerome Brunet			/* Realtek RTL8211F (0x001cc916) */
3766d28d577SJerome Brunet			reg = <0>;
377de7c2fa5SCarlo Caione			interrupt-parent = <&gpio_intc>;
378de7c2fa5SCarlo Caione			interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
3796d28d577SJerome Brunet			eee-broken-1000t;
3806d28d577SJerome Brunet		};
3816d28d577SJerome Brunet	};
382f6f6ac91SYixun Lan};
383f6f6ac91SYixun Lan
384a0ef1c1cSJerome Brunet&frddr_a {
385a0ef1c1cSJerome Brunet	status = "okay";
386a0ef1c1cSJerome Brunet};
387a0ef1c1cSJerome Brunet
388a0ef1c1cSJerome Brunet&frddr_b {
389a0ef1c1cSJerome Brunet	status = "okay";
390a0ef1c1cSJerome Brunet};
391a0ef1c1cSJerome Brunet
392a0ef1c1cSJerome Brunet&frddr_c {
393a0ef1c1cSJerome Brunet	status = "okay";
394a0ef1c1cSJerome Brunet};
395a0ef1c1cSJerome Brunet
3967bd46a79SYixun Lan&ir {
3977bd46a79SYixun Lan	status = "okay";
3987bd46a79SYixun Lan	pinctrl-0 = <&remote_input_ao_pins>;
3997bd46a79SYixun Lan	pinctrl-names = "default";
4007bd46a79SYixun Lan};
4017d6d8a20SJian Hu
4027d6d8a20SJian Hu&i2c1 {
4037d6d8a20SJian Hu	status = "okay";
4047d6d8a20SJian Hu	pinctrl-0 = <&i2c1_z_pins>;
4057d6d8a20SJian Hu	pinctrl-names = "default";
406a90193b9SJerome Brunet
407a90193b9SJerome Brunet	speaker_amp1: audio-codec@1b {
408a90193b9SJerome Brunet		compatible = "ti,tas5707";
409a90193b9SJerome Brunet		reg = <0x1b>;
410a90193b9SJerome Brunet		reset-gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>;
411a90193b9SJerome Brunet		#sound-dai-cells = <0>;
412a90193b9SJerome Brunet		AVDD-supply = <&vcc_3v3>;
413a90193b9SJerome Brunet		DVDD-supply = <&vcc_3v3>;
414a90193b9SJerome Brunet		PVDD_A-supply = <&main_12v>;
415a90193b9SJerome Brunet		PVDD_B-supply = <&main_12v>;
416a90193b9SJerome Brunet		PVDD_C-supply = <&main_12v>;
417a90193b9SJerome Brunet		PVDD_D-supply = <&main_12v>;
4186f59dc1aSJerome Brunet		sound-name-prefix = "SPK1";
419a90193b9SJerome Brunet	};
4207d6d8a20SJian Hu};
421221cf34bSNan Li
422ffe2f2a4SJerome Brunet&i2c_AO {
423ffe2f2a4SJerome Brunet	status = "okay";
424ffe2f2a4SJerome Brunet	pinctrl-0 = <&i2c_ao_sck_10_pins>, <&i2c_ao_sda_11_pins>;
425ffe2f2a4SJerome Brunet	pinctrl-names = "default";
4266279f666SJerome Brunet
4276279f666SJerome Brunet	gpio_speaker: gpio-controller@1f {
4286279f666SJerome Brunet		compatible = "nxp,pca9557";
4296279f666SJerome Brunet		reg = <0x1f>;
4306279f666SJerome Brunet		gpio-controller;
4316279f666SJerome Brunet		#gpio-cells = <2>;
4326279f666SJerome Brunet		vcc-supply = <&vddao_3v3>;
4336279f666SJerome Brunet	};
434ffe2f2a4SJerome Brunet};
435ffe2f2a4SJerome Brunet
436d85163c7SJerome Brunet&pdm {
437d85163c7SJerome Brunet	pinctrl-0 = <&pdm_dclk_a14_pins>, <&pdm_din0_pins>,
438d85163c7SJerome Brunet		    <&pdm_din1_pins>, <&pdm_din2_pins>, <&pdm_din3_pins>;
439d85163c7SJerome Brunet	pinctrl-names = "default";
440d85163c7SJerome Brunet	status = "okay";
441d85163c7SJerome Brunet};
442d85163c7SJerome Brunet
443*9715b01dSNeil Armstrong&pcieA {
444*9715b01dSNeil Armstrong	reset-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>;
445*9715b01dSNeil Armstrong	status = "okay";
446*9715b01dSNeil Armstrong};
447*9715b01dSNeil Armstrong
448*9715b01dSNeil Armstrong&pcieB {
449*9715b01dSNeil Armstrong	reset-gpios = <&gpio GPIOZ_10 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
450*9715b01dSNeil Armstrong	status = "okay";
451*9715b01dSNeil Armstrong};
452*9715b01dSNeil Armstrong
4535a8a2ed6SYixun Lan&pwm_ab {
4545a8a2ed6SYixun Lan	status = "okay";
4555a8a2ed6SYixun Lan	pinctrl-0 = <&pwm_a_x20_pins>;
4565a8a2ed6SYixun Lan	pinctrl-names = "default";
4575a8a2ed6SYixun Lan};
4585a8a2ed6SYixun Lan
4598c0cf40fSJerome Brunet&saradc {
460221cf34bSNan Li	status = "okay";
4618c0cf40fSJerome Brunet	vref-supply = <&vddio_ao18>;
462221cf34bSNan Li};
4635a8a2ed6SYixun Lan
4645a8a2ed6SYixun Lan/* wifi module */
4655a8a2ed6SYixun Lan&sd_emmc_b {
4665a8a2ed6SYixun Lan	status = "okay";
4675a8a2ed6SYixun Lan	#address-cells = <1>;
4685a8a2ed6SYixun Lan	#size-cells = <0>;
4695a8a2ed6SYixun Lan
4705a8a2ed6SYixun Lan	pinctrl-0 = <&sdio_pins>;
4715a8a2ed6SYixun Lan	pinctrl-1 = <&sdio_clk_gate_pins>;
4725a8a2ed6SYixun Lan	pinctrl-names = "default", "clk-gate";
4735a8a2ed6SYixun Lan
4745a8a2ed6SYixun Lan	bus-width = <4>;
4755a8a2ed6SYixun Lan	cap-sd-highspeed;
4765ca872c5SJerome Brunet	sd-uhs-sdr104;
4775ca872c5SJerome Brunet	max-frequency = <200000000>;
4785a8a2ed6SYixun Lan	non-removable;
4795a8a2ed6SYixun Lan	disable-wp;
4805a8a2ed6SYixun Lan
4815a8a2ed6SYixun Lan	mmc-pwrseq = <&sdio_pwrseq>;
4825a8a2ed6SYixun Lan
4835a8a2ed6SYixun Lan	vmmc-supply = <&vddao_3v3>;
4845a8a2ed6SYixun Lan	vqmmc-supply = <&vddio_boot>;
4855a8a2ed6SYixun Lan
4865a8a2ed6SYixun Lan	brcmf: wifi@1 {
4875a8a2ed6SYixun Lan		reg = <1>;
4885a8a2ed6SYixun Lan		compatible = "brcm,bcm4329-fmac";
4895a8a2ed6SYixun Lan	};
4905a8a2ed6SYixun Lan};
491a51b74eaSXingyu Chen
4928c0cf40fSJerome Brunet/* emmc storage */
4938c0cf40fSJerome Brunet&sd_emmc_c {
494b43033b1SJerome Brunet	status = "okay";
495b43033b1SJerome Brunet	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
4968c0cf40fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
4978c0cf40fSJerome Brunet	pinctrl-names = "default", "clk-gate";
4988c0cf40fSJerome Brunet
4998c0cf40fSJerome Brunet	bus-width = <8>;
5008c0cf40fSJerome Brunet	cap-mmc-highspeed;
501ec01fb69SJerome Brunet	max-frequency = <200000000>;
5028c0cf40fSJerome Brunet	non-removable;
5038c0cf40fSJerome Brunet	disable-wp;
5048c0cf40fSJerome Brunet	mmc-ddr-1_8v;
5058c0cf40fSJerome Brunet	mmc-hs200-1_8v;
5068c0cf40fSJerome Brunet
507087e9a46SJerome Brunet	mmc-pwrseq = <&emmc_pwrseq>;
508087e9a46SJerome Brunet
5098c0cf40fSJerome Brunet	vmmc-supply = <&vcc_3v3>;
5108c0cf40fSJerome Brunet	vqmmc-supply = <&vddio_boot>;
511a51b74eaSXingyu Chen};
512a0ef1c1cSJerome Brunet
51399e322ccSJerome Brunet&spdifin {
51499e322ccSJerome Brunet	pinctrl-0 = <&spdif_in_a19_pins>;
51599e322ccSJerome Brunet	pinctrl-names = "default";
51699e322ccSJerome Brunet	status = "okay";
51799e322ccSJerome Brunet};
51899e322ccSJerome Brunet
519a0ef1c1cSJerome Brunet&spdifout {
520a0ef1c1cSJerome Brunet	pinctrl-0 = <&spdif_out_a20_pins>;
521a0ef1c1cSJerome Brunet	pinctrl-names = "default";
522a0ef1c1cSJerome Brunet	status = "okay";
523a0ef1c1cSJerome Brunet};
524a0ef1c1cSJerome Brunet
525a0ef1c1cSJerome Brunet&tdmif_a {
526a0ef1c1cSJerome Brunet	pinctrl-0 = <&tdma_sclk_pins>, <&tdma_fs_pins>,
527a0ef1c1cSJerome Brunet		    <&tdma_din0_pins>, <&tdma_dout0_x15_pins>;
528a0ef1c1cSJerome Brunet	pinctrl-names = "default";
529a0ef1c1cSJerome Brunet	status = "okay";
530a0ef1c1cSJerome Brunet};
531a0ef1c1cSJerome Brunet
532a0ef1c1cSJerome Brunet&tdmif_b {
533a0ef1c1cSJerome Brunet	pinctrl-0 = <&tdmb_sclk_pins>, <&tdmb_fs_pins>,
534a0ef1c1cSJerome Brunet		    <&tdmb_din3_pins>, <&mclk_b_pins>;
535a0ef1c1cSJerome Brunet	pinctrl-names = "default";
536a0ef1c1cSJerome Brunet	status = "okay";
537a0ef1c1cSJerome Brunet};
538a0ef1c1cSJerome Brunet
539a0ef1c1cSJerome Brunet&tdmif_c {
540a0ef1c1cSJerome Brunet	pinctrl-0 = <&tdmc_sclk_pins>, <&tdmc_fs_pins>,
541a0ef1c1cSJerome Brunet		    <&tdmc_din1_pins>, <&tdmc_dout2_pins>,
542a0ef1c1cSJerome Brunet		    <&mclk_c_pins>;
543a0ef1c1cSJerome Brunet	pinctrl-names = "default";
544a0ef1c1cSJerome Brunet	status = "okay";
545a0ef1c1cSJerome Brunet};
546a0ef1c1cSJerome Brunet
5478c0cf40fSJerome Brunet&tdmin_a {
5488c0cf40fSJerome Brunet	status = "okay";
5498c0cf40fSJerome Brunet};
5508c0cf40fSJerome Brunet
5518c0cf40fSJerome Brunet&tdmin_b {
5528c0cf40fSJerome Brunet	status = "okay";
5538c0cf40fSJerome Brunet};
5548c0cf40fSJerome Brunet
5558c0cf40fSJerome Brunet&tdmin_c {
5568c0cf40fSJerome Brunet	status = "okay";
5578c0cf40fSJerome Brunet};
5588c0cf40fSJerome Brunet
5598c0cf40fSJerome Brunet&tdmin_lb {
5608c0cf40fSJerome Brunet	status = "okay";
5618c0cf40fSJerome Brunet};
5628c0cf40fSJerome Brunet
5638c0cf40fSJerome Brunet&tdmout_c {
5648c0cf40fSJerome Brunet	status = "okay";
5658c0cf40fSJerome Brunet};
5668c0cf40fSJerome Brunet
567a0ef1c1cSJerome Brunet&toddr_a {
568a0ef1c1cSJerome Brunet	status = "okay";
569a0ef1c1cSJerome Brunet};
570a0ef1c1cSJerome Brunet
571a0ef1c1cSJerome Brunet&toddr_b {
572a0ef1c1cSJerome Brunet	status = "okay";
573a0ef1c1cSJerome Brunet};
574a0ef1c1cSJerome Brunet
575a0ef1c1cSJerome Brunet&toddr_c {
576a0ef1c1cSJerome Brunet	status = "okay";
577a0ef1c1cSJerome Brunet};
5788c0cf40fSJerome Brunet
5798c0cf40fSJerome Brunet&uart_A {
5808c0cf40fSJerome Brunet	status = "okay";
581a708c685SJerome Brunet	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
5828c0cf40fSJerome Brunet	pinctrl-names = "default";
583a708c685SJerome Brunet	uart-has-rtscts;
584ac444768SJerome Brunet
585ac444768SJerome Brunet	bluetooth {
586ac444768SJerome Brunet		compatible = "brcm,bcm43438-bt";
587ac444768SJerome Brunet		shutdown-gpios = <&gpio GPIOX_21 GPIO_ACTIVE_HIGH>;
588ac444768SJerome Brunet	};
5898c0cf40fSJerome Brunet};
5908c0cf40fSJerome Brunet
5918c0cf40fSJerome Brunet&uart_AO {
5928c0cf40fSJerome Brunet	status = "okay";
5938c0cf40fSJerome Brunet	pinctrl-0 = <&uart_ao_a_pins>;
5948c0cf40fSJerome Brunet	pinctrl-names = "default";
5958c0cf40fSJerome Brunet};
596f450d2c2SNeil Armstrong
597f450d2c2SNeil Armstrong&usb {
598f450d2c2SNeil Armstrong	status = "okay";
599f450d2c2SNeil Armstrong	dr_mode = "otg";
600f450d2c2SNeil Armstrong	vbus-supply = <&usb_pwr>;
601f450d2c2SNeil Armstrong};
602