xref: /freebsd/sys/contrib/device-tree/src/arm64/freescale/imx8mp-toradex-smarc-dev.dts (revision 833e5d42ab135b0238e61c5b3c19b8619677cbfa)
1ae5de77eSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2ae5de77eSEmmanuel Vadot/* Copyright (C) 2025 Toradex */
3ae5de77eSEmmanuel Vadot
4ae5de77eSEmmanuel Vadot/dts-v1/;
5ae5de77eSEmmanuel Vadot
6ae5de77eSEmmanuel Vadot#include <dt-bindings/pwm/pwm.h>
7ae5de77eSEmmanuel Vadot
8ae5de77eSEmmanuel Vadot#include "imx8mp-toradex-smarc.dtsi"
9ae5de77eSEmmanuel Vadot
10ae5de77eSEmmanuel Vadot/ {
11ae5de77eSEmmanuel Vadot	model = "Toradex SMARC iMX8M Plus on Toradex SMARC Development Board";
12ae5de77eSEmmanuel Vadot	compatible = "toradex,smarc-imx8mp-dev",
13ae5de77eSEmmanuel Vadot		     "toradex,smarc-imx8mp",
14ae5de77eSEmmanuel Vadot		     "fsl,imx8mp";
15ae5de77eSEmmanuel Vadot
16ae5de77eSEmmanuel Vadot	hdmi-connector {
17ae5de77eSEmmanuel Vadot		compatible = "hdmi-connector";
18ae5de77eSEmmanuel Vadot		label = "J64";
19ae5de77eSEmmanuel Vadot		type = "a";
20ae5de77eSEmmanuel Vadot
21ae5de77eSEmmanuel Vadot		port {
22ae5de77eSEmmanuel Vadot			native_hdmi_connector_in: endpoint {
23ae5de77eSEmmanuel Vadot				remote-endpoint = <&hdmi_tx_out>;
24ae5de77eSEmmanuel Vadot			};
25ae5de77eSEmmanuel Vadot		};
26ae5de77eSEmmanuel Vadot	};
27ae5de77eSEmmanuel Vadot
28ae5de77eSEmmanuel Vadot	reg_carrier_1p8v: regulator-carrier-1p8v {
29ae5de77eSEmmanuel Vadot		compatible = "regulator-fixed";
30ae5de77eSEmmanuel Vadot		regulator-max-microvolt = <1800000>;
31ae5de77eSEmmanuel Vadot		regulator-min-microvolt = <1800000>;
32ae5de77eSEmmanuel Vadot		regulator-name = "On-carrier 1V8";
33ae5de77eSEmmanuel Vadot	};
34ae5de77eSEmmanuel Vadot
35ae5de77eSEmmanuel Vadot	sound {
36ae5de77eSEmmanuel Vadot		compatible = "simple-audio-card";
37ae5de77eSEmmanuel Vadot		simple-audio-card,bitclock-master = <&codec_dai>;
38ae5de77eSEmmanuel Vadot		simple-audio-card,format = "i2s";
39ae5de77eSEmmanuel Vadot		simple-audio-card,frame-master = <&codec_dai>;
40ae5de77eSEmmanuel Vadot		simple-audio-card,mclk-fs = <256>;
41ae5de77eSEmmanuel Vadot		simple-audio-card,name = "tdx-smarc-wm8904";
42ae5de77eSEmmanuel Vadot		simple-audio-card,routing =
43ae5de77eSEmmanuel Vadot			"Headphone Jack", "HPOUTL",
44ae5de77eSEmmanuel Vadot			"Headphone Jack", "HPOUTR",
45ae5de77eSEmmanuel Vadot			"IN2L", "Line In Jack",
46ae5de77eSEmmanuel Vadot			"IN2R", "Line In Jack",
47ae5de77eSEmmanuel Vadot			"Microphone Jack", "MICBIAS",
48ae5de77eSEmmanuel Vadot			"IN1L", "Microphone Jack";
49ae5de77eSEmmanuel Vadot		simple-audio-card,widgets =
50ae5de77eSEmmanuel Vadot			"Microphone", "Microphone Jack",
51ae5de77eSEmmanuel Vadot			"Headphone", "Headphone Jack",
52ae5de77eSEmmanuel Vadot			"Line", "Line In Jack";
53ae5de77eSEmmanuel Vadot
54ae5de77eSEmmanuel Vadot		codec_dai: simple-audio-card,codec {
55ae5de77eSEmmanuel Vadot			clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
56ae5de77eSEmmanuel Vadot			sound-dai = <&wm8904_1a>;
57ae5de77eSEmmanuel Vadot		};
58ae5de77eSEmmanuel Vadot
59ae5de77eSEmmanuel Vadot		simple-audio-card,cpu {
60ae5de77eSEmmanuel Vadot			sound-dai = <&sai1>;
61ae5de77eSEmmanuel Vadot		};
62ae5de77eSEmmanuel Vadot	};
63ae5de77eSEmmanuel Vadot};
64ae5de77eSEmmanuel Vadot
65ae5de77eSEmmanuel Vadot&aud2htx {
66ae5de77eSEmmanuel Vadot	status = "okay";
67ae5de77eSEmmanuel Vadot};
68ae5de77eSEmmanuel Vadot
69ae5de77eSEmmanuel Vadot/* SMARC SPI0 */
70ae5de77eSEmmanuel Vadot&ecspi1 {
71ae5de77eSEmmanuel Vadot	status = "okay";
72ae5de77eSEmmanuel Vadot};
73ae5de77eSEmmanuel Vadot
74ae5de77eSEmmanuel Vadot/* SMARC GBE0 */
75ae5de77eSEmmanuel Vadot&eqos {
76ae5de77eSEmmanuel Vadot	status = "okay";
77ae5de77eSEmmanuel Vadot};
78ae5de77eSEmmanuel Vadot
79ae5de77eSEmmanuel Vadot/* SMARC GBE1 */
80ae5de77eSEmmanuel Vadot&fec {
81ae5de77eSEmmanuel Vadot	status = "okay";
82ae5de77eSEmmanuel Vadot};
83ae5de77eSEmmanuel Vadot
84ae5de77eSEmmanuel Vadot/* SMARC CAN1 */
85ae5de77eSEmmanuel Vadot&flexcan1 {
86ae5de77eSEmmanuel Vadot	status = "okay";
87ae5de77eSEmmanuel Vadot};
88ae5de77eSEmmanuel Vadot
89ae5de77eSEmmanuel Vadot/* SMARC CAN0 */
90ae5de77eSEmmanuel Vadot&flexcan2 {
91ae5de77eSEmmanuel Vadot	status = "okay";
92ae5de77eSEmmanuel Vadot};
93ae5de77eSEmmanuel Vadot
94ae5de77eSEmmanuel Vadot&gpio1 {
95ae5de77eSEmmanuel Vadot	pinctrl-names = "default";
96ae5de77eSEmmanuel Vadot	pinctrl-0 = <&pinctrl_gpio7>,
97ae5de77eSEmmanuel Vadot		    <&pinctrl_gpio8>,
98ae5de77eSEmmanuel Vadot		    <&pinctrl_gpio9>,
99ae5de77eSEmmanuel Vadot		    <&pinctrl_gpio10>,
100ae5de77eSEmmanuel Vadot		    <&pinctrl_gpio11>,
101ae5de77eSEmmanuel Vadot		    <&pinctrl_gpio12>,
102ae5de77eSEmmanuel Vadot		    <&pinctrl_gpio13>;
103ae5de77eSEmmanuel Vadot};
104ae5de77eSEmmanuel Vadot
105ae5de77eSEmmanuel Vadot&gpio4 {
106ae5de77eSEmmanuel Vadot	pinctrl-names = "default";
107ae5de77eSEmmanuel Vadot	pinctrl-0 = <&pinctrl_gpio4>, <&pinctrl_gpio6>;
108ae5de77eSEmmanuel Vadot};
109ae5de77eSEmmanuel Vadot
110ae5de77eSEmmanuel Vadot&hdmi_pvi {
111ae5de77eSEmmanuel Vadot	status = "okay";
112ae5de77eSEmmanuel Vadot};
113ae5de77eSEmmanuel Vadot
114ae5de77eSEmmanuel Vadot/* SMARC HDMI */
115ae5de77eSEmmanuel Vadot&hdmi_tx {
116ae5de77eSEmmanuel Vadot	status = "okay";
117ae5de77eSEmmanuel Vadot
118ae5de77eSEmmanuel Vadot	ports {
119ae5de77eSEmmanuel Vadot		port@1 {
120ae5de77eSEmmanuel Vadot			hdmi_tx_out: endpoint {
121ae5de77eSEmmanuel Vadot				remote-endpoint = <&native_hdmi_connector_in>;
122ae5de77eSEmmanuel Vadot			};
123ae5de77eSEmmanuel Vadot		};
124ae5de77eSEmmanuel Vadot	};
125ae5de77eSEmmanuel Vadot};
126ae5de77eSEmmanuel Vadot
127ae5de77eSEmmanuel Vadot&hdmi_tx_phy {
128ae5de77eSEmmanuel Vadot	status = "okay";
129ae5de77eSEmmanuel Vadot};
130ae5de77eSEmmanuel Vadot
131ae5de77eSEmmanuel Vadot/* SMARC I2C_LCD */
132ae5de77eSEmmanuel Vadot&i2c2 {
133ae5de77eSEmmanuel Vadot	status = "okay";
134ae5de77eSEmmanuel Vadot
135ae5de77eSEmmanuel Vadot	i2c-mux@70 {
136ae5de77eSEmmanuel Vadot		compatible = "nxp,pca9543";
137ae5de77eSEmmanuel Vadot		reg = <0x70>;
138ae5de77eSEmmanuel Vadot		#address-cells = <1>;
139ae5de77eSEmmanuel Vadot		#size-cells = <0>;
140ae5de77eSEmmanuel Vadot
141ae5de77eSEmmanuel Vadot		/* I2C on DSI Connector Pins 4/6 */
142ae5de77eSEmmanuel Vadot		i2c_dsi_0: i2c@0 {
143ae5de77eSEmmanuel Vadot			reg = <0>;
144ae5de77eSEmmanuel Vadot			#address-cells = <1>;
145ae5de77eSEmmanuel Vadot			#size-cells = <0>;
146ae5de77eSEmmanuel Vadot		};
147ae5de77eSEmmanuel Vadot
148ae5de77eSEmmanuel Vadot		/* I2C on DSI Connector Pins 52/54 */
149ae5de77eSEmmanuel Vadot		i2c_dsi_1: i2c@1 {
150ae5de77eSEmmanuel Vadot			reg = <1>;
151ae5de77eSEmmanuel Vadot			#address-cells = <1>;
152ae5de77eSEmmanuel Vadot			#size-cells = <0>;
153ae5de77eSEmmanuel Vadot		};
154ae5de77eSEmmanuel Vadot	};
155ae5de77eSEmmanuel Vadot};
156ae5de77eSEmmanuel Vadot
157ae5de77eSEmmanuel Vadot/* SMARC I2C_CAM0 */
158ae5de77eSEmmanuel Vadot&i2c3 {
159ae5de77eSEmmanuel Vadot	status = "okay";
160ae5de77eSEmmanuel Vadot};
161ae5de77eSEmmanuel Vadot
162ae5de77eSEmmanuel Vadot/* SMARC I2C_GP */
163ae5de77eSEmmanuel Vadot&i2c4 {
164ae5de77eSEmmanuel Vadot	/* Audio Codec */
165ae5de77eSEmmanuel Vadot	wm8904_1a: audio-codec@1a {
166ae5de77eSEmmanuel Vadot		compatible = "wlf,wm8904";
167ae5de77eSEmmanuel Vadot		reg = <0x1a>;
168ae5de77eSEmmanuel Vadot		pinctrl-names = "default";
169ae5de77eSEmmanuel Vadot		pinctrl-0 = <&pinctrl_sai1>, <&pinctrl_sai1_mclk>;
170ae5de77eSEmmanuel Vadot		#sound-dai-cells = <0>;
171ae5de77eSEmmanuel Vadot		clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
172ae5de77eSEmmanuel Vadot		clock-names = "mclk";
173ae5de77eSEmmanuel Vadot		AVDD-supply = <&reg_carrier_1p8v>;
174ae5de77eSEmmanuel Vadot		CPVDD-supply = <&reg_carrier_1p8v>;
175ae5de77eSEmmanuel Vadot		DBVDD-supply = <&reg_carrier_1p8v>;
176ae5de77eSEmmanuel Vadot		DCVDD-supply = <&reg_carrier_1p8v>;
177ae5de77eSEmmanuel Vadot		MICVDD-supply = <&reg_carrier_1p8v>;
178ae5de77eSEmmanuel Vadot	};
179ae5de77eSEmmanuel Vadot
180ae5de77eSEmmanuel Vadot	/* On-Carrier Temperature Sensor */
181ae5de77eSEmmanuel Vadot	temperature-sensor@4f {
182ae5de77eSEmmanuel Vadot		compatible = "ti,tmp1075";
183ae5de77eSEmmanuel Vadot		reg = <0x4f>;
184ae5de77eSEmmanuel Vadot	};
185ae5de77eSEmmanuel Vadot
186ae5de77eSEmmanuel Vadot	/* On-Carrier EEPROM */
187ae5de77eSEmmanuel Vadot	eeprom@57 {
188ae5de77eSEmmanuel Vadot		compatible = "st,24c02", "atmel,24c02";
189ae5de77eSEmmanuel Vadot		reg = <0x57>;
190ae5de77eSEmmanuel Vadot		pagesize = <16>;
191ae5de77eSEmmanuel Vadot	};
192ae5de77eSEmmanuel Vadot};
193ae5de77eSEmmanuel Vadot
194ae5de77eSEmmanuel Vadot/* SMARC I2C_CAM1 */
195ae5de77eSEmmanuel Vadot&i2c5 {
196ae5de77eSEmmanuel Vadot	status = "okay";
197ae5de77eSEmmanuel Vadot};
198ae5de77eSEmmanuel Vadot
199ae5de77eSEmmanuel Vadot/* SMARC I2C_PM */
200ae5de77eSEmmanuel Vadot&i2c6 {
201ae5de77eSEmmanuel Vadot	clock-frequency = <100000>;
202ae5de77eSEmmanuel Vadot	status = "okay";
203ae5de77eSEmmanuel Vadot
204ae5de77eSEmmanuel Vadot	/* Fan controller */
205ae5de77eSEmmanuel Vadot	fan_controller: fan@18 {
206ae5de77eSEmmanuel Vadot		compatible = "ti,amc6821";
207ae5de77eSEmmanuel Vadot		reg = <0x18>;
208ae5de77eSEmmanuel Vadot		#pwm-cells = <2>;
209ae5de77eSEmmanuel Vadot
210ae5de77eSEmmanuel Vadot		fan {
211*833e5d42SEmmanuel Vadot			cooling-levels = <255>;
212ae5de77eSEmmanuel Vadot			pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>;
213ae5de77eSEmmanuel Vadot		};
214ae5de77eSEmmanuel Vadot	};
215ae5de77eSEmmanuel Vadot
216ae5de77eSEmmanuel Vadot	/* Current measurement into module VDD */
217ae5de77eSEmmanuel Vadot	hwmon@40 {
218ae5de77eSEmmanuel Vadot		compatible = "ti,ina226";
219ae5de77eSEmmanuel Vadot		reg = <0x40>;
220ae5de77eSEmmanuel Vadot		shunt-resistor = <5000>;
221ae5de77eSEmmanuel Vadot	};
222ae5de77eSEmmanuel Vadot};
223ae5de77eSEmmanuel Vadot
224ae5de77eSEmmanuel Vadot&lcdif3 {
225ae5de77eSEmmanuel Vadot	status = "okay";
226ae5de77eSEmmanuel Vadot};
227ae5de77eSEmmanuel Vadot
228ae5de77eSEmmanuel Vadot/* SMARC PCIE_A, M2 Key B */
229ae5de77eSEmmanuel Vadot&pcie {
230ae5de77eSEmmanuel Vadot	status = "okay";
231ae5de77eSEmmanuel Vadot};
232ae5de77eSEmmanuel Vadot
233ae5de77eSEmmanuel Vadot&pcie_phy {
234ae5de77eSEmmanuel Vadot	status = "okay";
235ae5de77eSEmmanuel Vadot};
236ae5de77eSEmmanuel Vadot
237ae5de77eSEmmanuel Vadot/* SMARC LCD1_BKLT_PWM */
238ae5de77eSEmmanuel Vadot&pwm1 {
239ae5de77eSEmmanuel Vadot	status = "okay";
240ae5de77eSEmmanuel Vadot};
241ae5de77eSEmmanuel Vadot
242ae5de77eSEmmanuel Vadot/* SMARC LCD0_BKLT_PWM */
243ae5de77eSEmmanuel Vadot&pwm2 {
244ae5de77eSEmmanuel Vadot	status = "okay";
245ae5de77eSEmmanuel Vadot};
246ae5de77eSEmmanuel Vadot
247ae5de77eSEmmanuel Vadot/* SMARC I2S0 */
248ae5de77eSEmmanuel Vadot&sai1 {
249ae5de77eSEmmanuel Vadot	assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
250ae5de77eSEmmanuel Vadot	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
251ae5de77eSEmmanuel Vadot	assigned-clock-rates = <24576000>;
252ae5de77eSEmmanuel Vadot	fsl,sai-mclk-direction-output;
253ae5de77eSEmmanuel Vadot	status = "okay";
254ae5de77eSEmmanuel Vadot};
255ae5de77eSEmmanuel Vadot
256ae5de77eSEmmanuel Vadot/* SMARC HDMI Audio */
257ae5de77eSEmmanuel Vadot&sound_hdmi {
258ae5de77eSEmmanuel Vadot	status = "okay";
259ae5de77eSEmmanuel Vadot};
260ae5de77eSEmmanuel Vadot
261ae5de77eSEmmanuel Vadot/* SMARC SER0, RS485. Optional M.2 KEY E */
262ae5de77eSEmmanuel Vadot&uart1 {
263ae5de77eSEmmanuel Vadot	linux,rs485-enabled-at-boot-time;
264ae5de77eSEmmanuel Vadot	rs485-rts-active-low;
265ae5de77eSEmmanuel Vadot	rs485-rx-during-tx;
266ae5de77eSEmmanuel Vadot	status = "okay";
267ae5de77eSEmmanuel Vadot};
268ae5de77eSEmmanuel Vadot
269ae5de77eSEmmanuel Vadot/* SMARC SER2 */
270ae5de77eSEmmanuel Vadot&uart2 {
271ae5de77eSEmmanuel Vadot	status = "okay";
272ae5de77eSEmmanuel Vadot};
273ae5de77eSEmmanuel Vadot
274ae5de77eSEmmanuel Vadot/* SMARC SER1, used as the Linux Console */
275ae5de77eSEmmanuel Vadot&uart4 {
276ae5de77eSEmmanuel Vadot	status = "okay";
277ae5de77eSEmmanuel Vadot};
278ae5de77eSEmmanuel Vadot
279ae5de77eSEmmanuel Vadot/* SMARC USB0 */
280ae5de77eSEmmanuel Vadot&usb3_0 {
281ae5de77eSEmmanuel Vadot	status = "okay";
282ae5de77eSEmmanuel Vadot};
283ae5de77eSEmmanuel Vadot
284ae5de77eSEmmanuel Vadot/* SMARC USB1..4 */
285ae5de77eSEmmanuel Vadot&usb3_1 {
286ae5de77eSEmmanuel Vadot	status = "okay";
287ae5de77eSEmmanuel Vadot};
288ae5de77eSEmmanuel Vadot
289ae5de77eSEmmanuel Vadot&usb3_phy0 {
290ae5de77eSEmmanuel Vadot	status = "okay";
291ae5de77eSEmmanuel Vadot};
292ae5de77eSEmmanuel Vadot
293ae5de77eSEmmanuel Vadot&usb3_phy1 {
294ae5de77eSEmmanuel Vadot	status = "okay";
295ae5de77eSEmmanuel Vadot};
296ae5de77eSEmmanuel Vadot
297ae5de77eSEmmanuel Vadot/* SMARC SDIO */
298ae5de77eSEmmanuel Vadot&usdhc2 {
299ae5de77eSEmmanuel Vadot	status = "okay";
300ae5de77eSEmmanuel Vadot};
301