xref: /linux/arch/arm64/boot/dts/freescale/imx95-toradex-smarc-dev.dts (revision 0cac5ce06e524755b3dac1e0a060b05992076d93)
1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2/*
3 * Copyright (C) 2025 Toradex
4 *
5 * https://www.toradex.com/computer-on-modules/smarc-arm-family/nxp-imx95
6 * https://www.toradex.com/products/carrier-board/smarc-development-board-kit
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/pwm/pwm.h>
12#include "imx95-toradex-smarc.dtsi"
13
14/ {
15	model = "Toradex SMARC iMX95 on Toradex SMARC Development Board";
16	compatible = "toradex,smarc-imx95-dev",
17		     "toradex,smarc-imx95",
18		     "fsl,imx95";
19
20	reg_carrier_1p8v: regulator-carrier-1p8v {
21		compatible = "regulator-fixed";
22		regulator-max-microvolt = <1800000>;
23		regulator-min-microvolt = <1800000>;
24		regulator-name = "On-carrier 1V8";
25	};
26
27	sound {
28		compatible = "simple-audio-card";
29		simple-audio-card,bitclock-master = <&codec_dai>;
30		simple-audio-card,format = "i2s";
31		simple-audio-card,frame-master = <&codec_dai>;
32		simple-audio-card,mclk-fs = <256>;
33		simple-audio-card,name = "tdx-smarc-wm8904";
34		simple-audio-card,routing =
35			"Headphone Jack", "HPOUTL",
36			"Headphone Jack", "HPOUTR",
37			"IN2L", "Line In Jack",
38			"IN2R", "Line In Jack",
39			"Microphone Jack", "MICBIAS",
40			"IN1L", "Microphone Jack";
41		simple-audio-card,widgets =
42			"Microphone", "Microphone Jack",
43			"Headphone", "Headphone Jack",
44			"Line", "Line In Jack";
45
46		codec_dai: simple-audio-card,codec {
47			clocks = <&scmi_clk IMX95_CLK_SAI3>;
48			sound-dai = <&wm8904_1a>;
49		};
50
51		simple-audio-card,cpu {
52			sound-dai = <&sai3>;
53		};
54	};
55};
56
57/* SMARC GBE0 */
58&enetc_port0 {
59	status = "okay";
60};
61
62/* SMARC GBE1 */
63&enetc_port1 {
64	status = "okay";
65};
66
67/* SMARC CAN0 */
68&flexcan1 {
69	status = "okay";
70};
71
72/* SMARC CAN1 */
73&flexcan2 {
74	status = "okay";
75};
76
77&gpio2 {
78	pinctrl-names = "default";
79	pinctrl-0 = <&pinctrl_gpio12>, <&pinctrl_gpio13>;
80};
81
82&gpio4 {
83	pinctrl-names = "default";
84	pinctrl-0 = <&pinctrl_gpio10>, <&pinctrl_gpio11>;
85};
86
87&gpio5 {
88	pinctrl-names = "default";
89	pinctrl-0 = <&pinctrl_gpio2>,
90		    <&pinctrl_gpio3>,
91		    <&pinctrl_gpio4>,
92		    <&pinctrl_gpio6>,
93		    <&pinctrl_gpio8>,
94		    <&pinctrl_gpio9>;
95};
96
97/* SMARC I2C_CAM0 */
98&i2c_cam0 {
99	status = "okay";
100};
101
102/* SMARC I2C_CAM1 */
103&i2c_cam1 {
104	status = "okay";
105};
106
107/* SMARC I2C_GP */
108&lpi2c2 {
109	status = "okay";
110
111	wm8904_1a: audio-codec@1a {
112		compatible = "wlf,wm8904";
113		reg = <0x1a>;
114		pinctrl-names = "default";
115		pinctrl-0 = <&pinctrl_sai3>, <&pinctrl_sai3_mclk>;
116		#sound-dai-cells = <0>;
117		clocks = <&scmi_clk IMX95_CLK_SAI3>;
118		clock-names = "mclk";
119		AVDD-supply = <&reg_carrier_1p8v>;
120		CPVDD-supply = <&reg_carrier_1p8v>;
121		DBVDD-supply = <&reg_carrier_1p8v>;
122		DCVDD-supply = <&reg_carrier_1p8v>;
123		MICVDD-supply = <&reg_carrier_1p8v>;
124	};
125
126	temperature-sensor@4f {
127		compatible = "ti,tmp1075";
128		reg = <0x4f>;
129	};
130
131	eeprom@57 {
132		compatible = "st,24c02", "atmel,24c02";
133		reg = <0x57>;
134		pagesize = <16>;
135	};
136
137};
138
139/* SMARC I2C_PM */
140&lpi2c3 {
141	clock-frequency = <100000>;
142	status = "okay";
143
144	fan_controller: fan@18 {
145		compatible = "ti,amc6821";
146		reg = <0x18>;
147		#pwm-cells = <2>;
148
149		fan {
150			cooling-levels = <255>;
151			pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>;
152		};
153	};
154
155	/* Current measurement into module VCC */
156	hwmon@40 {
157		compatible = "ti,ina226";
158		reg = <0x40>;
159		shunt-resistor = <5000>;
160	};
161};
162
163/* SMARC I2C_LCD */
164&lpi2c5 {
165	status = "okay";
166
167	i2c-mux@70 {
168		compatible = "nxp,pca9543";
169		reg = <0x70>;
170		i2c-mux-idle-disconnect;
171		#address-cells = <1>;
172		#size-cells = <0>;
173
174		/* I2C on DSI Connector Pins 4/6 */
175		i2c_dsi_0: i2c@0 {
176			reg = <0>;
177			#address-cells = <1>;
178			#size-cells = <0>;
179		};
180
181		/* I2C on DSI Connector Pins 52/54 */
182		i2c_dsi_1: i2c@1 {
183			reg = <1>;
184			#address-cells = <1>;
185			#size-cells = <0>;
186		};
187	};
188};
189
190/* SMARC SPI0 */
191&lpspi6 {
192	status = "okay";
193};
194
195/* SMARC SER1, used as the Linux Console */
196&lpuart1 {
197	status = "okay";
198};
199
200/* SMARC SER0, RS485 */
201&lpuart2 {
202	linux,rs485-enabled-at-boot-time;
203	rs485-rts-active-low;
204	rs485-rx-during-tx;
205	status = "okay";
206};
207
208/* SMARC SER3, RS232 */
209&lpuart3 {
210	status = "okay";
211};
212
213/* SMARC MDIO, shared between all ethernet ports */
214&netc_emdio {
215	status = "okay";
216
217	ethphy3: ethernet-phy@4 {
218		reg = <4>;
219		pinctrl-names = "default";
220		pinctrl-0 = <&pinctrl_gpio7>;
221		interrupt-parent = <&gpio5>;
222		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
223	};
224};
225
226/* SMARC PCIE_A / M2 Key B */
227&pcie0 {
228	status = "okay";
229};
230
231/* SMARC PCIE_B /  M2 Key E */
232&pcie1 {
233	status = "okay";
234};
235
236/* SMARC I2S0 */
237&sai3 {
238	status = "okay";
239};
240
241/* SMARC LCD0_BKLT_PWM */
242&tpm3 {
243	status = "okay";
244};
245
246/* SMARC LCD1_BKLT_PWM */
247&tpm4 {
248	status = "okay";
249};
250
251/* SMARC GPIO5 as PWM */
252&tpm5 {
253	status = "okay";
254};
255
256/* SMARC USB0 */
257&usb2 {
258	status = "okay";
259};
260
261/* SMARC USB1..4 */
262&usb3 {
263	status = "okay";
264};
265
266&usb3_dwc3 {
267	status = "okay";
268};
269
270&usb3_phy {
271	status = "okay";
272};
273
274/* SMARC SDIO */
275&usdhc2 {
276	status = "okay";
277};
278