xref: /freebsd-src/sys/contrib/device-tree/src/arm64/freescale/imx8mp-verdin-dev.dtsi (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
1d5b0e70fSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2d5b0e70fSEmmanuel Vadot/*
3d5b0e70fSEmmanuel Vadot * Copyright 2022 Toradex
4d5b0e70fSEmmanuel Vadot */
5d5b0e70fSEmmanuel Vadot
6d5b0e70fSEmmanuel Vadot/ {
70e8011faSEmmanuel Vadot	native-hdmi-connector {
80e8011faSEmmanuel Vadot		compatible = "hdmi-connector";
90e8011faSEmmanuel Vadot		label = "X37";
100e8011faSEmmanuel Vadot		type = "a";
110e8011faSEmmanuel Vadot
120e8011faSEmmanuel Vadot		port {
130e8011faSEmmanuel Vadot			native_hdmi_connector_in: endpoint {
140e8011faSEmmanuel Vadot				remote-endpoint = <&hdmi_tx_out>;
150e8011faSEmmanuel Vadot			};
160e8011faSEmmanuel Vadot		};
170e8011faSEmmanuel Vadot	};
180e8011faSEmmanuel Vadot
19d5b0e70fSEmmanuel Vadot	reg_eth2phy: regulator-eth2phy {
20d5b0e70fSEmmanuel Vadot		compatible = "regulator-fixed";
21d5b0e70fSEmmanuel Vadot		enable-active-high;
22d5b0e70fSEmmanuel Vadot		gpio = <&gpio_expander_21 4 GPIO_ACTIVE_HIGH>; /* ETH_PWR_EN */
23cb7aa33aSEmmanuel Vadot		off-on-delay-us = <500000>;
24d5b0e70fSEmmanuel Vadot		regulator-max-microvolt = <3300000>;
25d5b0e70fSEmmanuel Vadot		regulator-min-microvolt = <3300000>;
26d5b0e70fSEmmanuel Vadot		regulator-name = "+V3.3_ETH";
27d5b0e70fSEmmanuel Vadot		startup-delay-us = <200000>;
28d5b0e70fSEmmanuel Vadot		vin-supply = <&reg_3p3v>;
29d5b0e70fSEmmanuel Vadot	};
30aa1a8ff2SEmmanuel Vadot
31aa1a8ff2SEmmanuel Vadot	sound {
32aa1a8ff2SEmmanuel Vadot		compatible = "simple-audio-card";
33aa1a8ff2SEmmanuel Vadot		simple-audio-card,bitclock-master = <&codec_dai>;
34aa1a8ff2SEmmanuel Vadot		simple-audio-card,format = "i2s";
35aa1a8ff2SEmmanuel Vadot		simple-audio-card,frame-master = <&codec_dai>;
36aa1a8ff2SEmmanuel Vadot		simple-audio-card,mclk-fs = <256>;
377d0873ebSEmmanuel Vadot		simple-audio-card,name = "verdin-nau8822";
38aa1a8ff2SEmmanuel Vadot		simple-audio-card,routing =
39aa1a8ff2SEmmanuel Vadot			"Headphones", "LHP",
40aa1a8ff2SEmmanuel Vadot			"Headphones", "RHP",
41aa1a8ff2SEmmanuel Vadot			"Speaker", "LSPK",
42aa1a8ff2SEmmanuel Vadot			"Speaker", "RSPK",
43aa1a8ff2SEmmanuel Vadot			"Line Out", "AUXOUT1",
44aa1a8ff2SEmmanuel Vadot			"Line Out", "AUXOUT2",
45aa1a8ff2SEmmanuel Vadot			"LAUX", "Line In",
46aa1a8ff2SEmmanuel Vadot			"RAUX", "Line In",
47aa1a8ff2SEmmanuel Vadot			"LMICP", "Mic In",
48aa1a8ff2SEmmanuel Vadot			"RMICP", "Mic In";
49aa1a8ff2SEmmanuel Vadot		simple-audio-card,widgets =
50aa1a8ff2SEmmanuel Vadot			"Headphones", "Headphones",
51aa1a8ff2SEmmanuel Vadot			"Line Out", "Line Out",
52aa1a8ff2SEmmanuel Vadot			"Speaker", "Speaker",
53aa1a8ff2SEmmanuel Vadot			"Microphone", "Mic In",
54aa1a8ff2SEmmanuel Vadot			"Line", "Line In";
55aa1a8ff2SEmmanuel Vadot
56aa1a8ff2SEmmanuel Vadot		codec_dai: simple-audio-card,codec {
57aa1a8ff2SEmmanuel Vadot			clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
58aa1a8ff2SEmmanuel Vadot			sound-dai = <&nau8822_1a>;
59aa1a8ff2SEmmanuel Vadot		};
60aa1a8ff2SEmmanuel Vadot
61aa1a8ff2SEmmanuel Vadot		simple-audio-card,cpu {
62aa1a8ff2SEmmanuel Vadot			sound-dai = <&sai1>;
63aa1a8ff2SEmmanuel Vadot		};
64aa1a8ff2SEmmanuel Vadot	};
65d5b0e70fSEmmanuel Vadot};
66d5b0e70fSEmmanuel Vadot
67*b2d2a78aSEmmanuel Vadot/* Verdin HDMI_1 Audio */
68*b2d2a78aSEmmanuel Vadot&aud2htx {
69*b2d2a78aSEmmanuel Vadot	status = "okay";
70*b2d2a78aSEmmanuel Vadot};
71*b2d2a78aSEmmanuel Vadot
72cb7aa33aSEmmanuel Vadot&backlight {
73cb7aa33aSEmmanuel Vadot	power-supply = <&reg_3p3v>;
74cb7aa33aSEmmanuel Vadot};
75cb7aa33aSEmmanuel Vadot
76cb7aa33aSEmmanuel Vadot/* Verdin SPI_1 */
77cb7aa33aSEmmanuel Vadot&ecspi1 {
78cb7aa33aSEmmanuel Vadot	status = "okay";
79cb7aa33aSEmmanuel Vadot};
80cb7aa33aSEmmanuel Vadot
81cb7aa33aSEmmanuel Vadot/* EEPROM on display adapter boards */
82cb7aa33aSEmmanuel Vadot&eeprom_display_adapter {
83cb7aa33aSEmmanuel Vadot	status = "okay";
84cb7aa33aSEmmanuel Vadot};
85cb7aa33aSEmmanuel Vadot
86cb7aa33aSEmmanuel Vadot/* EEPROM on Verdin Development board */
87cb7aa33aSEmmanuel Vadot&eeprom_carrier_board {
88cb7aa33aSEmmanuel Vadot	status = "okay";
89cb7aa33aSEmmanuel Vadot};
90cb7aa33aSEmmanuel Vadot
91cb7aa33aSEmmanuel Vadot&eqos {
92cb7aa33aSEmmanuel Vadot	status = "okay";
93cb7aa33aSEmmanuel Vadot};
94cb7aa33aSEmmanuel Vadot
95d5b0e70fSEmmanuel Vadot&fec {
96d5b0e70fSEmmanuel Vadot	phy-supply = <&reg_eth2phy>;
97d5b0e70fSEmmanuel Vadot	status = "okay";
98d5b0e70fSEmmanuel Vadot};
99d5b0e70fSEmmanuel Vadot
100cb7aa33aSEmmanuel Vadot&flexcan1 {
101cb7aa33aSEmmanuel Vadot	status = "okay";
102cb7aa33aSEmmanuel Vadot};
103cb7aa33aSEmmanuel Vadot
104cb7aa33aSEmmanuel Vadot&flexcan2 {
105cb7aa33aSEmmanuel Vadot	status = "okay";
106cb7aa33aSEmmanuel Vadot};
107cb7aa33aSEmmanuel Vadot
108cb7aa33aSEmmanuel Vadot/* Verdin QSPI_1 */
109cb7aa33aSEmmanuel Vadot&flexspi {
110cb7aa33aSEmmanuel Vadot	status = "okay";
111cb7aa33aSEmmanuel Vadot};
112cb7aa33aSEmmanuel Vadot
1137d0873ebSEmmanuel Vadot&gpio4 {
1147d0873ebSEmmanuel Vadot	pinctrl-names = "default";
1157d0873ebSEmmanuel Vadot	pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
1167d0873ebSEmmanuel Vadot};
1177d0873ebSEmmanuel Vadot
118d5b0e70fSEmmanuel Vadot&gpio_expander_21 {
119d5b0e70fSEmmanuel Vadot	status = "okay";
120d5b0e70fSEmmanuel Vadot	vcc-supply = <&reg_1p8v>;
121d5b0e70fSEmmanuel Vadot};
122d5b0e70fSEmmanuel Vadot
1230e8011faSEmmanuel Vadot/* Verdin HDMI_1 */
1240e8011faSEmmanuel Vadot&hdmi_pvi {
1250e8011faSEmmanuel Vadot	status = "okay";
1260e8011faSEmmanuel Vadot};
1270e8011faSEmmanuel Vadot
1280e8011faSEmmanuel Vadot&hdmi_tx {
1290e8011faSEmmanuel Vadot	status = "okay";
1300e8011faSEmmanuel Vadot
1310e8011faSEmmanuel Vadot	ports {
1320e8011faSEmmanuel Vadot		port@1 {
1330e8011faSEmmanuel Vadot			hdmi_tx_out: endpoint {
1340e8011faSEmmanuel Vadot				remote-endpoint = <&native_hdmi_connector_in>;
1350e8011faSEmmanuel Vadot			};
1360e8011faSEmmanuel Vadot		};
1370e8011faSEmmanuel Vadot	};
1380e8011faSEmmanuel Vadot};
1390e8011faSEmmanuel Vadot
1400e8011faSEmmanuel Vadot&hdmi_tx_phy {
1410e8011faSEmmanuel Vadot	status = "okay";
1420e8011faSEmmanuel Vadot};
1430e8011faSEmmanuel Vadot
144cb7aa33aSEmmanuel Vadot/* Current measurement into module VCC */
145cb7aa33aSEmmanuel Vadot&hwmon {
146cb7aa33aSEmmanuel Vadot	status = "okay";
147cb7aa33aSEmmanuel Vadot};
148cb7aa33aSEmmanuel Vadot
149cb7aa33aSEmmanuel Vadot&hwmon_temp {
150cb7aa33aSEmmanuel Vadot	vs-supply = <&reg_1p8v>;
151cb7aa33aSEmmanuel Vadot	status = "okay";
152cb7aa33aSEmmanuel Vadot};
153cb7aa33aSEmmanuel Vadot
154cb7aa33aSEmmanuel Vadot/* Verdin I2C_2_DSI */
155cb7aa33aSEmmanuel Vadot&i2c2 {
156cb7aa33aSEmmanuel Vadot	status = "okay";
157cb7aa33aSEmmanuel Vadot};
158cb7aa33aSEmmanuel Vadot
159cb7aa33aSEmmanuel Vadot&i2c3 {
160cb7aa33aSEmmanuel Vadot	status = "okay";
161cb7aa33aSEmmanuel Vadot};
162cb7aa33aSEmmanuel Vadot
163cb7aa33aSEmmanuel Vadot/* Verdin I2C_1 */
164cb7aa33aSEmmanuel Vadot&i2c4 {
165cb7aa33aSEmmanuel Vadot	status = "okay";
166cb7aa33aSEmmanuel Vadot
167aa1a8ff2SEmmanuel Vadot	/* Audio Codec */
168aa1a8ff2SEmmanuel Vadot	nau8822_1a: audio-codec@1a {
169aa1a8ff2SEmmanuel Vadot		compatible = "nuvoton,nau8822";
170aa1a8ff2SEmmanuel Vadot		reg = <0x1a>;
171aa1a8ff2SEmmanuel Vadot		pinctrl-names = "default";
172aa1a8ff2SEmmanuel Vadot		pinctrl-0 = <&pinctrl_sai1>;
173aa1a8ff2SEmmanuel Vadot		#sound-dai-cells = <0>;
174aa1a8ff2SEmmanuel Vadot	};
175cb7aa33aSEmmanuel Vadot};
176cb7aa33aSEmmanuel Vadot
1777d0873ebSEmmanuel Vadot/* Verdin I2C_3_HDMI */
1787d0873ebSEmmanuel Vadot&i2c5 {
1797d0873ebSEmmanuel Vadot	status = "okay";
1807d0873ebSEmmanuel Vadot};
1817d0873ebSEmmanuel Vadot
1820e8011faSEmmanuel Vadot&lcdif3 {
1830e8011faSEmmanuel Vadot	status = "okay";
1840e8011faSEmmanuel Vadot};
1850e8011faSEmmanuel Vadot
186fac71e4eSEmmanuel Vadot/* Verdin PCIE_1 */
187fac71e4eSEmmanuel Vadot&pcie {
188fac71e4eSEmmanuel Vadot	status = "okay";
189fac71e4eSEmmanuel Vadot};
190fac71e4eSEmmanuel Vadot
191fac71e4eSEmmanuel Vadot&pcie_phy {
192fac71e4eSEmmanuel Vadot	status = "okay";
193fac71e4eSEmmanuel Vadot};
194cb7aa33aSEmmanuel Vadot
195cb7aa33aSEmmanuel Vadot/* Verdin PWM_1 */
196cb7aa33aSEmmanuel Vadot&pwm1 {
197cb7aa33aSEmmanuel Vadot	status = "okay";
198cb7aa33aSEmmanuel Vadot};
199cb7aa33aSEmmanuel Vadot
200cb7aa33aSEmmanuel Vadot/* Verdin PWM_2 */
201cb7aa33aSEmmanuel Vadot&pwm2 {
202cb7aa33aSEmmanuel Vadot	status = "okay";
203cb7aa33aSEmmanuel Vadot};
204cb7aa33aSEmmanuel Vadot
205cb7aa33aSEmmanuel Vadot/* Verdin PWM_3_DSI */
206cb7aa33aSEmmanuel Vadot&pwm3 {
207cb7aa33aSEmmanuel Vadot	status = "okay";
208cb7aa33aSEmmanuel Vadot};
209cb7aa33aSEmmanuel Vadot
210cb7aa33aSEmmanuel Vadot&reg_usdhc2_vmmc {
211cb7aa33aSEmmanuel Vadot	vin-supply = <&reg_3p3v>;
212cb7aa33aSEmmanuel Vadot};
213cb7aa33aSEmmanuel Vadot
214aa1a8ff2SEmmanuel Vadot/* Verdin I2S_1 */
215aa1a8ff2SEmmanuel Vadot&sai1 {
216aa1a8ff2SEmmanuel Vadot	assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
217aa1a8ff2SEmmanuel Vadot	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
218aa1a8ff2SEmmanuel Vadot	assigned-clock-rates = <24576000>;
219aa1a8ff2SEmmanuel Vadot	fsl,sai-mclk-direction-output;
220aa1a8ff2SEmmanuel Vadot	status = "okay";
221aa1a8ff2SEmmanuel Vadot};
222d5b0e70fSEmmanuel Vadot
223*b2d2a78aSEmmanuel Vadot/* Verdin HDMI_1 Audio */
224*b2d2a78aSEmmanuel Vadot&sound_hdmi {
225*b2d2a78aSEmmanuel Vadot	status = "okay";
226*b2d2a78aSEmmanuel Vadot};
227*b2d2a78aSEmmanuel Vadot
228d5b0e70fSEmmanuel Vadot/* Verdin UART_1, connector X50 through RS485 transceiver */
229d5b0e70fSEmmanuel Vadot&uart1 {
230d5b0e70fSEmmanuel Vadot	linux,rs485-enabled-at-boot-time;
231d5b0e70fSEmmanuel Vadot	rs485-rts-active-low;
232d5b0e70fSEmmanuel Vadot	rs485-rx-during-tx;
233cb7aa33aSEmmanuel Vadot	status = "okay";
234cb7aa33aSEmmanuel Vadot};
235cb7aa33aSEmmanuel Vadot
236cb7aa33aSEmmanuel Vadot/* Verdin UART_2 */
237cb7aa33aSEmmanuel Vadot&uart2 {
238cb7aa33aSEmmanuel Vadot	status = "okay";
239cb7aa33aSEmmanuel Vadot};
240cb7aa33aSEmmanuel Vadot
241cb7aa33aSEmmanuel Vadot/* Verdin UART_3, used as the Linux Console */
242cb7aa33aSEmmanuel Vadot&uart3 {
243cb7aa33aSEmmanuel Vadot	status = "okay";
244cb7aa33aSEmmanuel Vadot};
245cb7aa33aSEmmanuel Vadot
246cb7aa33aSEmmanuel Vadot/* Verdin USB_1 */
247cb7aa33aSEmmanuel Vadot&usb3_0 {
248cb7aa33aSEmmanuel Vadot	status = "okay";
249cb7aa33aSEmmanuel Vadot};
250cb7aa33aSEmmanuel Vadot
251cb7aa33aSEmmanuel Vadot&usb3_phy0 {
252cb7aa33aSEmmanuel Vadot	status = "okay";
253cb7aa33aSEmmanuel Vadot};
254cb7aa33aSEmmanuel Vadot
255cb7aa33aSEmmanuel Vadot/* Verdin USB_2 */
256cb7aa33aSEmmanuel Vadot&usb3_1 {
257cb7aa33aSEmmanuel Vadot	fsl,permanently-attached;
258cb7aa33aSEmmanuel Vadot	status = "okay";
259cb7aa33aSEmmanuel Vadot};
260cb7aa33aSEmmanuel Vadot
261cb7aa33aSEmmanuel Vadot&usb3_phy1 {
262cb7aa33aSEmmanuel Vadot	status = "okay";
263d5b0e70fSEmmanuel Vadot};
264d5b0e70fSEmmanuel Vadot
265d5b0e70fSEmmanuel Vadot/* Limit frequency on dev board due to long traces and bad signal integrity */
266d5b0e70fSEmmanuel Vadot&usdhc2 {
267d5b0e70fSEmmanuel Vadot	max-frequency = <100000000>;
268cb7aa33aSEmmanuel Vadot	status = "okay";
269d5b0e70fSEmmanuel Vadot};
270