xref: /linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
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/* Verdin HDMI_1 Audio */
69&aud2htx {
70	status = "okay";
71};
72
73&backlight {
74	power-supply = <&reg_3p3v>;
75};
76
77/* Verdin SPI_1 */
78&ecspi1 {
79	status = "okay";
80};
81
82/* EEPROM on display adapter boards */
83&eeprom_display_adapter {
84	status = "okay";
85};
86
87/* EEPROM on Verdin Development board */
88&eeprom_carrier_board {
89	status = "okay";
90};
91
92&eqos {
93	status = "okay";
94};
95
96&flexcan1 {
97	status = "okay";
98};
99
100&flexcan2 {
101	status = "okay";
102};
103
104/* Verdin QSPI_1 */
105&flexspi {
106	status = "okay";
107};
108
109&gpio4 {
110	pinctrl-names = "default";
111	pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
112};
113
114/* Verdin HDMI_1 */
115&hdmi_pvi {
116	status = "okay";
117};
118
119&hdmi_tx {
120	status = "okay";
121
122	ports {
123		port@1 {
124			hdmi_tx_out: endpoint {
125				remote-endpoint = <&native_hdmi_connector_in>;
126			};
127		};
128	};
129};
130
131&hdmi_tx_phy {
132	status = "okay";
133};
134
135/* Current measurement into module VCC */
136&hwmon {
137	status = "okay";
138};
139
140&hwmon_temp {
141	vs-supply = <&reg_1p8v>;
142	status = "okay";
143};
144
145/* Verdin I2C_2_DSI */
146&i2c2 {
147	status = "okay";
148};
149
150&i2c3 {
151	status = "okay";
152};
153
154/* Verdin I2C_1 */
155&i2c4 {
156	status = "okay";
157
158	/* Audio Codec */
159	wm8904_1a: audio-codec@1a {
160		compatible = "wlf,wm8904";
161		reg = <0x1a>;
162		pinctrl-names = "default";
163		pinctrl-0 = <&pinctrl_sai1>;
164		#sound-dai-cells = <0>;
165		clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
166		clock-names = "mclk";
167		AVDD-supply = <&reg_1p8v>;
168		CPVDD-supply = <&reg_1p8v>;
169		DBVDD-supply = <&reg_1p8v>;
170		DCVDD-supply = <&reg_1p8v>;
171		MICVDD-supply = <&reg_1p8v>;
172	};
173};
174
175/* Verdin I2C_3_HDMI */
176&i2c5 {
177	status = "okay";
178};
179
180&lcdif3 {
181	status = "okay";
182};
183
184/* Verdin PCIE_1 */
185&pcie {
186	vpcie-supply = <&reg_pcie>;
187	status = "okay";
188};
189
190&pcie_phy {
191	status = "okay";
192};
193
194/* Verdin PWM_1 */
195&pwm1 {
196	status = "okay";
197};
198
199/* Verdin PWM_2 */
200&pwm2 {
201	status = "okay";
202};
203
204/* Verdin PWM_3_DSI */
205&pwm3 {
206	status = "okay";
207};
208
209&reg_usdhc2_vmmc {
210	vin-supply = <&reg_3p3v>;
211};
212
213/* We support turning off sleep moci on Dahlia */
214&reg_force_sleep_moci {
215	status = "disabled";
216};
217
218/* Verdin I2S_1 */
219&sai1 {
220	assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
221	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
222	assigned-clock-rates = <24576000>;
223	fsl,sai-mclk-direction-output;
224	status = "okay";
225};
226
227/* Verdin HDMI_1 Audio */
228&sound_hdmi {
229	status = "okay";
230};
231
232/* Verdin UART_1 */
233&uart1 {
234	status = "okay";
235};
236
237/* Verdin UART_2 */
238&uart2 {
239	status = "okay";
240};
241
242/* Verdin UART_3, used as the Linux Console */
243&uart3 {
244	status = "okay";
245};
246
247/* Verdin USB_1 */
248&usb3_0 {
249	status = "okay";
250};
251
252&usb3_phy0 {
253	status = "okay";
254};
255
256/* Verdin USB_2 */
257&usb3_1 {
258	fsl,permanently-attached;
259	status = "okay";
260};
261
262&usb3_phy1 {
263	status = "okay";
264};
265
266&usb_dwc3_1 {
267	#address-cells = <1>;
268	#size-cells = <0>;
269
270	usb_hub_3_0: usb-hub@1 {
271		compatible = "usb424,5744";
272		reg = <1>;
273		peer-hub = <&usb_hub_2_0>;
274		vdd-supply = <&reg_usb_hub>;
275	};
276
277	usb_hub_2_0: usb-hub@2 {
278		compatible = "usb424,2744";
279		reg = <2>;
280		peer-hub = <&usb_hub_3_0>;
281		vdd-supply = <&reg_usb_hub>;
282	};
283};
284
285/* Verdin SD_1 */
286&usdhc2 {
287	status = "okay";
288};
289