xref: /linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi (revision a3a02a52bcfcbcc4a637d4b68bf1bc391c9fad02)
1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2/*
3 * Copyright 2022 Toradex
4 */
5
6/ {
7	native-hdmi-connector {
8		compatible = "hdmi-connector";
9		label = "X21";
10		type = "a";
11
12		port {
13			native_hdmi_connector_in: endpoint {
14				remote-endpoint = <&hdmi_tx_out>;
15			};
16		};
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 = "verdin-wm8904";
26		simple-audio-card,routing =
27			"Headphone Jack", "HPOUTL",
28			"Headphone Jack", "HPOUTR",
29			"IN2L", "Line In Jack",
30			"IN2R", "Line In Jack",
31			"Headphone Jack", "MICBIAS",
32			"IN1L", "Headphone Jack";
33		simple-audio-card,widgets =
34			"Microphone", "Headphone Jack",
35			"Headphone", "Headphone Jack",
36			"Line", "Line In Jack";
37
38		codec_dai: simple-audio-card,codec {
39			clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
40			sound-dai = <&wm8904_1a>;
41		};
42
43		simple-audio-card,cpu {
44			sound-dai = <&sai1>;
45		};
46	};
47
48	reg_usb_hub: regulator-usb-hub {
49		compatible = "regulator-fixed";
50		enable-active-high;
51		/* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
52		gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
53		regulator-boot-on;
54		regulator-name = "HUB_PWR_EN";
55	};
56
57	reg_pcie: regulator-pcie {
58		compatible = "regulator-fixed";
59		enable-active-high;
60		/* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
61		gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
62		regulator-boot-on;
63		regulator-name = "PCIE_1_PWR_EN";
64		startup-delay-us = <100000>;
65	};
66};
67
68&backlight {
69	power-supply = <&reg_3p3v>;
70};
71
72/* Verdin SPI_1 */
73&ecspi1 {
74	status = "okay";
75};
76
77/* EEPROM on display adapter boards */
78&eeprom_display_adapter {
79	status = "okay";
80};
81
82/* EEPROM on Verdin Development board */
83&eeprom_carrier_board {
84	status = "okay";
85};
86
87&eqos {
88	status = "okay";
89};
90
91&flexcan1 {
92	status = "okay";
93};
94
95&flexcan2 {
96	status = "okay";
97};
98
99/* Verdin QSPI_1 */
100&flexspi {
101	status = "okay";
102};
103
104&gpio4 {
105	pinctrl-names = "default";
106	pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
107};
108
109/* Verdin HDMI_1 */
110&hdmi_pvi {
111	status = "okay";
112};
113
114&hdmi_tx {
115	status = "okay";
116
117	ports {
118		port@1 {
119			hdmi_tx_out: endpoint {
120				remote-endpoint = <&native_hdmi_connector_in>;
121			};
122		};
123	};
124};
125
126&hdmi_tx_phy {
127	status = "okay";
128};
129
130/* Current measurement into module VCC */
131&hwmon {
132	status = "okay";
133};
134
135&hwmon_temp {
136	vs-supply = <&reg_1p8v>;
137	status = "okay";
138};
139
140/* Verdin I2C_2_DSI */
141&i2c2 {
142	status = "okay";
143};
144
145&i2c3 {
146	status = "okay";
147};
148
149/* Verdin I2C_1 */
150&i2c4 {
151	status = "okay";
152
153	/* Audio Codec */
154	wm8904_1a: audio-codec@1a {
155		compatible = "wlf,wm8904";
156		reg = <0x1a>;
157		pinctrl-names = "default";
158		pinctrl-0 = <&pinctrl_sai1>;
159		#sound-dai-cells = <0>;
160		clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
161		clock-names = "mclk";
162		AVDD-supply = <&reg_1p8v>;
163		CPVDD-supply = <&reg_1p8v>;
164		DBVDD-supply = <&reg_1p8v>;
165		DCVDD-supply = <&reg_1p8v>;
166		MICVDD-supply = <&reg_1p8v>;
167	};
168};
169
170/* Verdin I2C_3_HDMI */
171&i2c5 {
172	status = "okay";
173};
174
175&lcdif3 {
176	status = "okay";
177};
178
179/* Verdin PCIE_1 */
180&pcie {
181	vpcie-supply = <&reg_pcie>;
182	status = "okay";
183};
184
185&pcie_phy {
186	status = "okay";
187};
188
189/* Verdin PWM_1 */
190&pwm1 {
191	status = "okay";
192};
193
194/* Verdin PWM_2 */
195&pwm2 {
196	status = "okay";
197};
198
199/* Verdin PWM_3_DSI */
200&pwm3 {
201	status = "okay";
202};
203
204&reg_usdhc2_vmmc {
205	vin-supply = <&reg_3p3v>;
206};
207
208/* We support turning off sleep moci on Dahlia */
209&reg_force_sleep_moci {
210	status = "disabled";
211};
212
213/* Verdin I2S_1 */
214&sai1 {
215	assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
216	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
217	assigned-clock-rates = <24576000>;
218	fsl,sai-mclk-direction-output;
219	status = "okay";
220};
221
222/* Verdin UART_1 */
223&uart1 {
224	status = "okay";
225};
226
227/* Verdin UART_2 */
228&uart2 {
229	status = "okay";
230};
231
232/* Verdin UART_3, used as the Linux Console */
233&uart3 {
234	status = "okay";
235};
236
237/* Verdin USB_1 */
238&usb3_0 {
239	status = "okay";
240};
241
242&usb3_phy0 {
243	status = "okay";
244};
245
246/* Verdin USB_2 */
247&usb3_1 {
248	fsl,permanently-attached;
249	status = "okay";
250};
251
252&usb3_phy1 {
253	status = "okay";
254};
255
256&usb_dwc3_1 {
257	#address-cells = <1>;
258	#size-cells = <0>;
259
260	usb_hub_3_0: usb-hub@1 {
261		compatible = "usb424,5744";
262		reg = <1>;
263		peer-hub = <&usb_hub_2_0>;
264		vdd-supply = <&reg_usb_hub>;
265	};
266
267	usb_hub_2_0: usb-hub@2 {
268		compatible = "usb424,2744";
269		reg = <2>;
270		peer-hub = <&usb_hub_3_0>;
271		vdd-supply = <&reg_usb_hub>;
272	};
273};
274
275/* Verdin SD_1 */
276&usdhc2 {
277	status = "okay";
278};
279