114e14723SChristian Hewitt// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
214e14723SChristian Hewitt/*
314e14723SChristian Hewitt * Copyright (c) 2019 BayLibre, SAS
414e14723SChristian Hewitt * Author: Neil Armstrong <narmstrong@baylibre.com>
514e14723SChristian Hewitt * Copyright (c) 2023 Christian Hewitt <christianshewitt@gmail.com>
614e14723SChristian Hewitt */
714e14723SChristian Hewitt
814e14723SChristian Hewitt#include <dt-bindings/input/input.h>
914e14723SChristian Hewitt#include <dt-bindings/leds/common.h>
1014e14723SChristian Hewitt#include <dt-bindings/gpio/meson-g12a-gpio.h>
1114e14723SChristian Hewitt#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
1214e14723SChristian Hewitt
1314e14723SChristian Hewitt/ {
1414e14723SChristian Hewitt	aliases {
1514e14723SChristian Hewitt		serial0 = &uart_AO;
1614e14723SChristian Hewitt		ethernet0 = &ethmac;
1714e14723SChristian Hewitt		rtc1 = &vrtc;
1814e14723SChristian Hewitt	};
1914e14723SChristian Hewitt
2014e14723SChristian Hewitt	chosen {
2114e14723SChristian Hewitt		stdout-path = "serial0:115200n8";
2214e14723SChristian Hewitt	};
2314e14723SChristian Hewitt
2414e14723SChristian Hewitt	memory@0 {
2514e14723SChristian Hewitt		device_type = "memory";
2614e14723SChristian Hewitt		reg = <0x0 0x0 0x0 0x80000000>; /* 2 GiB or 4 GiB */
2714e14723SChristian Hewitt	};
2814e14723SChristian Hewitt
2914e14723SChristian Hewitt	adc-keys {
3014e14723SChristian Hewitt		compatible = "adc-keys";
3114e14723SChristian Hewitt		io-channels = <&saradc 2>;
3214e14723SChristian Hewitt		io-channel-names = "buttons";
3314e14723SChristian Hewitt		keyup-threshold-microvolt = <1710000>;
3414e14723SChristian Hewitt
3514e14723SChristian Hewitt		button-function {
3614e14723SChristian Hewitt			label = "RST";
3714e14723SChristian Hewitt			linux,code = <KEY_POWER>;
3814e14723SChristian Hewitt			press-threshold-microvolt = <10000>;
3914e14723SChristian Hewitt		};
4014e14723SChristian Hewitt	};
4114e14723SChristian Hewitt
4214e14723SChristian Hewitt	emmc_pwrseq: emmc-pwrseq {
4314e14723SChristian Hewitt		compatible = "mmc-pwrseq-emmc";
4414e14723SChristian Hewitt		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
4514e14723SChristian Hewitt	};
4614e14723SChristian Hewitt
4714e14723SChristian Hewitt	fan0: pwm-fan {
4814e14723SChristian Hewitt		compatible = "pwm-fan";
4914e14723SChristian Hewitt		#cooling-cells = <2>;
5014e14723SChristian Hewitt		cooling-levels = <0 120 170 220>;
5114e14723SChristian Hewitt		pwms = <&pwm_cd 1 40000 0>;
5214e14723SChristian Hewitt	};
5314e14723SChristian Hewitt
5414e14723SChristian Hewitt	hdmi-connector {
5514e14723SChristian Hewitt		compatible = "hdmi-connector";
5614e14723SChristian Hewitt		type = "a";
5714e14723SChristian Hewitt
5814e14723SChristian Hewitt		port {
5914e14723SChristian Hewitt			hdmi_connector_in: endpoint {
6014e14723SChristian Hewitt				remote-endpoint = <&hdmi_tx_tmds_out>;
6114e14723SChristian Hewitt			};
6214e14723SChristian Hewitt		};
6314e14723SChristian Hewitt	};
6414e14723SChristian Hewitt
6514e14723SChristian Hewitt	leds {
6614e14723SChristian Hewitt		compatible = "gpio-leds";
6714e14723SChristian Hewitt
6814e14723SChristian Hewitt		led-0 {
6914e14723SChristian Hewitt			color = <LED_COLOR_ID_BLUE>;
7014e14723SChristian Hewitt			function = LED_FUNCTION_STATUS;
7114e14723SChristian Hewitt			gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_LOW>;
7214e14723SChristian Hewitt			linux,default-trigger = "heartbeat";
7314e14723SChristian Hewitt		};
7414e14723SChristian Hewitt
7514e14723SChristian Hewitt		led-1 {
7614e14723SChristian Hewitt			color = <LED_COLOR_ID_GREEN>;
7714e14723SChristian Hewitt			function = LED_FUNCTION_STATUS;
7814e14723SChristian Hewitt			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
7914e14723SChristian Hewitt		};
8014e14723SChristian Hewitt	};
8114e14723SChristian Hewitt
8214e14723SChristian Hewitt	sdio_pwrseq: sdio-pwrseq {
8314e14723SChristian Hewitt		compatible = "mmc-pwrseq-simple";
8414e14723SChristian Hewitt		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
8514e14723SChristian Hewitt		clocks = <&wifi32k>;
8614e14723SChristian Hewitt		clock-names = "ext_clock";
8714e14723SChristian Hewitt	};
8814e14723SChristian Hewitt
8914e14723SChristian Hewitt	wifi32k: wifi32k {
9014e14723SChristian Hewitt		compatible = "pwm-clock";
9114e14723SChristian Hewitt		#clock-cells = <0>;
9214e14723SChristian Hewitt		clock-frequency = <32768>;
9314e14723SChristian Hewitt		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
9414e14723SChristian Hewitt	};
9514e14723SChristian Hewitt
9614e14723SChristian Hewitt	dc_in: regulator-dc-in {
9714e14723SChristian Hewitt		compatible = "regulator-fixed";
9814e14723SChristian Hewitt		regulator-name = "DC_IN";
9914e14723SChristian Hewitt		regulator-min-microvolt = <5000000>;
10014e14723SChristian Hewitt		regulator-max-microvolt = <5000000>;
10114e14723SChristian Hewitt		regulator-always-on;
10214e14723SChristian Hewitt	};
10314e14723SChristian Hewitt
10414e14723SChristian Hewitt	vcc_5v: regulator-vcc-5v {
10514e14723SChristian Hewitt		compatible = "regulator-fixed";
10614e14723SChristian Hewitt		regulator-name = "VCC_5V";
10714e14723SChristian Hewitt		regulator-min-microvolt = <5000000>;
10814e14723SChristian Hewitt		regulator-max-microvolt = <5000000>;
10914e14723SChristian Hewitt		vin-supply = <&dc_in>;
11014e14723SChristian Hewitt
11114e14723SChristian Hewitt		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
11214e14723SChristian Hewitt		enable-active-high;
11314e14723SChristian Hewitt	};
11414e14723SChristian Hewitt
11514e14723SChristian Hewitt	vcc_3v3: regulator-vcc-3v3 {
11614e14723SChristian Hewitt		compatible = "regulator-fixed";
11714e14723SChristian Hewitt		regulator-name = "VCC_3V3";
11814e14723SChristian Hewitt		regulator-min-microvolt = <3300000>;
11914e14723SChristian Hewitt		regulator-max-microvolt = <3300000>;
12014e14723SChristian Hewitt		vin-supply = <&vsys_3v3>;
12114e14723SChristian Hewitt		regulator-always-on;
12214e14723SChristian Hewitt	};
12314e14723SChristian Hewitt
12414e14723SChristian Hewitt	vcc_1v8: regulator-vcc-1v8 {
12514e14723SChristian Hewitt		compatible = "regulator-fixed";
12614e14723SChristian Hewitt		regulator-name = "VCC_1V8";
12714e14723SChristian Hewitt		regulator-min-microvolt = <1800000>;
12814e14723SChristian Hewitt		regulator-max-microvolt = <1800000>;
12914e14723SChristian Hewitt		vin-supply = <&vcc_3v3>;
13014e14723SChristian Hewitt		regulator-always-on;
13114e14723SChristian Hewitt	};
13214e14723SChristian Hewitt
13314e14723SChristian Hewitt	vddao_1v8: regulator-vddao-1v8 {
13414e14723SChristian Hewitt		compatible = "regulator-fixed";
13514e14723SChristian Hewitt		regulator-name = "VDDIO_AO1V8";
13614e14723SChristian Hewitt		regulator-min-microvolt = <1800000>;
13714e14723SChristian Hewitt		regulator-max-microvolt = <1800000>;
13814e14723SChristian Hewitt		vin-supply = <&vsys_3v3>;
13914e14723SChristian Hewitt		regulator-always-on;
14014e14723SChristian Hewitt	};
14114e14723SChristian Hewitt
14214e14723SChristian Hewitt	vddcpu_a: regulator-vddcpu-a {
14314e14723SChristian Hewitt		compatible = "pwm-regulator";
14414e14723SChristian Hewitt		regulator-name = "VDDCPU_A";
14514e14723SChristian Hewitt		regulator-min-microvolt = <690000>;
14614e14723SChristian Hewitt		regulator-max-microvolt = <1050000>;
14714e14723SChristian Hewitt		pwm-supply = <&dc_in>;
14814e14723SChristian Hewitt		pwms = <&pwm_ab 0 1250 0>;
14914e14723SChristian Hewitt		pwm-dutycycle-range = <100 0>;
15014e14723SChristian Hewitt		regulator-boot-on;
15114e14723SChristian Hewitt		regulator-always-on;
15214e14723SChristian Hewitt	};
15314e14723SChristian Hewitt
15414e14723SChristian Hewitt	vddcpu_b: regulator-vddcpu-b {
15514e14723SChristian Hewitt		compatible = "pwm-regulator";
15614e14723SChristian Hewitt		regulator-name = "VDDCPU_B";
15714e14723SChristian Hewitt		regulator-min-microvolt = <690000>;
15814e14723SChristian Hewitt		regulator-max-microvolt = <1050000>;
15914e14723SChristian Hewitt		pwm-supply = <&vsys_3v3>;
16014e14723SChristian Hewitt		pwms = <&pwm_AO_cd 1 1250 0>;
16114e14723SChristian Hewitt		pwm-dutycycle-range = <100 0>;
16214e14723SChristian Hewitt		regulator-boot-on;
16314e14723SChristian Hewitt		regulator-always-on;
16414e14723SChristian Hewitt	};
16514e14723SChristian Hewitt
16614e14723SChristian Hewitt	vsys_3v3: regulator-vsys-3v3 {
16714e14723SChristian Hewitt		compatible = "regulator-fixed";
16814e14723SChristian Hewitt		regulator-name = "VSYS_3V3";
16914e14723SChristian Hewitt		regulator-min-microvolt = <3300000>;
17014e14723SChristian Hewitt		regulator-max-microvolt = <3300000>;
17114e14723SChristian Hewitt		vin-supply = <&dc_in>;
17214e14723SChristian Hewitt		regulator-always-on;
17314e14723SChristian Hewitt	};
17414e14723SChristian Hewitt
17514e14723SChristian Hewitt	emmc_1v8: regulator-emmc-1v8 {
17614e14723SChristian Hewitt		compatible = "regulator-fixed";
17714e14723SChristian Hewitt		regulator-name = "EMMC_AO1V8";
17814e14723SChristian Hewitt		regulator-min-microvolt = <1800000>;
17914e14723SChristian Hewitt		regulator-max-microvolt = <1800000>;
18014e14723SChristian Hewitt		vin-supply = <&vcc_3v3>;
18114e14723SChristian Hewitt		regulator-always-on;
18214e14723SChristian Hewitt	};
18314e14723SChristian Hewitt
18414e14723SChristian Hewitt	usb_pwr: regulator-usb-pwr {
18514e14723SChristian Hewitt		compatible = "regulator-fixed";
18614e14723SChristian Hewitt		regulator-name = "USB_PWR";
18714e14723SChristian Hewitt		regulator-min-microvolt = <5000000>;
18814e14723SChristian Hewitt		regulator-max-microvolt = <5000000>;
18914e14723SChristian Hewitt		vin-supply = <&vcc_5v>;
19014e14723SChristian Hewitt
19114e14723SChristian Hewitt		gpio = <&gpio GPIOA_6 GPIO_ACTIVE_HIGH>;
19214e14723SChristian Hewitt		enable-active-high;
19314e14723SChristian Hewitt	};
19414e14723SChristian Hewitt
19514e14723SChristian Hewitt	sound {
19614e14723SChristian Hewitt		compatible = "amlogic,axg-sound-card";
19714e14723SChristian Hewitt		model = "BPI-M2S";
19814e14723SChristian Hewitt		audio-aux-devs = <&tdmout_b>;
19914e14723SChristian Hewitt		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
20014e14723SChristian Hewitt				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
20114e14723SChristian Hewitt				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
20214e14723SChristian Hewitt				"TDM_B Playback", "TDMOUT_B OUT";
20314e14723SChristian Hewitt
20414e14723SChristian Hewitt		assigned-clocks = <&clkc CLKID_MPLL2>,
20514e14723SChristian Hewitt				  <&clkc CLKID_MPLL0>,
20614e14723SChristian Hewitt				  <&clkc CLKID_MPLL1>;
20714e14723SChristian Hewitt		assigned-clock-parents = <0>, <0>, <0>;
20814e14723SChristian Hewitt		assigned-clock-rates = <294912000>,
20914e14723SChristian Hewitt				       <270950400>,
21014e14723SChristian Hewitt				       <393216000>;
21114e14723SChristian Hewitt
21214e14723SChristian Hewitt		dai-link-0 {
21314e14723SChristian Hewitt			sound-dai = <&frddr_a>;
21414e14723SChristian Hewitt		};
21514e14723SChristian Hewitt
21614e14723SChristian Hewitt		dai-link-1 {
21714e14723SChristian Hewitt			sound-dai = <&frddr_b>;
21814e14723SChristian Hewitt		};
21914e14723SChristian Hewitt
22014e14723SChristian Hewitt		dai-link-2 {
22114e14723SChristian Hewitt			sound-dai = <&frddr_c>;
22214e14723SChristian Hewitt		};
22314e14723SChristian Hewitt
22414e14723SChristian Hewitt		/* 8ch hdmi interface */
22514e14723SChristian Hewitt		dai-link-3 {
22614e14723SChristian Hewitt			sound-dai = <&tdmif_b>;
22714e14723SChristian Hewitt			dai-format = "i2s";
22814e14723SChristian Hewitt			dai-tdm-slot-tx-mask-0 = <1 1>;
22914e14723SChristian Hewitt			dai-tdm-slot-tx-mask-1 = <1 1>;
23014e14723SChristian Hewitt			dai-tdm-slot-tx-mask-2 = <1 1>;
23114e14723SChristian Hewitt			dai-tdm-slot-tx-mask-3 = <1 1>;
23214e14723SChristian Hewitt			mclk-fs = <256>;
23314e14723SChristian Hewitt
23414e14723SChristian Hewitt			codec {
23514e14723SChristian Hewitt				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
23614e14723SChristian Hewitt			};
23714e14723SChristian Hewitt		};
23814e14723SChristian Hewitt
23914e14723SChristian Hewitt		/* hdmi glue */
24014e14723SChristian Hewitt		dai-link-4 {
24114e14723SChristian Hewitt			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
24214e14723SChristian Hewitt
24314e14723SChristian Hewitt			codec {
24414e14723SChristian Hewitt				sound-dai = <&hdmi_tx>;
24514e14723SChristian Hewitt			};
24614e14723SChristian Hewitt		};
24714e14723SChristian Hewitt	};
24814e14723SChristian Hewitt};
24914e14723SChristian Hewitt
25014e14723SChristian Hewitt&arb {
25114e14723SChristian Hewitt	status = "okay";
25214e14723SChristian Hewitt};
25314e14723SChristian Hewitt
25414e14723SChristian Hewitt&clkc_audio {
25514e14723SChristian Hewitt	status = "okay";
25614e14723SChristian Hewitt};
25714e14723SChristian Hewitt
25814e14723SChristian Hewitt&cecb_AO {
25914e14723SChristian Hewitt	pinctrl-0 = <&cec_ao_b_h_pins>;
26014e14723SChristian Hewitt	pinctrl-names = "default";
26114e14723SChristian Hewitt	status = "okay";
26214e14723SChristian Hewitt	hdmi-phandle = <&hdmi_tx>;
26314e14723SChristian Hewitt};
26414e14723SChristian Hewitt
26514e14723SChristian Hewitt&cpu0 {
26614e14723SChristian Hewitt	cpu-supply = <&vddcpu_b>;
26714e14723SChristian Hewitt	operating-points-v2 = <&cpu_opp_table_0>;
26814e14723SChristian Hewitt	clocks = <&clkc CLKID_CPU_CLK>;
26914e14723SChristian Hewitt	clock-latency = <50000>;
27014e14723SChristian Hewitt};
27114e14723SChristian Hewitt
27214e14723SChristian Hewitt&cpu1 {
27314e14723SChristian Hewitt	cpu-supply = <&vddcpu_b>;
27414e14723SChristian Hewitt	operating-points-v2 = <&cpu_opp_table_0>;
27514e14723SChristian Hewitt	clocks = <&clkc CLKID_CPU_CLK>;
27614e14723SChristian Hewitt	clock-latency = <50000>;
27714e14723SChristian Hewitt};
27814e14723SChristian Hewitt
27914e14723SChristian Hewitt&cpu100 {
28014e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
28114e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
28214e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
28314e14723SChristian Hewitt	clock-latency = <50000>;
28414e14723SChristian Hewitt};
28514e14723SChristian Hewitt
28614e14723SChristian Hewitt&cpu101 {
28714e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
28814e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
28914e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
29014e14723SChristian Hewitt	clock-latency = <50000>;
29114e14723SChristian Hewitt};
29214e14723SChristian Hewitt
29314e14723SChristian Hewitt&cpu102 {
29414e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
29514e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
29614e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
29714e14723SChristian Hewitt	clock-latency = <50000>;
29814e14723SChristian Hewitt};
29914e14723SChristian Hewitt
30014e14723SChristian Hewitt&cpu103 {
30114e14723SChristian Hewitt	cpu-supply = <&vddcpu_a>;
30214e14723SChristian Hewitt	operating-points-v2 = <&cpub_opp_table_1>;
30314e14723SChristian Hewitt	clocks = <&clkc CLKID_CPUB_CLK>;
30414e14723SChristian Hewitt	clock-latency = <50000>;
30514e14723SChristian Hewitt};
30614e14723SChristian Hewitt
30714e14723SChristian Hewitt&ethmac {
30814e14723SChristian Hewitt	pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
30914e14723SChristian Hewitt	pinctrl-names = "default";
31014e14723SChristian Hewitt	status = "okay";
31114e14723SChristian Hewitt	phy-mode = "rgmii";
31214e14723SChristian Hewitt	phy-handle = <&external_phy>;
31314e14723SChristian Hewitt	amlogic,tx-delay-ns = <2>;
31414e14723SChristian Hewitt};
31514e14723SChristian Hewitt
31614e14723SChristian Hewitt&ext_mdio {
31714e14723SChristian Hewitt	external_phy: ethernet-phy@0 {
31814e14723SChristian Hewitt		/* Realtek RTL8211F (0x001cc916) */
31914e14723SChristian Hewitt		reg = <0>;
32014e14723SChristian Hewitt		max-speed = <1000>;
32114e14723SChristian Hewitt
32214e14723SChristian Hewitt		reset-assert-us = <10000>;
32314e14723SChristian Hewitt		reset-deassert-us = <80000>;
32414e14723SChristian Hewitt		reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
32514e14723SChristian Hewitt
32614e14723SChristian Hewitt		interrupt-parent = <&gpio_intc>;
32714e14723SChristian Hewitt		/* MAC_INTR on GPIOZ_14 */
32814e14723SChristian Hewitt		interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>;
32914e14723SChristian Hewitt	};
330*6387e0aaSHuqiang Qin};
33114e14723SChristian Hewitt
33214e14723SChristian Hewitt&frddr_a {
33314e14723SChristian Hewitt	status = "okay";
33414e14723SChristian Hewitt};
33514e14723SChristian Hewitt
33614e14723SChristian Hewitt&frddr_b {
33714e14723SChristian Hewitt	status = "okay";
33814e14723SChristian Hewitt};
33914e14723SChristian Hewitt
34014e14723SChristian Hewitt&frddr_c {
34114e14723SChristian Hewitt	status = "okay";
34214e14723SChristian Hewitt};
34314e14723SChristian Hewitt
34414e14723SChristian Hewitt&hdmi_tx {
34514e14723SChristian Hewitt	status = "okay";
34614e14723SChristian Hewitt	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
34714e14723SChristian Hewitt	pinctrl-names = "default";
34814e14723SChristian Hewitt	hdmi-supply = <&vcc_5v>;
34914e14723SChristian Hewitt};
35014e14723SChristian Hewitt
35114e14723SChristian Hewitt&hdmi_tx_tmds_port {
35214e14723SChristian Hewitt	hdmi_tx_tmds_out: endpoint {
35314e14723SChristian Hewitt		remote-endpoint = <&hdmi_connector_in>;
35414e14723SChristian Hewitt	};
35514e14723SChristian Hewitt};
35614e14723SChristian Hewitt
35714e14723SChristian Hewitt/* Main i2c bus */
35814e14723SChristian Hewitt&i2c2 {
35914e14723SChristian Hewitt	status = "okay";
36014e14723SChristian Hewitt	pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>;
36114e14723SChristian Hewitt	pinctrl-names = "default";
36214e14723SChristian Hewitt};
36314e14723SChristian Hewitt
36414e14723SChristian Hewitt&pcie {
36514e14723SChristian Hewitt	status = "okay";
36614e14723SChristian Hewitt	reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>;
36714e14723SChristian Hewitt};
36814e14723SChristian Hewitt
36914e14723SChristian Hewitt&pwm_ab {
37014e14723SChristian Hewitt	status = "okay";
37114e14723SChristian Hewitt	pinctrl-0 = <&pwm_a_e_pins>;
37214e14723SChristian Hewitt	pinctrl-names = "default";
37314e14723SChristian Hewitt	clocks = <&xtal>;
37414e14723SChristian Hewitt	clock-names = "clkin0";
37514e14723SChristian Hewitt};
37614e14723SChristian Hewitt
37714e14723SChristian Hewitt&pwm_cd {
37814e14723SChristian Hewitt	status = "okay";
37914e14723SChristian Hewitt	pinctrl-0 = <&pwm_d_x6_pins>;
38014e14723SChristian Hewitt	pinctrl-names = "default";
38114e14723SChristian Hewitt	pwm-gpios = <&gpio GPIOAO_10 GPIO_ACTIVE_HIGH>;
38214e14723SChristian Hewitt};
38314e14723SChristian Hewitt
38414e14723SChristian Hewitt&pwm_ef {
38514e14723SChristian Hewitt	status = "okay";
38614e14723SChristian Hewitt	pinctrl-0 = <&pwm_e_pins>;
38714e14723SChristian Hewitt	pinctrl-names = "default";
38814e14723SChristian Hewitt};
38914e14723SChristian Hewitt
39014e14723SChristian Hewitt&pwm_AO_cd {
39114e14723SChristian Hewitt	pinctrl-0 = <&pwm_ao_d_e_pins>;
39214e14723SChristian Hewitt	pinctrl-names = "default";
39314e14723SChristian Hewitt	clocks = <&xtal>;
39414e14723SChristian Hewitt	clock-names = "clkin1";
39514e14723SChristian Hewitt	status = "okay";
39614e14723SChristian Hewitt};
39714e14723SChristian Hewitt
39814e14723SChristian Hewitt&saradc {
39914e14723SChristian Hewitt	status = "okay";
40014e14723SChristian Hewitt	vref-supply = <&vddao_1v8>;
40114e14723SChristian Hewitt};
40214e14723SChristian Hewitt
40314e14723SChristian Hewitt/* SDIO */
40414e14723SChristian Hewitt&sd_emmc_a {
40514e14723SChristian Hewitt	/* enable if WiFi/BT board connected */
40614e14723SChristian Hewitt	status = "disabled";
40714e14723SChristian Hewitt	pinctrl-0 = <&sdio_pins>;
40814e14723SChristian Hewitt	pinctrl-1 = <&sdio_clk_gate_pins>;
40914e14723SChristian Hewitt	pinctrl-names = "default", "clk-gate";
41014e14723SChristian Hewitt	#address-cells = <1>;
41114e14723SChristian Hewitt	#size-cells = <0>;
41214e14723SChristian Hewitt
41314e14723SChristian Hewitt	bus-width = <4>;
41414e14723SChristian Hewitt	sd-uhs-sdr104;
41514e14723SChristian Hewitt	max-frequency = <50000000>;
41614e14723SChristian Hewitt
41714e14723SChristian Hewitt	non-removable;
41814e14723SChristian Hewitt	disable-wp;
41914e14723SChristian Hewitt
42014e14723SChristian Hewitt	/* WiFi firmware requires power in suspend */
42114e14723SChristian Hewitt	keep-power-in-suspend;
42214e14723SChristian Hewitt
42314e14723SChristian Hewitt	mmc-pwrseq = <&sdio_pwrseq>;
42414e14723SChristian Hewitt
42514e14723SChristian Hewitt	vmmc-supply = <&vsys_3v3>;
42614e14723SChristian Hewitt	vqmmc-supply = <&vddao_1v8>;
42714e14723SChristian Hewitt
42814e14723SChristian Hewitt	rtl8822cs: wifi@1 {
42914e14723SChristian Hewitt		reg = <1>;
43014e14723SChristian Hewitt	};
43114e14723SChristian Hewitt};
43214e14723SChristian Hewitt
43314e14723SChristian Hewitt/* SD card */
43414e14723SChristian Hewitt&sd_emmc_b {
43514e14723SChristian Hewitt	status = "okay";
43614e14723SChristian Hewitt	pinctrl-0 = <&sdcard_c_pins>;
43714e14723SChristian Hewitt	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
43814e14723SChristian Hewitt	pinctrl-names = "default", "clk-gate";
43914e14723SChristian Hewitt
44014e14723SChristian Hewitt	bus-width = <4>;
44114e14723SChristian Hewitt	cap-sd-highspeed;
44214e14723SChristian Hewitt	max-frequency = <50000000>;
44314e14723SChristian Hewitt	disable-wp;
44414e14723SChristian Hewitt
44514e14723SChristian Hewitt	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
44614e14723SChristian Hewitt	vmmc-supply = <&vsys_3v3>;
44714e14723SChristian Hewitt	vqmmc-supply = <&vsys_3v3>;
44814e14723SChristian Hewitt};
44914e14723SChristian Hewitt
45014e14723SChristian Hewitt/* eMMC */
45114e14723SChristian Hewitt&sd_emmc_c {
45214e14723SChristian Hewitt	status = "okay";
45314e14723SChristian Hewitt	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
45414e14723SChristian Hewitt	pinctrl-1 = <&emmc_clk_gate_pins>;
45514e14723SChristian Hewitt	pinctrl-names = "default", "clk-gate";
45614e14723SChristian Hewitt
45714e14723SChristian Hewitt	bus-width = <8>;
45814e14723SChristian Hewitt	cap-mmc-highspeed;
45914e14723SChristian Hewitt	mmc-ddr-1_8v;
46014e14723SChristian Hewitt	mmc-hs200-1_8v;
46114e14723SChristian Hewitt	max-frequency = <200000000>;
46214e14723SChristian Hewitt	disable-wp;
46314e14723SChristian Hewitt
46414e14723SChristian Hewitt	mmc-pwrseq = <&emmc_pwrseq>;
46514e14723SChristian Hewitt	vmmc-supply = <&vcc_3v3>;
46614e14723SChristian Hewitt	vqmmc-supply = <&emmc_1v8>;
46714e14723SChristian Hewitt};
46814e14723SChristian Hewitt
46914e14723SChristian Hewitt&tdmif_b {
47014e14723SChristian Hewitt	status = "okay";
47114e14723SChristian Hewitt};
47214e14723SChristian Hewitt
47314e14723SChristian Hewitt&tdmout_b {
47414e14723SChristian Hewitt	status = "okay";
47514e14723SChristian Hewitt};
47614e14723SChristian Hewitt
47714e14723SChristian Hewitt&tohdmitx {
47814e14723SChristian Hewitt	status = "okay";
47914e14723SChristian Hewitt};
48014e14723SChristian Hewitt
48114e14723SChristian Hewitt&uart_A {
48214e14723SChristian Hewitt	/* enable if WiFi/BT board connected */
48314e14723SChristian Hewitt	status = "disabled";
48414e14723SChristian Hewitt	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
48514e14723SChristian Hewitt	pinctrl-names = "default";
48614e14723SChristian Hewitt	uart-has-rtscts;
48714e14723SChristian Hewitt
48814e14723SChristian Hewitt	bluetooth {
48914e14723SChristian Hewitt		compatible = "realtek,rtl8822cs-bt";
49014e14723SChristian Hewitt		enable-gpios  = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
49114e14723SChristian Hewitt		host-wake-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_HIGH>;
49214e14723SChristian Hewitt		device-wake-gpios = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>;
49314e14723SChristian Hewitt	};
49414e14723SChristian Hewitt};
49514e14723SChristian Hewitt
49614e14723SChristian Hewitt&uart_AO {
49714e14723SChristian Hewitt	status = "okay";
49814e14723SChristian Hewitt	pinctrl-0 = <&uart_ao_a_pins>;
49914e14723SChristian Hewitt	pinctrl-names = "default";
50014e14723SChristian Hewitt};
50114e14723SChristian Hewitt
50214e14723SChristian Hewitt&usb2_phy0 {
50314e14723SChristian Hewitt	phy-supply = <&dc_in>;
50414e14723SChristian Hewitt};
50514e14723SChristian Hewitt
50614e14723SChristian Hewitt&usb2_phy1 {
50714e14723SChristian Hewitt	phy-supply = <&usb_pwr>;
50814e14723SChristian Hewitt};
50914e14723SChristian Hewitt
51014e14723SChristian Hewitt&usb3_pcie_phy {
51114e14723SChristian Hewitt	phy-supply = <&usb_pwr>;
51214e14723SChristian Hewitt};
51314e14723SChristian Hewitt
51414e14723SChristian Hewitt&usb {
51514e14723SChristian Hewitt	status = "okay";
51614e14723SChristian Hewitt	dr_mode = "peripheral";
51714e14723SChristian Hewitt	phys = <&usb2_phy0>, <&usb2_phy1>;
51814e14723SChristian Hewitt	phy-names = "usb2-phy0", "usb2-phy1";
51914e14723SChristian Hewitt};
52014e14723SChristian Hewitt