1d3aa4ce8SKevin Hilman// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2d3aa4ce8SKevin Hilman/*
3d3aa4ce8SKevin Hilman * Copyright (c) 2018 BayLibre SAS. All rights reserved.
4d3aa4ce8SKevin Hilman */
5d3aa4ce8SKevin Hilman
6d3aa4ce8SKevin Hilman/dts-v1/;
7d3aa4ce8SKevin Hilman
8d3aa4ce8SKevin Hilman#include "meson-g12a.dtsi"
9c9206b42SGuillaume La Roque#include <dt-bindings/gpio/gpio.h>
10c9206b42SGuillaume La Roque#include <dt-bindings/gpio/meson-g12a-gpio.h>
11cd0727aaSNeil Armstrong#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
12d3aa4ce8SKevin Hilman
13d3aa4ce8SKevin Hilman/ {
14b167b473SNeil Armstrong	compatible = "amediatech,x96-max", "amlogic,g12a";
15d3aa4ce8SKevin Hilman	model = "Shenzhen Amediatech Technology Co., Ltd X96 Max";
16d3aa4ce8SKevin Hilman
17d3aa4ce8SKevin Hilman	aliases {
18d3aa4ce8SKevin Hilman		serial0 = &uart_AO;
19e8e7037cSNeil Armstrong		ethernet0 = &ethmac;
20d3aa4ce8SKevin Hilman	};
21cd0727aaSNeil Armstrong
22cd0727aaSNeil Armstrong	spdif_dit: audio-codec-1 {
23cd0727aaSNeil Armstrong		#sound-dai-cells = <0>;
24cd0727aaSNeil Armstrong		compatible = "linux,spdif-dit";
25cd0727aaSNeil Armstrong		status = "okay";
26cd0727aaSNeil Armstrong		sound-name-prefix = "DIT";
27cd0727aaSNeil Armstrong	};
28cd0727aaSNeil Armstrong
29d3aa4ce8SKevin Hilman	chosen {
30d3aa4ce8SKevin Hilman		stdout-path = "serial0:115200n8";
31d3aa4ce8SKevin Hilman	};
32d3aa4ce8SKevin Hilman	memory@0 {
33d3aa4ce8SKevin Hilman		device_type = "memory";
34d3aa4ce8SKevin Hilman		reg = <0x0 0x0 0x0 0x40000000>;
35d3aa4ce8SKevin Hilman	};
36c9206b42SGuillaume La Roque
37b0be9616SNeil Armstrong	cvbs-connector {
38b0be9616SNeil Armstrong		compatible = "composite-video-connector";
39b0be9616SNeil Armstrong
40b0be9616SNeil Armstrong		port {
41b0be9616SNeil Armstrong			cvbs_connector_in: endpoint {
42b0be9616SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
43b0be9616SNeil Armstrong			};
44b0be9616SNeil Armstrong		};
45b0be9616SNeil Armstrong	};
46b0be9616SNeil Armstrong
47b0be9616SNeil Armstrong	hdmi-connector {
48b0be9616SNeil Armstrong		compatible = "hdmi-connector";
49b0be9616SNeil Armstrong		type = "a";
50b0be9616SNeil Armstrong
51b0be9616SNeil Armstrong		port {
52b0be9616SNeil Armstrong			hdmi_connector_in: endpoint {
53b0be9616SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
54b0be9616SNeil Armstrong			};
55b0be9616SNeil Armstrong		};
56b0be9616SNeil Armstrong	};
57b0be9616SNeil Armstrong
5845380009SGuillaume La Roque	emmc_pwrseq: emmc-pwrseq {
5945380009SGuillaume La Roque		compatible = "mmc-pwrseq-emmc";
6045380009SGuillaume La Roque		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
6145380009SGuillaume La Roque	};
6245380009SGuillaume La Roque
63b497ad38SNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
64b497ad38SNeil Armstrong		compatible = "mmc-pwrseq-simple";
65b497ad38SNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
66b497ad38SNeil Armstrong		clocks = <&wifi32k>;
67b497ad38SNeil Armstrong		clock-names = "ext_clock";
68b497ad38SNeil Armstrong	};
69b497ad38SNeil Armstrong
70c9206b42SGuillaume La Roque	flash_1v8: regulator-flash_1v8 {
71c9206b42SGuillaume La Roque		compatible = "regulator-fixed";
72c9206b42SGuillaume La Roque		regulator-name = "FLASH_1V8";
73c9206b42SGuillaume La Roque		regulator-min-microvolt = <1800000>;
74c9206b42SGuillaume La Roque		regulator-max-microvolt = <1800000>;
75c9206b42SGuillaume La Roque		vin-supply = <&vcc_3v3>;
76c9206b42SGuillaume La Roque		regulator-always-on;
77c9206b42SGuillaume La Roque	};
78c9206b42SGuillaume La Roque
79c9206b42SGuillaume La Roque	dc_in: regulator-dc_in {
80c9206b42SGuillaume La Roque		compatible = "regulator-fixed";
81c9206b42SGuillaume La Roque		regulator-name = "DC_IN";
82c9206b42SGuillaume La Roque		regulator-min-microvolt = <5000000>;
83c9206b42SGuillaume La Roque		regulator-max-microvolt = <5000000>;
84c9206b42SGuillaume La Roque		regulator-always-on;
85c9206b42SGuillaume La Roque	};
86c9206b42SGuillaume La Roque
87c9206b42SGuillaume La Roque	vcc_1v8: regulator-vcc_1v8 {
88c9206b42SGuillaume La Roque		compatible = "regulator-fixed";
89c9206b42SGuillaume La Roque		regulator-name = "VCC_1V8";
90c9206b42SGuillaume La Roque		regulator-min-microvolt = <1800000>;
91c9206b42SGuillaume La Roque		regulator-max-microvolt = <1800000>;
92c9206b42SGuillaume La Roque		vin-supply = <&vcc_3v3>;
93c9206b42SGuillaume La Roque		regulator-always-on;
94c9206b42SGuillaume La Roque	};
95c9206b42SGuillaume La Roque
96c9206b42SGuillaume La Roque	vcc_3v3: regulator-vcc_3v3 {
97c9206b42SGuillaume La Roque		compatible = "regulator-fixed";
98c9206b42SGuillaume La Roque		regulator-name = "VCC_3V3";
99c9206b42SGuillaume La Roque		regulator-min-microvolt = <3300000>;
100c9206b42SGuillaume La Roque		regulator-max-microvolt = <3300000>;
101c9206b42SGuillaume La Roque		vin-supply = <&vddao_3v3>;
102c9206b42SGuillaume La Roque		regulator-always-on;
103c9206b42SGuillaume La Roque		/* FIXME: actually controlled by VDDCPU_B_EN */
104c9206b42SGuillaume La Roque	};
105c9206b42SGuillaume La Roque
106c9206b42SGuillaume La Roque	vcc_5v: regulator-vcc_5v {
107c9206b42SGuillaume La Roque		compatible = "regulator-fixed";
108c9206b42SGuillaume La Roque		regulator-name = "VCC_5V";
109c9206b42SGuillaume La Roque		regulator-min-microvolt = <5000000>;
110c9206b42SGuillaume La Roque		regulator-max-microvolt = <5000000>;
111c9206b42SGuillaume La Roque		vin-supply = <&dc_in>;
112c9206b42SGuillaume La Roque
113c9206b42SGuillaume La Roque		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
114c9206b42SGuillaume La Roque	};
115c9206b42SGuillaume La Roque
116c9206b42SGuillaume La Roque	vddao_1v8: regulator-vddao_1v8 {
117c9206b42SGuillaume La Roque		compatible = "regulator-fixed";
118c9206b42SGuillaume La Roque		regulator-name = "VDDAO_1V8";
119c9206b42SGuillaume La Roque		regulator-min-microvolt = <1800000>;
120c9206b42SGuillaume La Roque		regulator-max-microvolt = <1800000>;
121c9206b42SGuillaume La Roque		vin-supply = <&vddao_3v3>;
122c9206b42SGuillaume La Roque		regulator-always-on;
123c9206b42SGuillaume La Roque	};
124c9206b42SGuillaume La Roque
125c9206b42SGuillaume La Roque	vddao_3v3: regulator-vddao_3v3 {
126c9206b42SGuillaume La Roque		compatible = "regulator-fixed";
127c9206b42SGuillaume La Roque		regulator-name = "VDDAO_3V3";
128c9206b42SGuillaume La Roque		regulator-min-microvolt = <3300000>;
129c9206b42SGuillaume La Roque		regulator-max-microvolt = <3300000>;
130c9206b42SGuillaume La Roque		vin-supply = <&dc_in>;
131c9206b42SGuillaume La Roque		regulator-always-on;
132c9206b42SGuillaume La Roque	};
133b497ad38SNeil Armstrong
134e9bc0765SNeil Armstrong	vddcpu: regulator-vddcpu {
135e9bc0765SNeil Armstrong		compatible = "pwm-regulator";
136e9bc0765SNeil Armstrong
137e9bc0765SNeil Armstrong		regulator-name = "VDDCPU";
138e9bc0765SNeil Armstrong		regulator-min-microvolt = <721000>;
139e9bc0765SNeil Armstrong		regulator-max-microvolt = <1022000>;
140e9bc0765SNeil Armstrong
14108567511SAnand Moon		pwm-supply = <&dc_in>;
142e9bc0765SNeil Armstrong
143e9bc0765SNeil Armstrong		pwms = <&pwm_AO_cd 1 1250 0>;
144e9bc0765SNeil Armstrong		pwm-dutycycle-range = <100 0>;
145e9bc0765SNeil Armstrong
146e9bc0765SNeil Armstrong		regulator-boot-on;
147e9bc0765SNeil Armstrong		regulator-always-on;
148e9bc0765SNeil Armstrong	};
149e9bc0765SNeil Armstrong
150cd0727aaSNeil Armstrong	sound {
151cd0727aaSNeil Armstrong		compatible = "amlogic,axg-sound-card";
152933b80edSChristian Hewitt		model = "X96-MAX";
153cd0727aaSNeil Armstrong		audio-aux-devs = <&tdmout_b>;
154cd0727aaSNeil Armstrong		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
155cd0727aaSNeil Armstrong				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
156cd0727aaSNeil Armstrong				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
157cd0727aaSNeil Armstrong				"TDM_B Playback", "TDMOUT_B OUT",
158cd0727aaSNeil Armstrong				"SPDIFOUT IN 0", "FRDDR_A OUT 3",
159cd0727aaSNeil Armstrong				"SPDIFOUT IN 1", "FRDDR_B OUT 3",
160cd0727aaSNeil Armstrong				"SPDIFOUT IN 2", "FRDDR_C OUT 3";
161cd0727aaSNeil Armstrong
162cd0727aaSNeil Armstrong		assigned-clocks = <&clkc CLKID_MPLL2>,
163cd0727aaSNeil Armstrong				  <&clkc CLKID_MPLL0>,
164cd0727aaSNeil Armstrong				  <&clkc CLKID_MPLL1>;
165cd0727aaSNeil Armstrong		assigned-clock-parents = <0>, <0>, <0>;
166cd0727aaSNeil Armstrong		assigned-clock-rates = <294912000>,
167cd0727aaSNeil Armstrong				       <270950400>,
168cd0727aaSNeil Armstrong				       <393216000>;
169cd0727aaSNeil Armstrong
170cd0727aaSNeil Armstrong		dai-link-0 {
171cd0727aaSNeil Armstrong			sound-dai = <&frddr_a>;
172cd0727aaSNeil Armstrong		};
173cd0727aaSNeil Armstrong
174cd0727aaSNeil Armstrong		dai-link-1 {
175cd0727aaSNeil Armstrong			sound-dai = <&frddr_b>;
176cd0727aaSNeil Armstrong		};
177cd0727aaSNeil Armstrong
178cd0727aaSNeil Armstrong		dai-link-2 {
179cd0727aaSNeil Armstrong			sound-dai = <&frddr_c>;
180cd0727aaSNeil Armstrong		};
181cd0727aaSNeil Armstrong
182cd0727aaSNeil Armstrong		/* 8ch hdmi interface */
183cd0727aaSNeil Armstrong		dai-link-3 {
184cd0727aaSNeil Armstrong			sound-dai = <&tdmif_b>;
185cd0727aaSNeil Armstrong			dai-format = "i2s";
186cd0727aaSNeil Armstrong			dai-tdm-slot-tx-mask-0 = <1 1>;
187cd0727aaSNeil Armstrong			dai-tdm-slot-tx-mask-1 = <1 1>;
188cd0727aaSNeil Armstrong			dai-tdm-slot-tx-mask-2 = <1 1>;
189cd0727aaSNeil Armstrong			dai-tdm-slot-tx-mask-3 = <1 1>;
190cd0727aaSNeil Armstrong			mclk-fs = <256>;
191cd0727aaSNeil Armstrong
192cd0727aaSNeil Armstrong			codec {
193cd0727aaSNeil Armstrong				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
194cd0727aaSNeil Armstrong			};
195cd0727aaSNeil Armstrong		};
196cd0727aaSNeil Armstrong
197cd0727aaSNeil Armstrong		/* spdif hdmi or toslink interface */
198cd0727aaSNeil Armstrong		dai-link-4 {
199cd0727aaSNeil Armstrong			sound-dai = <&spdifout>;
200cd0727aaSNeil Armstrong
201cd0727aaSNeil Armstrong			codec-0 {
202cd0727aaSNeil Armstrong				sound-dai = <&spdif_dit>;
203cd0727aaSNeil Armstrong			};
204cd0727aaSNeil Armstrong
205cd0727aaSNeil Armstrong			codec-1 {
206cd0727aaSNeil Armstrong				sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
207cd0727aaSNeil Armstrong			};
208cd0727aaSNeil Armstrong		};
209cd0727aaSNeil Armstrong
210cd0727aaSNeil Armstrong		/* spdif hdmi interface */
211cd0727aaSNeil Armstrong		dai-link-5 {
212cd0727aaSNeil Armstrong			sound-dai = <&spdifout_b>;
213cd0727aaSNeil Armstrong
214cd0727aaSNeil Armstrong			codec {
215cd0727aaSNeil Armstrong				sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
216cd0727aaSNeil Armstrong			};
217cd0727aaSNeil Armstrong		};
218cd0727aaSNeil Armstrong
219cd0727aaSNeil Armstrong		/* hdmi glue */
220cd0727aaSNeil Armstrong		dai-link-6 {
221cd0727aaSNeil Armstrong			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
222cd0727aaSNeil Armstrong
223cd0727aaSNeil Armstrong			codec {
224cd0727aaSNeil Armstrong				sound-dai = <&hdmi_tx>;
225cd0727aaSNeil Armstrong			};
226cd0727aaSNeil Armstrong		};
227cd0727aaSNeil Armstrong	};
228cd0727aaSNeil Armstrong
229cd0727aaSNeil Armstrong	wifi32k: wifi32k {
230b497ad38SNeil Armstrong		compatible = "pwm-clock";
231b497ad38SNeil Armstrong		#clock-cells = <0>;
232b497ad38SNeil Armstrong		clock-frequency = <32768>;
233b497ad38SNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
234b497ad38SNeil Armstrong	};
235b497ad38SNeil Armstrong};
236d3aa4ce8SKevin Hilman
237d3aa4ce8SKevin Hilman&arb {
238cd0727aaSNeil Armstrong	status = "okay";
239cd0727aaSNeil Armstrong};
240cd0727aaSNeil Armstrong
241cd0727aaSNeil Armstrong&cec_AO {
242b0be9616SNeil Armstrong	pinctrl-0 = <&cec_ao_a_h_pins>;
243b0be9616SNeil Armstrong	pinctrl-names = "default";
244b0be9616SNeil Armstrong	status = "disabled";
245b0be9616SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
246b0be9616SNeil Armstrong};
247b0be9616SNeil Armstrong
248b0be9616SNeil Armstrong&cecb_AO {
249b0be9616SNeil Armstrong	pinctrl-0 = <&cec_ao_b_h_pins>;
250b0be9616SNeil Armstrong	pinctrl-names = "default";
251b0be9616SNeil Armstrong	status = "okay";
252b0be9616SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
253b0be9616SNeil Armstrong};
254b0be9616SNeil Armstrong
255b0be9616SNeil Armstrong&clkc_audio {
256cd0727aaSNeil Armstrong	status = "okay";
257cd0727aaSNeil Armstrong};
258cd0727aaSNeil Armstrong
259cd0727aaSNeil Armstrong&cpu0 {
260e9bc0765SNeil Armstrong	cpu-supply = <&vddcpu>;
261e9bc0765SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
262e9bc0765SNeil Armstrong	clocks = <&clkc CLKID_CPU_CLK>;
263e9bc0765SNeil Armstrong	clock-latency = <50000>;
264e9bc0765SNeil Armstrong};
265e9bc0765SNeil Armstrong
266e9bc0765SNeil Armstrong&cpu1 {
267e9bc0765SNeil Armstrong	cpu-supply = <&vddcpu>;
268e9bc0765SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
269e9bc0765SNeil Armstrong	clocks = <&clkc CLKID_CPU_CLK>;
270e9bc0765SNeil Armstrong	clock-latency = <50000>;
271e9bc0765SNeil Armstrong};
272e9bc0765SNeil Armstrong
273e9bc0765SNeil Armstrong&cpu2 {
274e9bc0765SNeil Armstrong	cpu-supply = <&vddcpu>;
275e9bc0765SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
276e9bc0765SNeil Armstrong	clocks = <&clkc CLKID_CPU_CLK>;
277e9bc0765SNeil Armstrong	clock-latency = <50000>;
278e9bc0765SNeil Armstrong};
279e9bc0765SNeil Armstrong
280e9bc0765SNeil Armstrong&cpu3 {
281e9bc0765SNeil Armstrong	cpu-supply = <&vddcpu>;
282e9bc0765SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
283e9bc0765SNeil Armstrong	clocks = <&clkc CLKID_CPU_CLK>;
284e9bc0765SNeil Armstrong	clock-latency = <50000>;
285e9bc0765SNeil Armstrong};
286e9bc0765SNeil Armstrong
287e9bc0765SNeil Armstrong&cvbs_vdac_port {
288b0be9616SNeil Armstrong	cvbs_vdac_out: endpoint {
289b0be9616SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
290b0be9616SNeil Armstrong	};
291b0be9616SNeil Armstrong};
292b0be9616SNeil Armstrong
293b0be9616SNeil Armstrong&frddr_a {
294cd0727aaSNeil Armstrong	status = "okay";
295cd0727aaSNeil Armstrong};
296cd0727aaSNeil Armstrong
297cd0727aaSNeil Armstrong&frddr_b {
298cd0727aaSNeil Armstrong	status = "okay";
299cd0727aaSNeil Armstrong};
300cd0727aaSNeil Armstrong
301cd0727aaSNeil Armstrong&frddr_c {
302cd0727aaSNeil Armstrong	status = "okay";
303cd0727aaSNeil Armstrong};
304cd0727aaSNeil Armstrong
305cd0727aaSNeil Armstrong&hdmi_tx {
306b0be9616SNeil Armstrong	status = "okay";
307b0be9616SNeil Armstrong	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
308b0be9616SNeil Armstrong	pinctrl-names = "default";
309b0be9616SNeil Armstrong	hdmi-supply = <&vcc_5v>;
310b0be9616SNeil Armstrong};
311b0be9616SNeil Armstrong
312b0be9616SNeil Armstrong&hdmi_tx_tmds_port {
313b0be9616SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
314b0be9616SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
315b0be9616SNeil Armstrong	};
316b0be9616SNeil Armstrong};
317b0be9616SNeil Armstrong
318b0be9616SNeil Armstrong&ir {
319fff6e9d3SNeil Armstrong	status = "okay";
320fff6e9d3SNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
321fff6e9d3SNeil Armstrong	pinctrl-names = "default";
322fff6e9d3SNeil Armstrong	linux,rc-map-name = "rc-x96max";
3233e14618bSChristian Hewitt};
324fff6e9d3SNeil Armstrong
325fff6e9d3SNeil Armstrong&pwm_AO_cd {
326e9bc0765SNeil Armstrong	pinctrl-0 = <&pwm_ao_d_e_pins>;
327e9bc0765SNeil Armstrong	pinctrl-names = "default";
328e9bc0765SNeil Armstrong	clocks = <&xtal>;
329e9bc0765SNeil Armstrong	clock-names = "clkin1";
330e9bc0765SNeil Armstrong	status = "okay";
331e9bc0765SNeil Armstrong};
332e9bc0765SNeil Armstrong
333e9bc0765SNeil Armstrong&ext_mdio {
334e8e7037cSNeil Armstrong	external_phy: ethernet-phy@0 {
335e8e7037cSNeil Armstrong		/* Realtek RTL8211F (0x001cc916) */
336e8e7037cSNeil Armstrong		reg = <0>;
337e8e7037cSNeil Armstrong		max-speed = <1000>;
338e8e7037cSNeil Armstrong		eee-broken-1000t;
339e8e7037cSNeil Armstrong
340ed5e8f68SMartin Blumenstingl		reset-assert-us = <10000>;
341ed5e8f68SMartin Blumenstingl		reset-deassert-us = <80000>;
3423d07c3b3SStefan Agner		reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
343ed5e8f68SMartin Blumenstingl
34450b617a6SMartin Blumenstingl		interrupt-parent = <&gpio_intc>;
34550b617a6SMartin Blumenstingl		/* MAC_INTR on GPIOZ_14 */
34650b617a6SMartin Blumenstingl		interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>;
347*6387e0aaSHuqiang Qin	};
348e8e7037cSNeil Armstrong};
349e8e7037cSNeil Armstrong
350e8e7037cSNeil Armstrong&ethmac {
351e8e7037cSNeil Armstrong	pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
352e8e7037cSNeil Armstrong	pinctrl-names = "default";
353e8e7037cSNeil Armstrong	status = "okay";
354e8e7037cSNeil Armstrong	phy-mode = "rgmii";
355e8e7037cSNeil Armstrong	phy-handle = <&external_phy>;
356e8e7037cSNeil Armstrong	amlogic,tx-delay-ns = <2>;
357e8e7037cSNeil Armstrong};
358e8e7037cSNeil Armstrong
359e8e7037cSNeil Armstrong&pwm_ef {
360b497ad38SNeil Armstrong	status = "okay";
361b497ad38SNeil Armstrong	pinctrl-0 = <&pwm_e_pins>;
362b497ad38SNeil Armstrong	pinctrl-names = "default";
363b497ad38SNeil Armstrong	clocks = <&xtal>;
364b497ad38SNeil Armstrong	clock-names = "clkin0";
365b497ad38SNeil Armstrong};
366b497ad38SNeil Armstrong
367b497ad38SNeil Armstrong&uart_A {
368c5c9c7cfSNeil Armstrong	status = "okay";
369c5c9c7cfSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
370c5c9c7cfSNeil Armstrong	pinctrl-names = "default";
371c5c9c7cfSNeil Armstrong	uart-has-rtscts;
372c5c9c7cfSNeil Armstrong
373c5c9c7cfSNeil Armstrong	bluetooth {
374c5c9c7cfSNeil Armstrong		compatible = "brcm,bcm43438-bt";
375c5c9c7cfSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
376c5c9c7cfSNeil Armstrong		max-speed = <2000000>;
377e4998f48SNeil Armstrong		clocks = <&wifi32k>;
378524595ecSNeil Armstrong		clock-names = "lpo";
379524595ecSNeil Armstrong	};
380c5c9c7cfSNeil Armstrong};
381c5c9c7cfSNeil Armstrong
382c5c9c7cfSNeil Armstrong&uart_AO {
383d3aa4ce8SKevin Hilman	status = "okay";
384d3aa4ce8SKevin Hilman	pinctrl-0 = <&uart_ao_a_pins>;
3850b7aed33SNeil Armstrong	pinctrl-names = "default";
3860b7aed33SNeil Armstrong};
387d3aa4ce8SKevin Hilman
38845b72126SNeil Armstrong&usb {
38945b72126SNeil Armstrong	status = "okay";
39045b72126SNeil Armstrong	dr_mode = "host";
39145b72126SNeil Armstrong};
39245b72126SNeil Armstrong
39345380009SGuillaume La Roque/* SDIO */
394b497ad38SNeil Armstrong&sd_emmc_a {
395b497ad38SNeil Armstrong	status = "okay";
396b497ad38SNeil Armstrong	pinctrl-0 = <&sdio_pins>;
397b497ad38SNeil Armstrong	pinctrl-1 = <&sdio_clk_gate_pins>;
398b497ad38SNeil Armstrong	pinctrl-names = "default", "clk-gate";
399b497ad38SNeil Armstrong	#address-cells = <1>;
400b497ad38SNeil Armstrong	#size-cells = <0>;
401b497ad38SNeil Armstrong
402b497ad38SNeil Armstrong	bus-width = <4>;
403b497ad38SNeil Armstrong	cap-sd-highspeed;
404b497ad38SNeil Armstrong	sd-uhs-sdr50;
405b497ad38SNeil Armstrong	max-frequency = <100000000>;
406b497ad38SNeil Armstrong
407b497ad38SNeil Armstrong	non-removable;
408b497ad38SNeil Armstrong	disable-wp;
409b497ad38SNeil Armstrong
410b497ad38SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
4119a9ffc69SNeil Armstrong	keep-power-in-suspend;
4129a9ffc69SNeil Armstrong
4139a9ffc69SNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
414b497ad38SNeil Armstrong
415b497ad38SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
416b497ad38SNeil Armstrong	vqmmc-supply = <&vddao_1v8>;
417b497ad38SNeil Armstrong
418b497ad38SNeil Armstrong	brcmf: wifi@1 {
419b497ad38SNeil Armstrong		reg = <1>;
420b497ad38SNeil Armstrong		compatible = "brcm,bcm4329-fmac";
421b497ad38SNeil Armstrong	};
422b497ad38SNeil Armstrong};
423b497ad38SNeil Armstrong
424b497ad38SNeil Armstrong/* SD card */
42545380009SGuillaume La Roque&sd_emmc_b {
42645380009SGuillaume La Roque	status = "okay";
42745380009SGuillaume La Roque	pinctrl-0 = <&sdcard_c_pins>;
42845380009SGuillaume La Roque	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
42945380009SGuillaume La Roque	pinctrl-names = "default", "clk-gate";
43045380009SGuillaume La Roque
43145380009SGuillaume La Roque	bus-width = <4>;
43245380009SGuillaume La Roque	cap-sd-highspeed;
43345380009SGuillaume La Roque	max-frequency = <100000000>;
43445380009SGuillaume La Roque	disable-wp;
43545380009SGuillaume La Roque
43645380009SGuillaume La Roque	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
43745380009SGuillaume La Roque	vmmc-supply = <&vddao_3v3>;
43845380009SGuillaume La Roque	vqmmc-supply = <&vddao_3v3>;
43945380009SGuillaume La Roque};
44045380009SGuillaume La Roque
44145380009SGuillaume La Roque/* eMMC */
44245380009SGuillaume La Roque&sd_emmc_c {
44345380009SGuillaume La Roque	status = "okay";
44445380009SGuillaume La Roque	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
4454d2cb376SNeil Armstrong	pinctrl-1 = <&emmc_clk_gate_pins>;
44645380009SGuillaume La Roque	pinctrl-names = "default", "clk-gate";
44745380009SGuillaume La Roque
44845380009SGuillaume La Roque	bus-width = <8>;
44945380009SGuillaume La Roque	cap-mmc-highspeed;
45045380009SGuillaume La Roque	max-frequency = <100000000>;
45145380009SGuillaume La Roque	non-removable;
45245380009SGuillaume La Roque	disable-wp;
45345380009SGuillaume La Roque
45445380009SGuillaume La Roque	mmc-pwrseq = <&emmc_pwrseq>;
45545380009SGuillaume La Roque	vmmc-supply = <&vcc_3v3>;
45645380009SGuillaume La Roque	vqmmc-supply = <&flash_1v8>;
45745380009SGuillaume La Roque};
45845380009SGuillaume La Roque
459cd0727aaSNeil Armstrong&spdifout {
460cd0727aaSNeil Armstrong	pinctrl-0 = <&spdif_out_h_pins>;
461cd0727aaSNeil Armstrong	pinctrl-names = "default";
462cd0727aaSNeil Armstrong	status = "okay";
463cd0727aaSNeil Armstrong};
464cd0727aaSNeil Armstrong
465cd0727aaSNeil Armstrong&spdifout_b {
466cd0727aaSNeil Armstrong	status = "okay";
467cd0727aaSNeil Armstrong};
468cd0727aaSNeil Armstrong
469cd0727aaSNeil Armstrong&tdmif_b {
470cd0727aaSNeil Armstrong	status = "okay";
471cd0727aaSNeil Armstrong};
472cd0727aaSNeil Armstrong
473cd0727aaSNeil Armstrong&tdmout_b {
474cd0727aaSNeil Armstrong	status = "okay";
475cd0727aaSNeil Armstrong};
476cd0727aaSNeil Armstrong
477cd0727aaSNeil Armstrong&tohdmitx {
478cd0727aaSNeil Armstrong	status = "okay";
479cd0727aaSNeil Armstrong};
480cd0727aaSNeil Armstrong