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