1*14e14723SChristian Hewitt// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*14e14723SChristian Hewitt/*
3*14e14723SChristian Hewitt * Copyright (c) 2019 BayLibre, SAS
4*14e14723SChristian Hewitt * Author: Neil Armstrong <narmstrong@baylibre.com>
5*14e14723SChristian Hewitt * Copyright (c) 2023 Christian Hewitt <christianshewitt@gmail.com>
6*14e14723SChristian Hewitt */
7*14e14723SChristian Hewitt
8*14e14723SChristian Hewitt#include <dt-bindings/input/input.h>
9*14e14723SChristian Hewitt#include <dt-bindings/leds/common.h>
10*14e14723SChristian Hewitt#include <dt-bindings/gpio/meson-g12a-gpio.h>
11*14e14723SChristian Hewitt#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
12*14e14723SChristian Hewitt
13*14e14723SChristian Hewitt/ {
14*14e14723SChristian Hewitt	aliases {
15*14e14723SChristian Hewitt		serial0 = &uart_AO;
16*14e14723SChristian Hewitt		ethernet0 = &ethmac;
17*14e14723SChristian Hewitt		rtc1 = &vrtc;
18*14e14723SChristian Hewitt	};
19*14e14723SChristian Hewitt
20*14e14723SChristian Hewitt	chosen {
21*14e14723SChristian Hewitt		stdout-path = "serial0:115200n8";
22*14e14723SChristian Hewitt	};
23*14e14723SChristian Hewitt
24*14e14723SChristian Hewitt	memory@0 {
25*14e14723SChristian Hewitt		device_type = "memory";
26*14e14723SChristian Hewitt		reg = <0x0 0x0 0x0 0x80000000>; /* 2 GiB or 4 GiB */
27*14e14723SChristian Hewitt	};
28*14e14723SChristian Hewitt
29*14e14723SChristian Hewitt	adc-keys {
30*14e14723SChristian Hewitt		compatible = "adc-keys";
31*14e14723SChristian Hewitt		io-channels = <&saradc 2>;
32*14e14723SChristian Hewitt		io-channel-names = "buttons";
33*14e14723SChristian Hewitt		keyup-threshold-microvolt = <1710000>;
34*14e14723SChristian Hewitt
35*14e14723SChristian Hewitt		button-function {
36*14e14723SChristian Hewitt			label = "RST";
37*14e14723SChristian Hewitt			linux,code = <KEY_POWER>;
38*14e14723SChristian Hewitt			press-threshold-microvolt = <10000>;
39*14e14723SChristian Hewitt		};
40*14e14723SChristian Hewitt	};
41*14e14723SChristian Hewitt
42*14e14723SChristian Hewitt	emmc_pwrseq: emmc-pwrseq {
43*14e14723SChristian Hewitt		compatible = "mmc-pwrseq-emmc";
44*14e14723SChristian Hewitt		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
45*14e14723SChristian Hewitt	};
46*14e14723SChristian Hewitt
47*14e14723SChristian Hewitt	fan0: pwm-fan {
48*14e14723SChristian Hewitt		compatible = "pwm-fan";
49*14e14723SChristian Hewitt		#cooling-cells = <2>;
50*14e14723SChristian Hewitt		cooling-min-state = <0>;
51*14e14723SChristian Hewitt		cooling-max-state = <3>;
52*14e14723SChristian Hewitt		cooling-levels = <0 120 170 220>;
53*14e14723SChristian Hewitt		pwms = <&pwm_cd 1 40000 0>;
54*14e14723SChristian Hewitt	};
55*14e14723SChristian Hewitt
56*14e14723SChristian Hewitt	hdmi-connector {
57*14e14723SChristian Hewitt		compatible = "hdmi-connector";
58*14e14723SChristian Hewitt		type = "a";
59*14e14723SChristian Hewitt
60*14e14723SChristian Hewitt		port {
61*14e14723SChristian Hewitt			hdmi_connector_in: endpoint {
62*14e14723SChristian Hewitt				remote-endpoint = <&hdmi_tx_tmds_out>;
63*14e14723SChristian Hewitt			};
64*14e14723SChristian Hewitt		};
65*14e14723SChristian Hewitt	};
66*14e14723SChristian Hewitt
67*14e14723SChristian Hewitt	leds {
68*14e14723SChristian Hewitt		compatible = "gpio-leds";
69*14e14723SChristian Hewitt
70*14e14723SChristian Hewitt		led-0 {
71*14e14723SChristian Hewitt			color = <LED_COLOR_ID_BLUE>;
72*14e14723SChristian Hewitt			function = LED_FUNCTION_STATUS;
73*14e14723SChristian Hewitt			gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_LOW>;
74*14e14723SChristian Hewitt			linux,default-trigger = "heartbeat";
75*14e14723SChristian Hewitt		};
76*14e14723SChristian Hewitt
77*14e14723SChristian Hewitt		led-1 {
78*14e14723SChristian Hewitt			color = <LED_COLOR_ID_GREEN>;
79*14e14723SChristian Hewitt			function = LED_FUNCTION_STATUS;
80*14e14723SChristian Hewitt			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
81*14e14723SChristian Hewitt		};
82*14e14723SChristian Hewitt	};
83*14e14723SChristian Hewitt
84*14e14723SChristian Hewitt	sdio_pwrseq: sdio-pwrseq {
85*14e14723SChristian Hewitt		compatible = "mmc-pwrseq-simple";
86*14e14723SChristian Hewitt		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
87*14e14723SChristian Hewitt		clocks = <&wifi32k>;
88*14e14723SChristian Hewitt		clock-names = "ext_clock";
89*14e14723SChristian Hewitt	};
90*14e14723SChristian Hewitt
91*14e14723SChristian Hewitt	wifi32k: wifi32k {
92*14e14723SChristian Hewitt		compatible = "pwm-clock";
93*14e14723SChristian Hewitt		#clock-cells = <0>;
94*14e14723SChristian Hewitt		clock-frequency = <32768>;
95*14e14723SChristian Hewitt		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
96*14e14723SChristian Hewitt	};
97*14e14723SChristian Hewitt
98*14e14723SChristian Hewitt	dc_in: regulator-dc-in {
99*14e14723SChristian Hewitt		compatible = "regulator-fixed";
100*14e14723SChristian Hewitt		regulator-name = "DC_IN";
101*14e14723SChristian Hewitt		regulator-min-microvolt = <5000000>;
102*14e14723SChristian Hewitt		regulator-max-microvolt = <5000000>;
103*14e14723SChristian Hewitt		regulator-always-on;
104*14e14723SChristian Hewitt	};
105*14e14723SChristian Hewitt
106*14e14723SChristian Hewitt	vcc_5v: regulator-vcc-5v {
107*14e14723SChristian Hewitt		compatible = "regulator-fixed";
108*14e14723SChristian Hewitt		regulator-name = "VCC_5V";
109*14e14723SChristian Hewitt		regulator-min-microvolt = <5000000>;
110*14e14723SChristian Hewitt		regulator-max-microvolt = <5000000>;
111*14e14723SChristian Hewitt		vin-supply = <&dc_in>;
112*14e14723SChristian Hewitt
113*14e14723SChristian Hewitt		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
114*14e14723SChristian Hewitt		enable-active-high;
115*14e14723SChristian Hewitt	};
116*14e14723SChristian Hewitt
117*14e14723SChristian Hewitt	vcc_3v3: regulator-vcc-3v3 {
118*14e14723SChristian Hewitt		compatible = "regulator-fixed";
119*14e14723SChristian Hewitt		regulator-name = "VCC_3V3";
120*14e14723SChristian Hewitt		regulator-min-microvolt = <3300000>;
121*14e14723SChristian Hewitt		regulator-max-microvolt = <3300000>;
122*14e14723SChristian Hewitt		vin-supply = <&vsys_3v3>;
123*14e14723SChristian Hewitt		regulator-always-on;
124*14e14723SChristian Hewitt	};
125*14e14723SChristian Hewitt
126*14e14723SChristian Hewitt	vcc_1v8: regulator-vcc-1v8 {
127*14e14723SChristian Hewitt		compatible = "regulator-fixed";
128*14e14723SChristian Hewitt		regulator-name = "VCC_1V8";
129*14e14723SChristian Hewitt		regulator-min-microvolt = <1800000>;
130*14e14723SChristian Hewitt		regulator-max-microvolt = <1800000>;
131*14e14723SChristian Hewitt		vin-supply = <&vcc_3v3>;
132*14e14723SChristian Hewitt		regulator-always-on;
133*14e14723SChristian Hewitt	};
134*14e14723SChristian Hewitt
135*14e14723SChristian Hewitt	vddao_1v8: regulator-vddao-1v8 {
136*14e14723SChristian Hewitt		compatible = "regulator-fixed";
137*14e14723SChristian Hewitt		regulator-name = "VDDIO_AO1V8";
138*14e14723SChristian Hewitt		regulator-min-microvolt = <1800000>;
139*14e14723SChristian Hewitt		regulator-max-microvolt = <1800000>;
140*14e14723SChristian Hewitt		vin-supply = <&vsys_3v3>;
141*14e14723SChristian Hewitt		regulator-always-on;
142*14e14723SChristian Hewitt	};
143*14e14723SChristian Hewitt
144*14e14723SChristian Hewitt	vddcpu_a: regulator-vddcpu-a {
145*14e14723SChristian Hewitt		compatible = "pwm-regulator";
146*14e14723SChristian Hewitt		regulator-name = "VDDCPU_A";
147*14e14723SChristian Hewitt		regulator-min-microvolt = <690000>;
148*14e14723SChristian Hewitt		regulator-max-microvolt = <1050000>;
149*14e14723SChristian Hewitt		pwm-supply = <&dc_in>;
150*14e14723SChristian Hewitt		pwms = <&pwm_ab 0 1250 0>;
151*14e14723SChristian Hewitt		pwm-dutycycle-range = <100 0>;
152*14e14723SChristian Hewitt		regulator-boot-on;
153*14e14723SChristian Hewitt		regulator-always-on;
154*14e14723SChristian Hewitt	};
155*14e14723SChristian Hewitt
156*14e14723SChristian Hewitt	vddcpu_b: regulator-vddcpu-b {
157*14e14723SChristian Hewitt		compatible = "pwm-regulator";
158*14e14723SChristian Hewitt		regulator-name = "VDDCPU_B";
159*14e14723SChristian Hewitt		regulator-min-microvolt = <690000>;
160*14e14723SChristian Hewitt		regulator-max-microvolt = <1050000>;
161*14e14723SChristian Hewitt		pwm-supply = <&vsys_3v3>;
162*14e14723SChristian Hewitt		pwms = <&pwm_AO_cd 1 1250 0>;
163*14e14723SChristian Hewitt		pwm-dutycycle-range = <100 0>;
164*14e14723SChristian Hewitt		regulator-boot-on;
165*14e14723SChristian Hewitt		regulator-always-on;
166*14e14723SChristian Hewitt	};
167*14e14723SChristian Hewitt
168*14e14723SChristian Hewitt	vsys_3v3: regulator-vsys-3v3 {
169*14e14723SChristian Hewitt		compatible = "regulator-fixed";
170*14e14723SChristian Hewitt		regulator-name = "VSYS_3V3";
171*14e14723SChristian Hewitt		regulator-min-microvolt = <3300000>;
172*14e14723SChristian Hewitt		regulator-max-microvolt = <3300000>;
173*14e14723SChristian Hewitt		vin-supply = <&dc_in>;
174*14e14723SChristian Hewitt		regulator-always-on;
175*14e14723SChristian Hewitt	};
176*14e14723SChristian Hewitt
177*14e14723SChristian Hewitt	emmc_1v8: regulator-emmc-1v8 {
178*14e14723SChristian Hewitt		compatible = "regulator-fixed";
179*14e14723SChristian Hewitt		regulator-name = "EMMC_AO1V8";
180*14e14723SChristian Hewitt		regulator-min-microvolt = <1800000>;
181*14e14723SChristian Hewitt		regulator-max-microvolt = <1800000>;
182*14e14723SChristian Hewitt		vin-supply = <&vcc_3v3>;
183*14e14723SChristian Hewitt		regulator-always-on;
184*14e14723SChristian Hewitt	};
185*14e14723SChristian Hewitt
186*14e14723SChristian Hewitt	usb_pwr: regulator-usb-pwr {
187*14e14723SChristian Hewitt		compatible = "regulator-fixed";
188*14e14723SChristian Hewitt		regulator-name = "USB_PWR";
189*14e14723SChristian Hewitt		regulator-min-microvolt = <5000000>;
190*14e14723SChristian Hewitt		regulator-max-microvolt = <5000000>;
191*14e14723SChristian Hewitt		vin-supply = <&vcc_5v>;
192*14e14723SChristian Hewitt
193*14e14723SChristian Hewitt		gpio = <&gpio GPIOA_6 GPIO_ACTIVE_HIGH>;
194*14e14723SChristian Hewitt		enable-active-high;
195*14e14723SChristian Hewitt	};
196*14e14723SChristian Hewitt
197*14e14723SChristian Hewitt	sound {
198*14e14723SChristian Hewitt		compatible = "amlogic,axg-sound-card";
199*14e14723SChristian Hewitt		model = "BPI-M2S";
200*14e14723SChristian Hewitt		audio-aux-devs = <&tdmout_b>;
201*14e14723SChristian Hewitt		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
202*14e14723SChristian Hewitt				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
203*14e14723SChristian Hewitt				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
204*14e14723SChristian Hewitt				"TDM_B Playback", "TDMOUT_B OUT";
205*14e14723SChristian Hewitt
206*14e14723SChristian Hewitt		assigned-clocks = <&clkc CLKID_MPLL2>,
207*14e14723SChristian Hewitt				  <&clkc CLKID_MPLL0>,
208*14e14723SChristian Hewitt				  <&clkc CLKID_MPLL1>;
209*14e14723SChristian Hewitt		assigned-clock-parents = <0>, <0>, <0>;
210*14e14723SChristian Hewitt		assigned-clock-rates = <294912000>,
211*14e14723SChristian Hewitt				       <270950400>,
212*14e14723SChristian Hewitt				       <393216000>;
213*14e14723SChristian Hewitt
214*14e14723SChristian Hewitt		dai-link-0 {
215*14e14723SChristian Hewitt			sound-dai = <&frddr_a>;
216*14e14723SChristian Hewitt		};
217*14e14723SChristian Hewitt
218*14e14723SChristian Hewitt		dai-link-1 {
219*14e14723SChristian Hewitt			sound-dai = <&frddr_b>;
220*14e14723SChristian Hewitt		};
221*14e14723SChristian Hewitt
222*14e14723SChristian Hewitt		dai-link-2 {
223*14e14723SChristian Hewitt			sound-dai = <&frddr_c>;
224*14e14723SChristian Hewitt		};
225*14e14723SChristian Hewitt
226*14e14723SChristian Hewitt		/* 8ch hdmi interface */
227*14e14723SChristian Hewitt		dai-link-3 {
228*14e14723SChristian Hewitt			sound-dai = <&tdmif_b>;
229*14e14723SChristian Hewitt			dai-format = "i2s";
230*14e14723SChristian Hewitt			dai-tdm-slot-tx-mask-0 = <1 1>;
231*14e14723SChristian Hewitt			dai-tdm-slot-tx-mask-1 = <1 1>;
232*14e14723SChristian Hewitt			dai-tdm-slot-tx-mask-2 = <1 1>;
233*14e14723SChristian Hewitt			dai-tdm-slot-tx-mask-3 = <1 1>;
234*14e14723SChristian Hewitt			mclk-fs = <256>;
235*14e14723SChristian Hewitt
236*14e14723SChristian Hewitt			codec {
237*14e14723SChristian Hewitt				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
238*14e14723SChristian Hewitt			};
239*14e14723SChristian Hewitt		};
240*14e14723SChristian Hewitt
241*14e14723SChristian Hewitt		/* hdmi glue */
242*14e14723SChristian Hewitt		dai-link-4 {
243*14e14723SChristian Hewitt			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
244*14e14723SChristian Hewitt
245*14e14723SChristian Hewitt			codec {
246*14e14723SChristian Hewitt				sound-dai = <&hdmi_tx>;
247*14e14723SChristian Hewitt			};
248*14e14723SChristian Hewitt		};
249*14e14723SChristian Hewitt	};
250*14e14723SChristian Hewitt};
251*14e14723SChristian Hewitt
252*14e14723SChristian Hewitt&arb {
253*14e14723SChristian Hewitt	status = "okay";
254*14e14723SChristian Hewitt};
255*14e14723SChristian Hewitt
256*14e14723SChristian Hewitt&clkc_audio {
257*14e14723SChristian Hewitt	status = "okay";
258*14e14723SChristian Hewitt};
259*14e14723SChristian Hewitt
260*14e14723SChristian Hewitt&cecb_AO {
261*14e14723SChristian Hewitt	pinctrl-0 = <&cec_ao_b_h_pins>;
262*14e14723SChristian Hewitt	pinctrl-names = "default";
263*14e14723SChristian Hewitt	status = "okay";
264*14e14723SChristian Hewitt	hdmi-phandle = <&hdmi_tx>;
265*14e14723SChristian Hewitt};
266*14e14723SChristian Hewitt
267*14e14723SChristian Hewitt&cpu0 {
268*14e14723SChristian Hewitt	cpu-supply = <&vddcpu_b>;
269*14e14723SChristian Hewitt	operating-points-v2 = <&cpu_opp_table_0>;
270*14e14723SChristian Hewitt	clocks = <&clkc CLKID_CPU_CLK>;
271*14e14723SChristian Hewitt	clock-latency = <50000>;
272*14e14723SChristian Hewitt};
273*14e14723SChristian Hewitt
274*14e14723SChristian Hewitt&cpu1 {
275*14e14723SChristian Hewitt	cpu-supply = <&vddcpu_b>;
276*14e14723SChristian Hewitt	operating-points-v2 = <&cpu_opp_table_0>;
277*14e14723SChristian Hewitt	clocks = <&clkc CLKID_CPU_CLK>;
278*14e14723SChristian Hewitt	clock-latency = <50000>;
279*14e14723SChristian Hewitt};
280*14e14723SChristian Hewitt
281*14e14723SChristian Hewitt&cpu100 {
282*14e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
283*14e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
284*14e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
285*14e14723SChristian Hewitt	clock-latency = <50000>;
286*14e14723SChristian Hewitt};
287*14e14723SChristian Hewitt
288*14e14723SChristian Hewitt&cpu101 {
289*14e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
290*14e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
291*14e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
292*14e14723SChristian Hewitt	clock-latency = <50000>;
293*14e14723SChristian Hewitt};
294*14e14723SChristian Hewitt
295*14e14723SChristian Hewitt&cpu102 {
296*14e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
297*14e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
298*14e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
299*14e14723SChristian Hewitt	clock-latency = <50000>;
300*14e14723SChristian Hewitt};
301*14e14723SChristian Hewitt
302*14e14723SChristian Hewitt&cpu103 {
303*14e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
304*14e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
305*14e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
306*14e14723SChristian Hewitt	clock-latency = <50000>;
307*14e14723SChristian Hewitt};
308*14e14723SChristian Hewitt
309*14e14723SChristian Hewitt&ethmac {
310*14e14723SChristian Hewitt	pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
311*14e14723SChristian Hewitt	pinctrl-names = "default";
312*14e14723SChristian Hewitt	status = "okay";
313*14e14723SChristian Hewitt	phy-mode = "rgmii";
314*14e14723SChristian Hewitt	phy-handle = <&external_phy>;
315*14e14723SChristian Hewitt	amlogic,tx-delay-ns = <2>;
316*14e14723SChristian Hewitt};
317*14e14723SChristian Hewitt
318*14e14723SChristian Hewitt&ext_mdio {
319*14e14723SChristian Hewitt	external_phy: ethernet-phy@0 {
320*14e14723SChristian Hewitt		/* Realtek RTL8211F (0x001cc916) */
321*14e14723SChristian Hewitt		reg = <0>;
322*14e14723SChristian Hewitt		max-speed = <1000>;
323*14e14723SChristian Hewitt
324*14e14723SChristian Hewitt		reset-assert-us = <10000>;
325*14e14723SChristian Hewitt		reset-deassert-us = <80000>;
326*14e14723SChristian Hewitt		reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
327*14e14723SChristian Hewitt
328*14e14723SChristian Hewitt		interrupt-parent = <&gpio_intc>;
329*14e14723SChristian Hewitt		/* MAC_INTR on GPIOZ_14 */
330*14e14723SChristian Hewitt		interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
331*14e14723SChristian Hewitt	};
332*14e14723SChristian Hewitt};
333*14e14723SChristian Hewitt
334*14e14723SChristian Hewitt&frddr_a {
335*14e14723SChristian Hewitt	status = "okay";
336*14e14723SChristian Hewitt};
337*14e14723SChristian Hewitt
338*14e14723SChristian Hewitt&frddr_b {
339*14e14723SChristian Hewitt	status = "okay";
340*14e14723SChristian Hewitt};
341*14e14723SChristian Hewitt
342*14e14723SChristian Hewitt&frddr_c {
343*14e14723SChristian Hewitt	status = "okay";
344*14e14723SChristian Hewitt};
345*14e14723SChristian Hewitt
346*14e14723SChristian Hewitt&hdmi_tx {
347*14e14723SChristian Hewitt	status = "okay";
348*14e14723SChristian Hewitt	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
349*14e14723SChristian Hewitt	pinctrl-names = "default";
350*14e14723SChristian Hewitt	hdmi-supply = <&vcc_5v>;
351*14e14723SChristian Hewitt};
352*14e14723SChristian Hewitt
353*14e14723SChristian Hewitt&hdmi_tx_tmds_port {
354*14e14723SChristian Hewitt	hdmi_tx_tmds_out: endpoint {
355*14e14723SChristian Hewitt		remote-endpoint = <&hdmi_connector_in>;
356*14e14723SChristian Hewitt	};
357*14e14723SChristian Hewitt};
358*14e14723SChristian Hewitt
359*14e14723SChristian Hewitt/* Main i2c bus */
360*14e14723SChristian Hewitt&i2c2 {
361*14e14723SChristian Hewitt	status = "okay";
362*14e14723SChristian Hewitt	pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>;
363*14e14723SChristian Hewitt	pinctrl-names = "default";
364*14e14723SChristian Hewitt};
365*14e14723SChristian Hewitt
366*14e14723SChristian Hewitt&pcie {
367*14e14723SChristian Hewitt	status = "okay";
368*14e14723SChristian Hewitt	reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>;
369*14e14723SChristian Hewitt};
370*14e14723SChristian Hewitt
371*14e14723SChristian Hewitt&pwm_ab {
372*14e14723SChristian Hewitt	status = "okay";
373*14e14723SChristian Hewitt	pinctrl-0 = <&pwm_a_e_pins>;
374*14e14723SChristian Hewitt	pinctrl-names = "default";
375*14e14723SChristian Hewitt	clocks = <&xtal>;
376*14e14723SChristian Hewitt	clock-names = "clkin0";
377*14e14723SChristian Hewitt};
378*14e14723SChristian Hewitt
379*14e14723SChristian Hewitt&pwm_cd {
380*14e14723SChristian Hewitt	status = "okay";
381*14e14723SChristian Hewitt	pinctrl-0 = <&pwm_d_x6_pins>;
382*14e14723SChristian Hewitt	pinctrl-names = "default";
383*14e14723SChristian Hewitt	pwm-gpios = <&gpio GPIOAO_10 GPIO_ACTIVE_HIGH>;
384*14e14723SChristian Hewitt};
385*14e14723SChristian Hewitt
386*14e14723SChristian Hewitt&pwm_ef {
387*14e14723SChristian Hewitt	status = "okay";
388*14e14723SChristian Hewitt	pinctrl-0 = <&pwm_e_pins>;
389*14e14723SChristian Hewitt	pinctrl-names = "default";
390*14e14723SChristian Hewitt};
391*14e14723SChristian Hewitt
392*14e14723SChristian Hewitt&pwm_AO_cd {
393*14e14723SChristian Hewitt	pinctrl-0 = <&pwm_ao_d_e_pins>;
394*14e14723SChristian Hewitt	pinctrl-names = "default";
395*14e14723SChristian Hewitt	clocks = <&xtal>;
396*14e14723SChristian Hewitt	clock-names = "clkin1";
397*14e14723SChristian Hewitt	status = "okay";
398*14e14723SChristian Hewitt};
399*14e14723SChristian Hewitt
400*14e14723SChristian Hewitt&saradc {
401*14e14723SChristian Hewitt	status = "okay";
402*14e14723SChristian Hewitt	vref-supply = <&vddao_1v8>;
403*14e14723SChristian Hewitt};
404*14e14723SChristian Hewitt
405*14e14723SChristian Hewitt/* SDIO */
406*14e14723SChristian Hewitt&sd_emmc_a {
407*14e14723SChristian Hewitt	/* enable if WiFi/BT board connected */
408*14e14723SChristian Hewitt	status = "disabled";
409*14e14723SChristian Hewitt	pinctrl-0 = <&sdio_pins>;
410*14e14723SChristian Hewitt	pinctrl-1 = <&sdio_clk_gate_pins>;
411*14e14723SChristian Hewitt	pinctrl-names = "default", "clk-gate";
412*14e14723SChristian Hewitt	#address-cells = <1>;
413*14e14723SChristian Hewitt	#size-cells = <0>;
414*14e14723SChristian Hewitt
415*14e14723SChristian Hewitt	bus-width = <4>;
416*14e14723SChristian Hewitt	sd-uhs-sdr104;
417*14e14723SChristian Hewitt	max-frequency = <50000000>;
418*14e14723SChristian Hewitt
419*14e14723SChristian Hewitt	non-removable;
420*14e14723SChristian Hewitt	disable-wp;
421*14e14723SChristian Hewitt
422*14e14723SChristian Hewitt	/* WiFi firmware requires power in suspend */
423*14e14723SChristian Hewitt	keep-power-in-suspend;
424*14e14723SChristian Hewitt
425*14e14723SChristian Hewitt	mmc-pwrseq = <&sdio_pwrseq>;
426*14e14723SChristian Hewitt
427*14e14723SChristian Hewitt	vmmc-supply = <&vsys_3v3>;
428*14e14723SChristian Hewitt	vqmmc-supply = <&vddao_1v8>;
429*14e14723SChristian Hewitt
430*14e14723SChristian Hewitt	rtl8822cs: wifi@1 {
431*14e14723SChristian Hewitt		reg = <1>;
432*14e14723SChristian Hewitt	};
433*14e14723SChristian Hewitt};
434*14e14723SChristian Hewitt
435*14e14723SChristian Hewitt/* SD card */
436*14e14723SChristian Hewitt&sd_emmc_b {
437*14e14723SChristian Hewitt	status = "okay";
438*14e14723SChristian Hewitt	pinctrl-0 = <&sdcard_c_pins>;
439*14e14723SChristian Hewitt	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
440*14e14723SChristian Hewitt	pinctrl-names = "default", "clk-gate";
441*14e14723SChristian Hewitt
442*14e14723SChristian Hewitt	bus-width = <4>;
443*14e14723SChristian Hewitt	cap-sd-highspeed;
444*14e14723SChristian Hewitt	max-frequency = <50000000>;
445*14e14723SChristian Hewitt	disable-wp;
446*14e14723SChristian Hewitt
447*14e14723SChristian Hewitt	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
448*14e14723SChristian Hewitt	vmmc-supply = <&vsys_3v3>;
449*14e14723SChristian Hewitt	vqmmc-supply = <&vsys_3v3>;
450*14e14723SChristian Hewitt};
451*14e14723SChristian Hewitt
452*14e14723SChristian Hewitt/* eMMC */
453*14e14723SChristian Hewitt&sd_emmc_c {
454*14e14723SChristian Hewitt	status = "okay";
455*14e14723SChristian Hewitt	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
456*14e14723SChristian Hewitt	pinctrl-1 = <&emmc_clk_gate_pins>;
457*14e14723SChristian Hewitt	pinctrl-names = "default", "clk-gate";
458*14e14723SChristian Hewitt
459*14e14723SChristian Hewitt	bus-width = <8>;
460*14e14723SChristian Hewitt	cap-mmc-highspeed;
461*14e14723SChristian Hewitt	mmc-ddr-1_8v;
462*14e14723SChristian Hewitt	mmc-hs200-1_8v;
463*14e14723SChristian Hewitt	max-frequency = <200000000>;
464*14e14723SChristian Hewitt	disable-wp;
465*14e14723SChristian Hewitt
466*14e14723SChristian Hewitt	mmc-pwrseq = <&emmc_pwrseq>;
467*14e14723SChristian Hewitt	vmmc-supply = <&vcc_3v3>;
468*14e14723SChristian Hewitt	vqmmc-supply = <&emmc_1v8>;
469*14e14723SChristian Hewitt};
470*14e14723SChristian Hewitt
471*14e14723SChristian Hewitt&tdmif_b {
472*14e14723SChristian Hewitt	status = "okay";
473*14e14723SChristian Hewitt};
474*14e14723SChristian Hewitt
475*14e14723SChristian Hewitt&tdmout_b {
476*14e14723SChristian Hewitt	status = "okay";
477*14e14723SChristian Hewitt};
478*14e14723SChristian Hewitt
479*14e14723SChristian Hewitt&tohdmitx {
480*14e14723SChristian Hewitt	status = "okay";
481*14e14723SChristian Hewitt};
482*14e14723SChristian Hewitt
483*14e14723SChristian Hewitt&uart_A {
484*14e14723SChristian Hewitt	/* enable if WiFi/BT board connected */
485*14e14723SChristian Hewitt	status = "disabled";
486*14e14723SChristian Hewitt	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
487*14e14723SChristian Hewitt	pinctrl-names = "default";
488*14e14723SChristian Hewitt	uart-has-rtscts;
489*14e14723SChristian Hewitt
490*14e14723SChristian Hewitt	bluetooth {
491*14e14723SChristian Hewitt		compatible = "realtek,rtl8822cs-bt";
492*14e14723SChristian Hewitt		enable-gpios  = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
493*14e14723SChristian Hewitt		host-wake-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_HIGH>;
494*14e14723SChristian Hewitt		device-wake-gpios = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>;
495*14e14723SChristian Hewitt	};
496*14e14723SChristian Hewitt};
497*14e14723SChristian Hewitt
498*14e14723SChristian Hewitt&uart_AO {
499*14e14723SChristian Hewitt	status = "okay";
500*14e14723SChristian Hewitt	pinctrl-0 = <&uart_ao_a_pins>;
501*14e14723SChristian Hewitt	pinctrl-names = "default";
502*14e14723SChristian Hewitt};
503*14e14723SChristian Hewitt
504*14e14723SChristian Hewitt&usb2_phy0 {
505*14e14723SChristian Hewitt	phy-supply = <&dc_in>;
506*14e14723SChristian Hewitt};
507*14e14723SChristian Hewitt
508*14e14723SChristian Hewitt&usb2_phy1 {
509*14e14723SChristian Hewitt	phy-supply = <&usb_pwr>;
510*14e14723SChristian Hewitt};
511*14e14723SChristian Hewitt
512*14e14723SChristian Hewitt&usb3_pcie_phy {
513*14e14723SChristian Hewitt	phy-supply = <&usb_pwr>;
514*14e14723SChristian Hewitt};
515*14e14723SChristian Hewitt
516*14e14723SChristian Hewitt&usb {
517*14e14723SChristian Hewitt	status = "okay";
518*14e14723SChristian Hewitt	dr_mode = "peripheral";
519*14e14723SChristian Hewitt	phys = <&usb2_phy0>, <&usb2_phy1>;
520*14e14723SChristian Hewitt	phy-names = "usb2-phy0", "usb2-phy1";
521*14e14723SChristian Hewitt};
522