xref: /freebsd-src/sys/contrib/device-tree/src/arm64/amlogic/meson-sm1-sei610.dts (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
1c66ec88fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2c66ec88fSEmmanuel Vadot/*
3c66ec88fSEmmanuel Vadot * Copyright (c) 2019 BayLibre SAS. All rights reserved.
4c66ec88fSEmmanuel Vadot */
5c66ec88fSEmmanuel Vadot
6c66ec88fSEmmanuel Vadot/dts-v1/;
7c66ec88fSEmmanuel Vadot
8c66ec88fSEmmanuel Vadot#include "meson-sm1.dtsi"
9c66ec88fSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
10c66ec88fSEmmanuel Vadot#include <dt-bindings/input/input.h>
11c66ec88fSEmmanuel Vadot#include <dt-bindings/gpio/meson-g12a-gpio.h>
12c66ec88fSEmmanuel Vadot#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
13c66ec88fSEmmanuel Vadot
14c66ec88fSEmmanuel Vadot/ {
15c66ec88fSEmmanuel Vadot	compatible = "seirobotics,sei610", "amlogic,sm1";
16c66ec88fSEmmanuel Vadot	model = "SEI Robotics SEI610";
17c66ec88fSEmmanuel Vadot
18c66ec88fSEmmanuel Vadot	aliases {
19c66ec88fSEmmanuel Vadot		serial0 = &uart_AO;
20c66ec88fSEmmanuel Vadot		ethernet0 = &ethmac;
21c66ec88fSEmmanuel Vadot	};
22c66ec88fSEmmanuel Vadot
23c66ec88fSEmmanuel Vadot	mono_dac: audio-codec-0 {
24c66ec88fSEmmanuel Vadot		compatible = "maxim,max98357a";
25c66ec88fSEmmanuel Vadot		#sound-dai-cells = <0>;
26c66ec88fSEmmanuel Vadot		sound-name-prefix = "U16";
27c66ec88fSEmmanuel Vadot		sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
28c66ec88fSEmmanuel Vadot	};
29c66ec88fSEmmanuel Vadot
30c66ec88fSEmmanuel Vadot	dmics: audio-codec-1 {
31c66ec88fSEmmanuel Vadot		#sound-dai-cells = <0>;
32c66ec88fSEmmanuel Vadot		compatible = "dmic-codec";
33c66ec88fSEmmanuel Vadot		num-channels = <2>;
34c66ec88fSEmmanuel Vadot		wakeup-delay-ms = <50>;
35c66ec88fSEmmanuel Vadot		sound-name-prefix = "MIC";
36c66ec88fSEmmanuel Vadot	};
37c66ec88fSEmmanuel Vadot
38c66ec88fSEmmanuel Vadot	chosen {
39c66ec88fSEmmanuel Vadot		stdout-path = "serial0:115200n8";
40c66ec88fSEmmanuel Vadot	};
41c66ec88fSEmmanuel Vadot
42c66ec88fSEmmanuel Vadot	emmc_pwrseq: emmc-pwrseq {
43c66ec88fSEmmanuel Vadot		compatible = "mmc-pwrseq-emmc";
44c66ec88fSEmmanuel Vadot		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
45c66ec88fSEmmanuel Vadot	};
46c66ec88fSEmmanuel Vadot
47c66ec88fSEmmanuel Vadot	gpio-keys {
48c66ec88fSEmmanuel Vadot		compatible = "gpio-keys";
49c66ec88fSEmmanuel Vadot
50b97ee269SEmmanuel Vadot		key-1 {
51c66ec88fSEmmanuel Vadot			label = "A";
52c66ec88fSEmmanuel Vadot			linux,code = <BTN_0>;
53c66ec88fSEmmanuel Vadot			gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>;
54c66ec88fSEmmanuel Vadot			interrupt-parent = <&gpio_intc>;
55aa1a8ff2SEmmanuel Vadot			interrupts = <IRQID_GPIOH_6 IRQ_TYPE_EDGE_BOTH>;
56c66ec88fSEmmanuel Vadot		};
57c66ec88fSEmmanuel Vadot
58b97ee269SEmmanuel Vadot		key-2 {
59c66ec88fSEmmanuel Vadot			label = "B";
60c66ec88fSEmmanuel Vadot			linux,code = <BTN_1>;
61c66ec88fSEmmanuel Vadot			gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>;
62c66ec88fSEmmanuel Vadot			interrupt-parent = <&gpio_intc>;
63aa1a8ff2SEmmanuel Vadot			interrupts = <IRQID_GPIOH_7 IRQ_TYPE_EDGE_BOTH>;
64c66ec88fSEmmanuel Vadot		};
65c66ec88fSEmmanuel Vadot
66b97ee269SEmmanuel Vadot		key-3 {
67c66ec88fSEmmanuel Vadot			label = "C";
68c66ec88fSEmmanuel Vadot			linux,code = <BTN_2>;
69c66ec88fSEmmanuel Vadot			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
70c66ec88fSEmmanuel Vadot			interrupt-parent = <&gpio_intc>;
71aa1a8ff2SEmmanuel Vadot			interrupts = <IRQID_GPIOAO_2 IRQ_TYPE_EDGE_BOTH>;
72c66ec88fSEmmanuel Vadot		};
73c66ec88fSEmmanuel Vadot
74b97ee269SEmmanuel Vadot		key-mic-mute {
75c66ec88fSEmmanuel Vadot			label = "MicMute";
76c66ec88fSEmmanuel Vadot			linux,code = <SW_MUTE_DEVICE>;
77c66ec88fSEmmanuel Vadot			linux,input-type = <EV_SW>;
78c66ec88fSEmmanuel Vadot			gpios = <&gpio_ao GPIOE_2 GPIO_ACTIVE_LOW>;
79c66ec88fSEmmanuel Vadot			interrupt-parent = <&gpio_intc>;
80aa1a8ff2SEmmanuel Vadot			interrupts = <IRQID_GPIOE_2 IRQ_TYPE_EDGE_BOTH>;
81c66ec88fSEmmanuel Vadot		};
82c66ec88fSEmmanuel Vadot
83b97ee269SEmmanuel Vadot		key-power {
84c66ec88fSEmmanuel Vadot			label = "PowerKey";
85c66ec88fSEmmanuel Vadot			linux,code = <KEY_POWER>;
86c66ec88fSEmmanuel Vadot			gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
87c66ec88fSEmmanuel Vadot			interrupt-parent = <&gpio_intc>;
88aa1a8ff2SEmmanuel Vadot			interrupts = <IRQID_GPIOAO_3 IRQ_TYPE_EDGE_BOTH>;
89c66ec88fSEmmanuel Vadot		};
90c66ec88fSEmmanuel Vadot	};
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadot	hdmi-connector {
93c66ec88fSEmmanuel Vadot		compatible = "hdmi-connector";
94c66ec88fSEmmanuel Vadot		type = "a";
95c66ec88fSEmmanuel Vadot
96c66ec88fSEmmanuel Vadot		port {
97c66ec88fSEmmanuel Vadot			hdmi_connector_in: endpoint {
98c66ec88fSEmmanuel Vadot				remote-endpoint = <&hdmi_tx_tmds_out>;
99c66ec88fSEmmanuel Vadot			};
100c66ec88fSEmmanuel Vadot		};
101c66ec88fSEmmanuel Vadot	};
102c66ec88fSEmmanuel Vadot
1035def4c47SEmmanuel Vadot	led-controller-1 {
104c66ec88fSEmmanuel Vadot		compatible = "gpio-leds";
105c66ec88fSEmmanuel Vadot
1065def4c47SEmmanuel Vadot		led-1 {
107c66ec88fSEmmanuel Vadot			label = "sei610:blue:bt";
108c66ec88fSEmmanuel Vadot			gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
109c66ec88fSEmmanuel Vadot			default-state = "off";
110c66ec88fSEmmanuel Vadot		};
111c66ec88fSEmmanuel Vadot	};
112c66ec88fSEmmanuel Vadot
1135def4c47SEmmanuel Vadot	led-controller-2 {
114c66ec88fSEmmanuel Vadot		compatible = "pwm-leds";
115c66ec88fSEmmanuel Vadot
1165def4c47SEmmanuel Vadot		led-2 {
117c66ec88fSEmmanuel Vadot			label = "sei610:red:power";
118c66ec88fSEmmanuel Vadot			pwms = <&pwm_AO_ab 0 30518 0>;
119c66ec88fSEmmanuel Vadot			max-brightness = <255>;
120c66ec88fSEmmanuel Vadot			linux,default-trigger = "default-on";
121c66ec88fSEmmanuel Vadot			active-low;
122c66ec88fSEmmanuel Vadot		};
123c66ec88fSEmmanuel Vadot	};
124c66ec88fSEmmanuel Vadot
125c66ec88fSEmmanuel Vadot	memory@0 {
126c66ec88fSEmmanuel Vadot		device_type = "memory";
127c66ec88fSEmmanuel Vadot		reg = <0x0 0x0 0x0 0x40000000>;
128c66ec88fSEmmanuel Vadot	};
129c66ec88fSEmmanuel Vadot
13001950c46SEmmanuel Vadot	ao_5v: regulator-ao-5v {
131c66ec88fSEmmanuel Vadot		compatible = "regulator-fixed";
132c66ec88fSEmmanuel Vadot		regulator-name = "AO_5V";
133c66ec88fSEmmanuel Vadot		regulator-min-microvolt = <5000000>;
134c66ec88fSEmmanuel Vadot		regulator-max-microvolt = <5000000>;
135c66ec88fSEmmanuel Vadot		vin-supply = <&dc_in>;
136c66ec88fSEmmanuel Vadot		regulator-always-on;
137c66ec88fSEmmanuel Vadot	};
138c66ec88fSEmmanuel Vadot
13901950c46SEmmanuel Vadot	dc_in: regulator-dc-in {
140c66ec88fSEmmanuel Vadot		compatible = "regulator-fixed";
141c66ec88fSEmmanuel Vadot		regulator-name = "DC_IN";
142c66ec88fSEmmanuel Vadot		regulator-min-microvolt = <5000000>;
143c66ec88fSEmmanuel Vadot		regulator-max-microvolt = <5000000>;
144c66ec88fSEmmanuel Vadot		regulator-always-on;
145c66ec88fSEmmanuel Vadot	};
146c66ec88fSEmmanuel Vadot
14701950c46SEmmanuel Vadot	emmc_1v8: regulator-emmc-1v8 {
148c66ec88fSEmmanuel Vadot		compatible = "regulator-fixed";
149c66ec88fSEmmanuel Vadot		regulator-name = "EMMC_1V8";
150c66ec88fSEmmanuel Vadot		regulator-min-microvolt = <1800000>;
151c66ec88fSEmmanuel Vadot		regulator-max-microvolt = <1800000>;
152c66ec88fSEmmanuel Vadot		vin-supply = <&vddao_3v3>;
153c66ec88fSEmmanuel Vadot		regulator-always-on;
154c66ec88fSEmmanuel Vadot	};
155c66ec88fSEmmanuel Vadot
15601950c46SEmmanuel Vadot	vddao_3v3: regulator-vddao-3v3 {
157c66ec88fSEmmanuel Vadot		compatible = "regulator-fixed";
158c66ec88fSEmmanuel Vadot		regulator-name = "VDDAO_3V3";
159c66ec88fSEmmanuel Vadot		regulator-min-microvolt = <3300000>;
160c66ec88fSEmmanuel Vadot		regulator-max-microvolt = <3300000>;
161c66ec88fSEmmanuel Vadot		vin-supply = <&dc_in>;
162c66ec88fSEmmanuel Vadot		regulator-always-on;
163c66ec88fSEmmanuel Vadot	};
164c66ec88fSEmmanuel Vadot
165c66ec88fSEmmanuel Vadot	/* Used by Tuner, RGB Led & IR Emitter LED array */
16601950c46SEmmanuel Vadot	vddao_3v3_t: regulator-vddao-3v3-t {
167c66ec88fSEmmanuel Vadot		compatible = "regulator-fixed";
168c66ec88fSEmmanuel Vadot		regulator-name = "VDDAO_3V3_T";
169c66ec88fSEmmanuel Vadot		regulator-min-microvolt = <3300000>;
170c66ec88fSEmmanuel Vadot		regulator-max-microvolt = <3300000>;
171c66ec88fSEmmanuel Vadot		vin-supply = <&vddao_3v3>;
172c66ec88fSEmmanuel Vadot		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
173c66ec88fSEmmanuel Vadot		regulator-always-on;
174c66ec88fSEmmanuel Vadot	};
175c66ec88fSEmmanuel Vadot
176c66ec88fSEmmanuel Vadot	vddcpu: regulator-vddcpu {
177c66ec88fSEmmanuel Vadot		/*
178c66ec88fSEmmanuel Vadot		 * SY8120B1ABC DC/DC Regulator.
179c66ec88fSEmmanuel Vadot		 */
180c66ec88fSEmmanuel Vadot		compatible = "pwm-regulator";
181c66ec88fSEmmanuel Vadot
182c66ec88fSEmmanuel Vadot		regulator-name = "VDDCPU";
183c66ec88fSEmmanuel Vadot		regulator-min-microvolt = <690000>;
184c66ec88fSEmmanuel Vadot		regulator-max-microvolt = <1050000>;
185c66ec88fSEmmanuel Vadot
1868cc087a1SEmmanuel Vadot		pwm-supply = <&dc_in>;
187c66ec88fSEmmanuel Vadot
188c66ec88fSEmmanuel Vadot		pwms = <&pwm_AO_cd 1 1500 0>;
189c66ec88fSEmmanuel Vadot		pwm-dutycycle-range = <100 0>;
190c66ec88fSEmmanuel Vadot
191c66ec88fSEmmanuel Vadot		regulator-boot-on;
192c66ec88fSEmmanuel Vadot		regulator-always-on;
193c66ec88fSEmmanuel Vadot	};
194c66ec88fSEmmanuel Vadot
19501950c46SEmmanuel Vadot	vddio_ao1v8: regulator-vddio-ao1v8 {
196c66ec88fSEmmanuel Vadot		compatible = "regulator-fixed";
197c66ec88fSEmmanuel Vadot		regulator-name = "VDDIO_AO1V8";
198c66ec88fSEmmanuel Vadot		regulator-min-microvolt = <1800000>;
199c66ec88fSEmmanuel Vadot		regulator-max-microvolt = <1800000>;
200c66ec88fSEmmanuel Vadot		vin-supply = <&vddao_3v3>;
201c66ec88fSEmmanuel Vadot		regulator-always-on;
202c66ec88fSEmmanuel Vadot	};
203c66ec88fSEmmanuel Vadot
204c66ec88fSEmmanuel Vadot	sdio_pwrseq: sdio-pwrseq {
205c66ec88fSEmmanuel Vadot		compatible = "mmc-pwrseq-simple";
206c66ec88fSEmmanuel Vadot		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
207c66ec88fSEmmanuel Vadot		clocks = <&wifi32k>;
208c66ec88fSEmmanuel Vadot		clock-names = "ext_clock";
209c66ec88fSEmmanuel Vadot	};
210c66ec88fSEmmanuel Vadot
211c66ec88fSEmmanuel Vadot	sound {
212c66ec88fSEmmanuel Vadot		compatible = "amlogic,axg-sound-card";
2135def4c47SEmmanuel Vadot		model = "SEI610";
214c66ec88fSEmmanuel Vadot		audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
215c66ec88fSEmmanuel Vadot				 <&tdmin_a>, <&tdmin_b>;
216c66ec88fSEmmanuel Vadot		audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
217c66ec88fSEmmanuel Vadot				"TDMOUT_A IN 1", "FRDDR_B OUT 0",
218c66ec88fSEmmanuel Vadot				"TDMOUT_A IN 2", "FRDDR_C OUT 0",
219c66ec88fSEmmanuel Vadot				"TDM_A Playback", "TDMOUT_A OUT",
220c66ec88fSEmmanuel Vadot				"TDMOUT_B IN 0", "FRDDR_A OUT 1",
221c66ec88fSEmmanuel Vadot				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
222c66ec88fSEmmanuel Vadot				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
223c66ec88fSEmmanuel Vadot				"TDM_B Playback", "TDMOUT_B OUT",
224c66ec88fSEmmanuel Vadot				"TODDR_A IN 4", "PDM Capture",
225c66ec88fSEmmanuel Vadot				"TODDR_B IN 4", "PDM Capture",
226c66ec88fSEmmanuel Vadot				"TODDR_C IN 4", "PDM Capture",
227c66ec88fSEmmanuel Vadot				"TDMIN_A IN 0", "TDM_A Capture",
228c66ec88fSEmmanuel Vadot				"TDMIN_A IN 3", "TDM_A Loopback",
229c66ec88fSEmmanuel Vadot				"TDMIN_B IN 0", "TDM_A Capture",
230c66ec88fSEmmanuel Vadot				"TDMIN_B IN 3", "TDM_A Loopback",
231c66ec88fSEmmanuel Vadot				"TDMIN_A IN 1", "TDM_B Capture",
232c66ec88fSEmmanuel Vadot				"TDMIN_A IN 4", "TDM_B Loopback",
233c66ec88fSEmmanuel Vadot				"TDMIN_B IN 1", "TDM_B Capture",
234c66ec88fSEmmanuel Vadot				"TDMIN_B IN 4", "TDM_B Loopback",
235c66ec88fSEmmanuel Vadot				"TODDR_A IN 0", "TDMIN_A OUT",
236c66ec88fSEmmanuel Vadot				"TODDR_B IN 0", "TDMIN_A OUT",
237c66ec88fSEmmanuel Vadot				"TODDR_C IN 0", "TDMIN_A OUT",
238c66ec88fSEmmanuel Vadot				"TODDR_A IN 1", "TDMIN_B OUT",
239c66ec88fSEmmanuel Vadot				"TODDR_B IN 1", "TDMIN_B OUT",
240c66ec88fSEmmanuel Vadot				"TODDR_C IN 1", "TDMIN_B OUT";
241c66ec88fSEmmanuel Vadot
242*b2d2a78aSEmmanuel Vadot		clocks = <&clkc CLKID_MPLL2>,
243*b2d2a78aSEmmanuel Vadot			 <&clkc CLKID_MPLL0>,
244*b2d2a78aSEmmanuel Vadot			 <&clkc CLKID_MPLL1>;
245*b2d2a78aSEmmanuel Vadot
246c66ec88fSEmmanuel Vadot		assigned-clocks = <&clkc CLKID_MPLL2>,
247c66ec88fSEmmanuel Vadot				  <&clkc CLKID_MPLL0>,
248c66ec88fSEmmanuel Vadot				  <&clkc CLKID_MPLL1>;
249c66ec88fSEmmanuel Vadot		assigned-clock-parents = <0>, <0>, <0>;
250c66ec88fSEmmanuel Vadot		assigned-clock-rates = <294912000>,
251c66ec88fSEmmanuel Vadot				       <270950400>,
252c66ec88fSEmmanuel Vadot				       <393216000>;
253c66ec88fSEmmanuel Vadot
254c66ec88fSEmmanuel Vadot		dai-link-0 {
255c66ec88fSEmmanuel Vadot			sound-dai = <&frddr_a>;
256c66ec88fSEmmanuel Vadot		};
257c66ec88fSEmmanuel Vadot
258c66ec88fSEmmanuel Vadot		dai-link-1 {
259c66ec88fSEmmanuel Vadot			sound-dai = <&frddr_b>;
260c66ec88fSEmmanuel Vadot		};
261c66ec88fSEmmanuel Vadot
262c66ec88fSEmmanuel Vadot		dai-link-2 {
263c66ec88fSEmmanuel Vadot			sound-dai = <&frddr_c>;
264c66ec88fSEmmanuel Vadot		};
265c66ec88fSEmmanuel Vadot
266c66ec88fSEmmanuel Vadot		dai-link-3 {
267c66ec88fSEmmanuel Vadot			sound-dai = <&toddr_a>;
268c66ec88fSEmmanuel Vadot		};
269c66ec88fSEmmanuel Vadot
270c66ec88fSEmmanuel Vadot		dai-link-4 {
271c66ec88fSEmmanuel Vadot			sound-dai = <&toddr_b>;
272c66ec88fSEmmanuel Vadot		};
273c66ec88fSEmmanuel Vadot
274c66ec88fSEmmanuel Vadot		dai-link-5 {
275c66ec88fSEmmanuel Vadot			sound-dai = <&toddr_c>;
276c66ec88fSEmmanuel Vadot		};
277c66ec88fSEmmanuel Vadot
278c66ec88fSEmmanuel Vadot		/* internal speaker interface */
279c66ec88fSEmmanuel Vadot		dai-link-6 {
280c66ec88fSEmmanuel Vadot			sound-dai = <&tdmif_a>;
281c66ec88fSEmmanuel Vadot			dai-format = "i2s";
282c66ec88fSEmmanuel Vadot			dai-tdm-slot-tx-mask-0 = <1 1>;
283c66ec88fSEmmanuel Vadot			mclk-fs = <256>;
284c66ec88fSEmmanuel Vadot
285c66ec88fSEmmanuel Vadot			codec-0 {
286c66ec88fSEmmanuel Vadot				sound-dai = <&mono_dac>;
287c66ec88fSEmmanuel Vadot			};
288c66ec88fSEmmanuel Vadot
289c66ec88fSEmmanuel Vadot			codec-1 {
290c66ec88fSEmmanuel Vadot				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
291c66ec88fSEmmanuel Vadot			};
292c66ec88fSEmmanuel Vadot		};
293c66ec88fSEmmanuel Vadot
294c66ec88fSEmmanuel Vadot		/* 8ch hdmi interface */
295c66ec88fSEmmanuel Vadot		dai-link-7 {
296c66ec88fSEmmanuel Vadot			sound-dai = <&tdmif_b>;
297c66ec88fSEmmanuel Vadot			dai-format = "i2s";
298c66ec88fSEmmanuel Vadot			dai-tdm-slot-tx-mask-0 = <1 1>;
299c66ec88fSEmmanuel Vadot			dai-tdm-slot-tx-mask-1 = <1 1>;
300c66ec88fSEmmanuel Vadot			dai-tdm-slot-tx-mask-2 = <1 1>;
301c66ec88fSEmmanuel Vadot			dai-tdm-slot-tx-mask-3 = <1 1>;
302c66ec88fSEmmanuel Vadot			mclk-fs = <256>;
303c66ec88fSEmmanuel Vadot
304c66ec88fSEmmanuel Vadot			codec {
305c66ec88fSEmmanuel Vadot				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
306c66ec88fSEmmanuel Vadot			};
307c66ec88fSEmmanuel Vadot		};
308c66ec88fSEmmanuel Vadot
309c66ec88fSEmmanuel Vadot		/* internal digital mics */
310c66ec88fSEmmanuel Vadot		dai-link-8 {
311c66ec88fSEmmanuel Vadot			sound-dai = <&pdm>;
312c66ec88fSEmmanuel Vadot
313c66ec88fSEmmanuel Vadot			codec {
314c66ec88fSEmmanuel Vadot				sound-dai = <&dmics>;
315c66ec88fSEmmanuel Vadot			};
316c66ec88fSEmmanuel Vadot		};
317c66ec88fSEmmanuel Vadot
318c66ec88fSEmmanuel Vadot		/* hdmi glue */
319c66ec88fSEmmanuel Vadot		dai-link-9 {
320c66ec88fSEmmanuel Vadot			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
321c66ec88fSEmmanuel Vadot
322c66ec88fSEmmanuel Vadot			codec {
323c66ec88fSEmmanuel Vadot				sound-dai = <&hdmi_tx>;
324c66ec88fSEmmanuel Vadot			};
325c66ec88fSEmmanuel Vadot		};
326c66ec88fSEmmanuel Vadot	};
327c66ec88fSEmmanuel Vadot
328c66ec88fSEmmanuel Vadot	wifi32k: wifi32k {
329c66ec88fSEmmanuel Vadot		compatible = "pwm-clock";
330c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
331c66ec88fSEmmanuel Vadot		clock-frequency = <32768>;
332c66ec88fSEmmanuel Vadot		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
333c66ec88fSEmmanuel Vadot	};
334c66ec88fSEmmanuel Vadot};
335c66ec88fSEmmanuel Vadot
336c66ec88fSEmmanuel Vadot&arb {
337c66ec88fSEmmanuel Vadot	status = "okay";
338c66ec88fSEmmanuel Vadot};
339c66ec88fSEmmanuel Vadot
340c66ec88fSEmmanuel Vadot&cec_AO {
341c66ec88fSEmmanuel Vadot	pinctrl-0 = <&cec_ao_a_h_pins>;
342c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
343c66ec88fSEmmanuel Vadot	status = "disabled";
344c66ec88fSEmmanuel Vadot	hdmi-phandle = <&hdmi_tx>;
345c66ec88fSEmmanuel Vadot};
346c66ec88fSEmmanuel Vadot
347c66ec88fSEmmanuel Vadot&cecb_AO {
348c66ec88fSEmmanuel Vadot	pinctrl-0 = <&cec_ao_b_h_pins>;
349c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
350c66ec88fSEmmanuel Vadot	status = "okay";
351c66ec88fSEmmanuel Vadot	hdmi-phandle = <&hdmi_tx>;
352c66ec88fSEmmanuel Vadot};
353c66ec88fSEmmanuel Vadot
354c66ec88fSEmmanuel Vadot&clkc_audio {
355c66ec88fSEmmanuel Vadot	status = "okay";
356c66ec88fSEmmanuel Vadot};
357c66ec88fSEmmanuel Vadot
358c66ec88fSEmmanuel Vadot&cpu0 {
359c66ec88fSEmmanuel Vadot	cpu-supply = <&vddcpu>;
360c66ec88fSEmmanuel Vadot	operating-points-v2 = <&cpu_opp_table>;
361c66ec88fSEmmanuel Vadot	clocks = <&clkc CLKID_CPU_CLK>;
362c66ec88fSEmmanuel Vadot	clock-latency = <50000>;
363c66ec88fSEmmanuel Vadot};
364c66ec88fSEmmanuel Vadot
365c66ec88fSEmmanuel Vadot&cpu1 {
366c66ec88fSEmmanuel Vadot	cpu-supply = <&vddcpu>;
367c66ec88fSEmmanuel Vadot	operating-points-v2 = <&cpu_opp_table>;
368c66ec88fSEmmanuel Vadot	clocks = <&clkc CLKID_CPU1_CLK>;
369c66ec88fSEmmanuel Vadot	clock-latency = <50000>;
370c66ec88fSEmmanuel Vadot};
371c66ec88fSEmmanuel Vadot
372c66ec88fSEmmanuel Vadot&cpu2 {
373c66ec88fSEmmanuel Vadot	cpu-supply = <&vddcpu>;
374c66ec88fSEmmanuel Vadot	operating-points-v2 = <&cpu_opp_table>;
375c66ec88fSEmmanuel Vadot	clocks = <&clkc CLKID_CPU2_CLK>;
376c66ec88fSEmmanuel Vadot	clock-latency = <50000>;
377c66ec88fSEmmanuel Vadot};
378c66ec88fSEmmanuel Vadot
379c66ec88fSEmmanuel Vadot&cpu3 {
380c66ec88fSEmmanuel Vadot	cpu-supply = <&vddcpu>;
381c66ec88fSEmmanuel Vadot	operating-points-v2 = <&cpu_opp_table>;
382c66ec88fSEmmanuel Vadot	clocks = <&clkc CLKID_CPU3_CLK>;
383c66ec88fSEmmanuel Vadot	clock-latency = <50000>;
384c66ec88fSEmmanuel Vadot};
385c66ec88fSEmmanuel Vadot
386c66ec88fSEmmanuel Vadot&ethmac {
387c66ec88fSEmmanuel Vadot	status = "okay";
388c66ec88fSEmmanuel Vadot	phy-handle = <&internal_ephy>;
389c66ec88fSEmmanuel Vadot	phy-mode = "rmii";
390c66ec88fSEmmanuel Vadot};
391c66ec88fSEmmanuel Vadot
392c66ec88fSEmmanuel Vadot&frddr_a {
393c66ec88fSEmmanuel Vadot	status = "okay";
394c66ec88fSEmmanuel Vadot};
395c66ec88fSEmmanuel Vadot
396c66ec88fSEmmanuel Vadot&frddr_b {
397c66ec88fSEmmanuel Vadot	status = "okay";
398c66ec88fSEmmanuel Vadot};
399c66ec88fSEmmanuel Vadot
400c66ec88fSEmmanuel Vadot&frddr_c {
401c66ec88fSEmmanuel Vadot	status = "okay";
402c66ec88fSEmmanuel Vadot};
403c66ec88fSEmmanuel Vadot
404c66ec88fSEmmanuel Vadot&hdmi_tx {
405c66ec88fSEmmanuel Vadot	status = "okay";
406c66ec88fSEmmanuel Vadot	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
407c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
408c66ec88fSEmmanuel Vadot};
409c66ec88fSEmmanuel Vadot
410c66ec88fSEmmanuel Vadot&hdmi_tx_tmds_port {
411c66ec88fSEmmanuel Vadot	hdmi_tx_tmds_out: endpoint {
412c66ec88fSEmmanuel Vadot		remote-endpoint = <&hdmi_connector_in>;
413c66ec88fSEmmanuel Vadot	};
414c66ec88fSEmmanuel Vadot};
415c66ec88fSEmmanuel Vadot
416c66ec88fSEmmanuel Vadot&i2c3 {
417c66ec88fSEmmanuel Vadot	status = "okay";
418c66ec88fSEmmanuel Vadot	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
419c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
420c66ec88fSEmmanuel Vadot};
421c66ec88fSEmmanuel Vadot
422c66ec88fSEmmanuel Vadot&ir {
423c66ec88fSEmmanuel Vadot	status = "okay";
424c66ec88fSEmmanuel Vadot	pinctrl-0 = <&remote_input_ao_pins>;
425c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
426c66ec88fSEmmanuel Vadot};
427c66ec88fSEmmanuel Vadot
428c66ec88fSEmmanuel Vadot&pdm {
429c66ec88fSEmmanuel Vadot	pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_dclk_z_pins>;
430c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
431c66ec88fSEmmanuel Vadot	status = "okay";
432c66ec88fSEmmanuel Vadot};
433c66ec88fSEmmanuel Vadot
434c66ec88fSEmmanuel Vadot&pwm_AO_ab {
435c66ec88fSEmmanuel Vadot	status = "okay";
436c66ec88fSEmmanuel Vadot	pinctrl-0 = <&pwm_ao_a_pins>;
437c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
438c66ec88fSEmmanuel Vadot	clocks = <&xtal>;
439c66ec88fSEmmanuel Vadot	clock-names = "clkin0";
440c66ec88fSEmmanuel Vadot};
441c66ec88fSEmmanuel Vadot
442c66ec88fSEmmanuel Vadot&pwm_AO_cd {
443c66ec88fSEmmanuel Vadot	pinctrl-0 = <&pwm_ao_d_e_pins>;
444c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
445c66ec88fSEmmanuel Vadot	clocks = <&xtal>;
446c66ec88fSEmmanuel Vadot	clock-names = "clkin1";
447c66ec88fSEmmanuel Vadot	status = "okay";
448c66ec88fSEmmanuel Vadot};
449c66ec88fSEmmanuel Vadot
450c66ec88fSEmmanuel Vadot&pwm_ef {
451c66ec88fSEmmanuel Vadot	status = "okay";
452c66ec88fSEmmanuel Vadot	pinctrl-0 = <&pwm_e_pins>;
453c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
454c66ec88fSEmmanuel Vadot	clocks = <&xtal>;
455c66ec88fSEmmanuel Vadot	clock-names = "clkin0";
456c66ec88fSEmmanuel Vadot};
457c66ec88fSEmmanuel Vadot
458c66ec88fSEmmanuel Vadot&saradc {
459c66ec88fSEmmanuel Vadot	status = "okay";
460c66ec88fSEmmanuel Vadot	vref-supply = <&vddio_ao1v8>;
461c66ec88fSEmmanuel Vadot};
462c66ec88fSEmmanuel Vadot
463c66ec88fSEmmanuel Vadot/* SDIO */
464c66ec88fSEmmanuel Vadot&sd_emmc_a {
465c66ec88fSEmmanuel Vadot	status = "okay";
466c66ec88fSEmmanuel Vadot	pinctrl-0 = <&sdio_pins>;
467c66ec88fSEmmanuel Vadot	pinctrl-1 = <&sdio_clk_gate_pins>;
468c66ec88fSEmmanuel Vadot	pinctrl-names = "default", "clk-gate";
469c66ec88fSEmmanuel Vadot	#address-cells = <1>;
470c66ec88fSEmmanuel Vadot	#size-cells = <0>;
471c66ec88fSEmmanuel Vadot
472c66ec88fSEmmanuel Vadot	bus-width = <4>;
473c66ec88fSEmmanuel Vadot	cap-sd-highspeed;
474c66ec88fSEmmanuel Vadot	sd-uhs-sdr50;
475c66ec88fSEmmanuel Vadot	max-frequency = <100000000>;
476c66ec88fSEmmanuel Vadot
477c66ec88fSEmmanuel Vadot	non-removable;
478c66ec88fSEmmanuel Vadot	disable-wp;
479c66ec88fSEmmanuel Vadot
480c66ec88fSEmmanuel Vadot	/* WiFi firmware requires power to be kept while in suspend */
481c66ec88fSEmmanuel Vadot	keep-power-in-suspend;
482c66ec88fSEmmanuel Vadot
483c66ec88fSEmmanuel Vadot	mmc-pwrseq = <&sdio_pwrseq>;
484c66ec88fSEmmanuel Vadot
485c66ec88fSEmmanuel Vadot	vmmc-supply = <&vddao_3v3>;
486c66ec88fSEmmanuel Vadot	vqmmc-supply = <&vddio_ao1v8>;
487c66ec88fSEmmanuel Vadot
488c66ec88fSEmmanuel Vadot	brcmf: wifi@1 {
489c66ec88fSEmmanuel Vadot		reg = <1>;
490c66ec88fSEmmanuel Vadot		compatible = "brcm,bcm4329-fmac";
491c66ec88fSEmmanuel Vadot	};
492c66ec88fSEmmanuel Vadot};
493c66ec88fSEmmanuel Vadot
494c66ec88fSEmmanuel Vadot/* SD card */
495c66ec88fSEmmanuel Vadot&sd_emmc_b {
496c66ec88fSEmmanuel Vadot	status = "okay";
497c66ec88fSEmmanuel Vadot	pinctrl-0 = <&sdcard_c_pins>;
498c66ec88fSEmmanuel Vadot	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
499c66ec88fSEmmanuel Vadot	pinctrl-names = "default", "clk-gate";
500c66ec88fSEmmanuel Vadot
501c66ec88fSEmmanuel Vadot	bus-width = <4>;
502c66ec88fSEmmanuel Vadot	cap-sd-highspeed;
503c66ec88fSEmmanuel Vadot	max-frequency = <50000000>;
504c66ec88fSEmmanuel Vadot	disable-wp;
505c66ec88fSEmmanuel Vadot
506c66ec88fSEmmanuel Vadot	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
507c66ec88fSEmmanuel Vadot	vmmc-supply = <&vddao_3v3>;
508c66ec88fSEmmanuel Vadot	vqmmc-supply = <&vddao_3v3>;
509c66ec88fSEmmanuel Vadot};
510c66ec88fSEmmanuel Vadot
511c66ec88fSEmmanuel Vadot/* eMMC */
512c66ec88fSEmmanuel Vadot&sd_emmc_c {
513c66ec88fSEmmanuel Vadot	status = "okay";
514c66ec88fSEmmanuel Vadot	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
515c66ec88fSEmmanuel Vadot	pinctrl-1 = <&emmc_clk_gate_pins>;
516c66ec88fSEmmanuel Vadot	pinctrl-names = "default", "clk-gate";
517c66ec88fSEmmanuel Vadot
518c66ec88fSEmmanuel Vadot	bus-width = <8>;
519c66ec88fSEmmanuel Vadot	cap-mmc-highspeed;
520c66ec88fSEmmanuel Vadot	mmc-ddr-1_8v;
521c66ec88fSEmmanuel Vadot	mmc-hs200-1_8v;
522c66ec88fSEmmanuel Vadot	max-frequency = <200000000>;
523c66ec88fSEmmanuel Vadot	non-removable;
524c66ec88fSEmmanuel Vadot	disable-wp;
525c66ec88fSEmmanuel Vadot
526c66ec88fSEmmanuel Vadot	mmc-pwrseq = <&emmc_pwrseq>;
527c66ec88fSEmmanuel Vadot	vmmc-supply = <&vddao_3v3>;
528c66ec88fSEmmanuel Vadot	vqmmc-supply = <&emmc_1v8>;
529c66ec88fSEmmanuel Vadot};
530c66ec88fSEmmanuel Vadot
531c66ec88fSEmmanuel Vadot&tdmif_a {
532c66ec88fSEmmanuel Vadot	pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>;
533c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
534c66ec88fSEmmanuel Vadot	status = "okay";
535c66ec88fSEmmanuel Vadot
536c66ec88fSEmmanuel Vadot	assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>,
537c66ec88fSEmmanuel Vadot			  <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>;
538c66ec88fSEmmanuel Vadot	assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>,
539c66ec88fSEmmanuel Vadot				 <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
540c66ec88fSEmmanuel Vadot	assigned-clock-rates = <0>, <0>;
541c66ec88fSEmmanuel Vadot};
542c66ec88fSEmmanuel Vadot
543c66ec88fSEmmanuel Vadot&tdmif_b {
544c66ec88fSEmmanuel Vadot	status = "okay";
545c66ec88fSEmmanuel Vadot};
546c66ec88fSEmmanuel Vadot
547c66ec88fSEmmanuel Vadot&tdmin_a {
548c66ec88fSEmmanuel Vadot	status = "okay";
549c66ec88fSEmmanuel Vadot};
550c66ec88fSEmmanuel Vadot
551c66ec88fSEmmanuel Vadot&tdmin_b {
552c66ec88fSEmmanuel Vadot	status = "okay";
553c66ec88fSEmmanuel Vadot};
554c66ec88fSEmmanuel Vadot
555c66ec88fSEmmanuel Vadot&tdmout_a {
556c66ec88fSEmmanuel Vadot	status = "okay";
557c66ec88fSEmmanuel Vadot};
558c66ec88fSEmmanuel Vadot
559c66ec88fSEmmanuel Vadot&tdmout_b {
560c66ec88fSEmmanuel Vadot	status = "okay";
561c66ec88fSEmmanuel Vadot};
562c66ec88fSEmmanuel Vadot
563c66ec88fSEmmanuel Vadot&toddr_a {
564c66ec88fSEmmanuel Vadot	status = "okay";
565c66ec88fSEmmanuel Vadot};
566c66ec88fSEmmanuel Vadot
567c66ec88fSEmmanuel Vadot&toddr_b {
568c66ec88fSEmmanuel Vadot	status = "okay";
569c66ec88fSEmmanuel Vadot};
570c66ec88fSEmmanuel Vadot
571c66ec88fSEmmanuel Vadot&toddr_c {
572c66ec88fSEmmanuel Vadot	status = "okay";
573c66ec88fSEmmanuel Vadot};
574c66ec88fSEmmanuel Vadot
575c66ec88fSEmmanuel Vadot&tohdmitx {
576c66ec88fSEmmanuel Vadot	status = "okay";
577c66ec88fSEmmanuel Vadot};
578c66ec88fSEmmanuel Vadot
579c66ec88fSEmmanuel Vadot&uart_A {
580c66ec88fSEmmanuel Vadot	status = "okay";
581c66ec88fSEmmanuel Vadot	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
582c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
583c66ec88fSEmmanuel Vadot	uart-has-rtscts;
584c66ec88fSEmmanuel Vadot
585c66ec88fSEmmanuel Vadot	bluetooth {
586c66ec88fSEmmanuel Vadot		compatible = "brcm,bcm43438-bt";
587c66ec88fSEmmanuel Vadot		interrupt-parent = <&gpio_intc>;
588aa1a8ff2SEmmanuel Vadot		interrupts = <IRQID_GPIOX_18 IRQ_TYPE_LEVEL_HIGH>;
589c66ec88fSEmmanuel Vadot		interrupt-names = "host-wakeup";
590c66ec88fSEmmanuel Vadot		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
591c66ec88fSEmmanuel Vadot		max-speed = <2000000>;
592c66ec88fSEmmanuel Vadot		clocks = <&wifi32k>;
593c66ec88fSEmmanuel Vadot		clock-names = "lpo";
594c66ec88fSEmmanuel Vadot		vbat-supply = <&vddao_3v3>;
595c66ec88fSEmmanuel Vadot		vddio-supply = <&vddio_ao1v8>;
596c66ec88fSEmmanuel Vadot	};
597c66ec88fSEmmanuel Vadot};
598c66ec88fSEmmanuel Vadot
599c66ec88fSEmmanuel Vadot/* Exposed via the on-board USB to Serial FT232RL IC */
600c66ec88fSEmmanuel Vadot&uart_AO {
601c66ec88fSEmmanuel Vadot	status = "okay";
602c66ec88fSEmmanuel Vadot	pinctrl-0 = <&uart_ao_a_pins>;
603c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
604c66ec88fSEmmanuel Vadot};
605c66ec88fSEmmanuel Vadot
606c66ec88fSEmmanuel Vadot&usb {
607c66ec88fSEmmanuel Vadot	status = "okay";
608c66ec88fSEmmanuel Vadot	dr_mode = "otg";
609c66ec88fSEmmanuel Vadot};
610