1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2/*
3 * Copyright 2022 Toradex
4 */
5
6/ {
7	reg_eth2phy: regulator-eth2phy {
8		compatible = "regulator-fixed";
9		enable-active-high;
10		gpio = <&gpio_expander_21 4 GPIO_ACTIVE_HIGH>; /* ETH_PWR_EN */
11		off-on-delay-us = <500000>;
12		regulator-max-microvolt = <3300000>;
13		regulator-min-microvolt = <3300000>;
14		regulator-name = "+V3.3_ETH";
15		startup-delay-us = <200000>;
16		vin-supply = <&reg_3p3v>;
17	};
18
19	sound {
20		compatible = "simple-audio-card";
21		simple-audio-card,bitclock-master = <&codec_dai>;
22		simple-audio-card,format = "i2s";
23		simple-audio-card,frame-master = <&codec_dai>;
24		simple-audio-card,mclk-fs = <256>;
25		simple-audio-card,name = "imx8mp-nau8822";
26		simple-audio-card,routing =
27			"Headphones", "LHP",
28			"Headphones", "RHP",
29			"Speaker", "LSPK",
30			"Speaker", "RSPK",
31			"Line Out", "AUXOUT1",
32			"Line Out", "AUXOUT2",
33			"LAUX", "Line In",
34			"RAUX", "Line In",
35			"LMICP", "Mic In",
36			"RMICP", "Mic In";
37		simple-audio-card,widgets =
38			"Headphones", "Headphones",
39			"Line Out", "Line Out",
40			"Speaker", "Speaker",
41			"Microphone", "Mic In",
42			"Line", "Line In";
43
44		codec_dai: simple-audio-card,codec {
45			clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
46			sound-dai = <&nau8822_1a>;
47		};
48
49		simple-audio-card,cpu {
50			sound-dai = <&sai1>;
51		};
52	};
53};
54
55&backlight {
56	power-supply = <&reg_3p3v>;
57};
58
59/* Verdin SPI_1 */
60&ecspi1 {
61	status = "okay";
62};
63
64/* EEPROM on display adapter boards */
65&eeprom_display_adapter {
66	status = "okay";
67};
68
69/* EEPROM on Verdin Development board */
70&eeprom_carrier_board {
71	status = "okay";
72};
73
74&eqos {
75	status = "okay";
76};
77
78&fec {
79	phy-supply = <&reg_eth2phy>;
80	status = "okay";
81};
82
83&flexcan1 {
84	status = "okay";
85};
86
87&flexcan2 {
88	status = "okay";
89};
90
91/* Verdin QSPI_1 */
92&flexspi {
93	status = "okay";
94};
95
96&gpio_expander_21 {
97	status = "okay";
98	vcc-supply = <&reg_1p8v>;
99};
100
101/* Current measurement into module VCC */
102&hwmon {
103	status = "okay";
104};
105
106&hwmon_temp {
107	vs-supply = <&reg_1p8v>;
108	status = "okay";
109};
110
111/* Verdin I2C_2_DSI */
112&i2c2 {
113	status = "okay";
114};
115
116&i2c3 {
117	status = "okay";
118};
119
120/* Verdin I2C_1 */
121&i2c4 {
122	status = "okay";
123
124	/* Audio Codec */
125	nau8822_1a: audio-codec@1a {
126		compatible = "nuvoton,nau8822";
127		reg = <0x1a>;
128		pinctrl-names = "default";
129		pinctrl-0 = <&pinctrl_sai1>;
130		#sound-dai-cells = <0>;
131	};
132};
133
134/* Verdin PCIE_1 */
135&pcie {
136	status = "okay";
137};
138
139&pcie_phy {
140	status = "okay";
141};
142
143/* Verdin PWM_1 */
144&pwm1 {
145	status = "okay";
146};
147
148/* Verdin PWM_2 */
149&pwm2 {
150	status = "okay";
151};
152
153/* Verdin PWM_3_DSI */
154&pwm3 {
155	status = "okay";
156};
157
158&reg_usdhc2_vmmc {
159	vin-supply = <&reg_3p3v>;
160};
161
162/* Verdin I2S_1 */
163&sai1 {
164	assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
165	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
166	assigned-clock-rates = <24576000>;
167	fsl,sai-mclk-direction-output;
168	status = "okay";
169};
170
171/* Verdin UART_1, connector X50 through RS485 transceiver */
172&uart1 {
173	linux,rs485-enabled-at-boot-time;
174	rs485-rts-active-low;
175	rs485-rx-during-tx;
176	status = "okay";
177};
178
179/* Verdin UART_2 */
180&uart2 {
181	status = "okay";
182};
183
184/* Verdin UART_3, used as the Linux Console */
185&uart3 {
186	status = "okay";
187};
188
189/* Verdin USB_1 */
190&usb3_0 {
191	status = "okay";
192};
193
194&usb3_phy0 {
195	status = "okay";
196};
197
198/* Verdin USB_2 */
199&usb3_1 {
200	fsl,permanently-attached;
201	status = "okay";
202};
203
204&usb3_phy1 {
205	status = "okay";
206};
207
208/* Limit frequency on dev board due to long traces and bad signal integrity */
209&usdhc2 {
210	max-frequency = <100000000>;
211	status = "okay";
212};
213