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