xref: /freebsd/sys/contrib/device-tree/src/arm64/freescale/imx95-libra-rdk-fpsc.dts (revision 833e5d42ab135b0238e61c5b3c19b8619677cbfa)
1*833e5d42SEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*833e5d42SEmmanuel Vadot/*
3*833e5d42SEmmanuel Vadot * Copyright 2025 PHYTEC Messtechnik GmbH
4*833e5d42SEmmanuel Vadot */
5*833e5d42SEmmanuel Vadot
6*833e5d42SEmmanuel Vadot/dts-v1/;
7*833e5d42SEmmanuel Vadot
8*833e5d42SEmmanuel Vadot#include <dt-bindings/leds/leds-pca9532.h>
9*833e5d42SEmmanuel Vadot#include <dt-bindings/pwm/pwm.h>
10*833e5d42SEmmanuel Vadot
11*833e5d42SEmmanuel Vadot#include "imx95-phycore-fpsc.dtsi"
12*833e5d42SEmmanuel Vadot
13*833e5d42SEmmanuel Vadot/ {
14*833e5d42SEmmanuel Vadot	compatible = "phytec,imx95-libra-rdk-fpsc",
15*833e5d42SEmmanuel Vadot		"phytec,imx95-phycore-fpsc", "fsl,imx95";
16*833e5d42SEmmanuel Vadot	model = "PHYTEC Libra i.MX95 RDK FPSC";
17*833e5d42SEmmanuel Vadot
18*833e5d42SEmmanuel Vadot	aliases {
19*833e5d42SEmmanuel Vadot		can1 = &flexcan2;
20*833e5d42SEmmanuel Vadot		can2 = &flexcan1;
21*833e5d42SEmmanuel Vadot		ethernet0 = &enetc_port0;
22*833e5d42SEmmanuel Vadot		serial0 = &lpuart7;
23*833e5d42SEmmanuel Vadot		serial1 = &lpuart8;
24*833e5d42SEmmanuel Vadot	};
25*833e5d42SEmmanuel Vadot
26*833e5d42SEmmanuel Vadot	chosen {
27*833e5d42SEmmanuel Vadot		stdout-path = &lpuart7;
28*833e5d42SEmmanuel Vadot	};
29*833e5d42SEmmanuel Vadot
30*833e5d42SEmmanuel Vadot	backlight_lvds0: backlight0 {
31*833e5d42SEmmanuel Vadot		compatible = "pwm-backlight";
32*833e5d42SEmmanuel Vadot		pinctrl-0 = <&pinctrl_lvds0>;
33*833e5d42SEmmanuel Vadot		power-supply = <&reg_vdd_12v0>;
34*833e5d42SEmmanuel Vadot		status = "disabled";
35*833e5d42SEmmanuel Vadot	};
36*833e5d42SEmmanuel Vadot
37*833e5d42SEmmanuel Vadot	transceiver1: can-phy {
38*833e5d42SEmmanuel Vadot		compatible = "ti,tcan1043";
39*833e5d42SEmmanuel Vadot		#phy-cells = <0>;
40*833e5d42SEmmanuel Vadot		max-bitrate = <8000000>;
41*833e5d42SEmmanuel Vadot		enable-gpios = <&gpio_expander 10 GPIO_ACTIVE_LOW>;
42*833e5d42SEmmanuel Vadot	};
43*833e5d42SEmmanuel Vadot
44*833e5d42SEmmanuel Vadot	transceiver2: can-phy {
45*833e5d42SEmmanuel Vadot		compatible = "ti,tcan1043";
46*833e5d42SEmmanuel Vadot		#phy-cells = <0>;
47*833e5d42SEmmanuel Vadot		max-bitrate = <8000000>;
48*833e5d42SEmmanuel Vadot		enable-gpios = <&gpio_expander 9 GPIO_ACTIVE_LOW>;
49*833e5d42SEmmanuel Vadot	};
50*833e5d42SEmmanuel Vadot
51*833e5d42SEmmanuel Vadot	panel0_lvds: panel-lvds0 {
52*833e5d42SEmmanuel Vadot		backlight = <&backlight_lvds0>;
53*833e5d42SEmmanuel Vadot		power-supply = <&reg_vdd_3v3>;
54*833e5d42SEmmanuel Vadot		status = "disabled";
55*833e5d42SEmmanuel Vadot	};
56*833e5d42SEmmanuel Vadot
57*833e5d42SEmmanuel Vadot	reg_vdd_12v0: regulator-vdd-12v0 {
58*833e5d42SEmmanuel Vadot		compatible = "regulator-fixed";
59*833e5d42SEmmanuel Vadot		regulator-always-on;
60*833e5d42SEmmanuel Vadot		regulator-boot-on;
61*833e5d42SEmmanuel Vadot		regulator-max-microvolt = <12000000>;
62*833e5d42SEmmanuel Vadot		regulator-min-microvolt = <12000000>;
63*833e5d42SEmmanuel Vadot		regulator-name = "VDD_12V0";
64*833e5d42SEmmanuel Vadot	};
65*833e5d42SEmmanuel Vadot
66*833e5d42SEmmanuel Vadot	reg_vdd_1v8: regulator-vdd-1v8 {
67*833e5d42SEmmanuel Vadot		compatible = "regulator-fixed";
68*833e5d42SEmmanuel Vadot		regulator-always-on;
69*833e5d42SEmmanuel Vadot		regulator-boot-on;
70*833e5d42SEmmanuel Vadot		regulator-max-microvolt = <1800000>;
71*833e5d42SEmmanuel Vadot		regulator-min-microvolt = <1800000>;
72*833e5d42SEmmanuel Vadot		regulator-name = "VDD_1V8";
73*833e5d42SEmmanuel Vadot	};
74*833e5d42SEmmanuel Vadot
75*833e5d42SEmmanuel Vadot	reg_vdd_3v3: regulator-vdd-3v3 {
76*833e5d42SEmmanuel Vadot		compatible = "regulator-fixed";
77*833e5d42SEmmanuel Vadot		regulator-always-on;
78*833e5d42SEmmanuel Vadot		regulator-boot-on;
79*833e5d42SEmmanuel Vadot		regulator-max-microvolt = <3300000>;
80*833e5d42SEmmanuel Vadot		regulator-min-microvolt = <3300000>;
81*833e5d42SEmmanuel Vadot		regulator-name = "VDD_3V3";
82*833e5d42SEmmanuel Vadot	};
83*833e5d42SEmmanuel Vadot
84*833e5d42SEmmanuel Vadot	reg_vdd_5v0: regulator-vdd-5v0 {
85*833e5d42SEmmanuel Vadot		compatible = "regulator-fixed";
86*833e5d42SEmmanuel Vadot		regulator-always-on;
87*833e5d42SEmmanuel Vadot		regulator-boot-on;
88*833e5d42SEmmanuel Vadot		regulator-max-microvolt = <5000000>;
89*833e5d42SEmmanuel Vadot		regulator-min-microvolt = <5000000>;
90*833e5d42SEmmanuel Vadot		regulator-name = "VDD_5V0";
91*833e5d42SEmmanuel Vadot	};
92*833e5d42SEmmanuel Vadot};
93*833e5d42SEmmanuel Vadot
94*833e5d42SEmmanuel Vadot&enetc_port0 {
95*833e5d42SEmmanuel Vadot	phy-handle = <&ethphy0>;
96*833e5d42SEmmanuel Vadot	status = "okay";
97*833e5d42SEmmanuel Vadot};
98*833e5d42SEmmanuel Vadot
99*833e5d42SEmmanuel Vadot&enetc_port2 {
100*833e5d42SEmmanuel Vadot	managed = "in-band-status";
101*833e5d42SEmmanuel Vadot	phy-handle = <&ethphy2>;
102*833e5d42SEmmanuel Vadot	phy-mode = "10gbase-r";
103*833e5d42SEmmanuel Vadot};
104*833e5d42SEmmanuel Vadot
105*833e5d42SEmmanuel Vadot/* CAN FD */
106*833e5d42SEmmanuel Vadot&flexcan1 {
107*833e5d42SEmmanuel Vadot	phys = <&transceiver1>;
108*833e5d42SEmmanuel Vadot	status = "okay";
109*833e5d42SEmmanuel Vadot};
110*833e5d42SEmmanuel Vadot
111*833e5d42SEmmanuel Vadot&flexcan2 {
112*833e5d42SEmmanuel Vadot	phys = <&transceiver2>;
113*833e5d42SEmmanuel Vadot	status = "okay";
114*833e5d42SEmmanuel Vadot};
115*833e5d42SEmmanuel Vadot
116*833e5d42SEmmanuel Vadot/* SPI-NOR */
117*833e5d42SEmmanuel Vadot&flexspi1 {
118*833e5d42SEmmanuel Vadot	pinctrl-0 = <&pinctrl_flexspi>;
119*833e5d42SEmmanuel Vadot	pinctrl-names = "default";
120*833e5d42SEmmanuel Vadot	status = "okay";
121*833e5d42SEmmanuel Vadot
122*833e5d42SEmmanuel Vadot	spi_nor: flash@0 {
123*833e5d42SEmmanuel Vadot		compatible = "jedec,spi-nor";
124*833e5d42SEmmanuel Vadot		reg = <0>;
125*833e5d42SEmmanuel Vadot		spi-max-frequency = <166000000>;
126*833e5d42SEmmanuel Vadot		spi-rx-bus-width = <4>;
127*833e5d42SEmmanuel Vadot		spi-tx-bus-width = <4>;
128*833e5d42SEmmanuel Vadot		vcc-supply = <&reg_vdd_1v8>;
129*833e5d42SEmmanuel Vadot	};
130*833e5d42SEmmanuel Vadot};
131*833e5d42SEmmanuel Vadot
132*833e5d42SEmmanuel Vadot&gpio2 {
133*833e5d42SEmmanuel Vadot	gpio-line-names = "", "", "", "", "",
134*833e5d42SEmmanuel Vadot			  "", "", "", "", "",
135*833e5d42SEmmanuel Vadot			  "", "", "", "", "",
136*833e5d42SEmmanuel Vadot			  "", "RGMII2_nINT", "GPIO4", "RTC_INT", "",
137*833e5d42SEmmanuel Vadot			  "LVDS1_BL_EN";
138*833e5d42SEmmanuel Vadot};
139*833e5d42SEmmanuel Vadot
140*833e5d42SEmmanuel Vadot&lpi2c1 {
141*833e5d42SEmmanuel Vadot	temperature-sensor@4f {
142*833e5d42SEmmanuel Vadot		compatible = "nxp,p3t1755";
143*833e5d42SEmmanuel Vadot		reg = <0x4f>;
144*833e5d42SEmmanuel Vadot		vs-supply = <&reg_vdd_1v8>;
145*833e5d42SEmmanuel Vadot	};
146*833e5d42SEmmanuel Vadot};
147*833e5d42SEmmanuel Vadot
148*833e5d42SEmmanuel Vadot&lpi2c3 {
149*833e5d42SEmmanuel Vadot	status = "okay";
150*833e5d42SEmmanuel Vadot
151*833e5d42SEmmanuel Vadot	leds@62 {
152*833e5d42SEmmanuel Vadot		compatible = "nxp,pca9533";
153*833e5d42SEmmanuel Vadot		reg = <0x62>;
154*833e5d42SEmmanuel Vadot
155*833e5d42SEmmanuel Vadot		led-1 {
156*833e5d42SEmmanuel Vadot			type = <PCA9532_TYPE_LED>;
157*833e5d42SEmmanuel Vadot		};
158*833e5d42SEmmanuel Vadot
159*833e5d42SEmmanuel Vadot		led-2 {
160*833e5d42SEmmanuel Vadot			type = <PCA9532_TYPE_LED>;
161*833e5d42SEmmanuel Vadot		};
162*833e5d42SEmmanuel Vadot
163*833e5d42SEmmanuel Vadot		led-3 {
164*833e5d42SEmmanuel Vadot			type = <PCA9532_TYPE_LED>;
165*833e5d42SEmmanuel Vadot		};
166*833e5d42SEmmanuel Vadot	};
167*833e5d42SEmmanuel Vadot};
168*833e5d42SEmmanuel Vadot
169*833e5d42SEmmanuel Vadot&lpi2c4 {
170*833e5d42SEmmanuel Vadot	status = "okay";
171*833e5d42SEmmanuel Vadot
172*833e5d42SEmmanuel Vadot	gpio_expander: gpio@20 {
173*833e5d42SEmmanuel Vadot		compatible = "ti,tca6416";
174*833e5d42SEmmanuel Vadot		reg = <0x20>;
175*833e5d42SEmmanuel Vadot		interrupt-parent = <&gpio2>;
176*833e5d42SEmmanuel Vadot		interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
177*833e5d42SEmmanuel Vadot		#gpio-cells = <2>;
178*833e5d42SEmmanuel Vadot		gpio-controller;
179*833e5d42SEmmanuel Vadot		gpio-line-names = "CSI1_CTRL1", "CSI1_CTRL2", "CSI1_CTRL3",
180*833e5d42SEmmanuel Vadot				  "CSI1_CTRL4", "CSI2_CTRL1", "CSI2_CTRL2",
181*833e5d42SEmmanuel Vadot				  "CSI2_CTRL3", "CSI2_CTRL4", "CLK_EN_AV",
182*833e5d42SEmmanuel Vadot				  "nCAN2_EN", "nCAN1_EN", "PCIE1_nWAKE",
183*833e5d42SEmmanuel Vadot				  "PCIE2_nWAKE", "PCIE2_nALERT_3V3",
184*833e5d42SEmmanuel Vadot				  "UART1_BT_RS_SEL", "UART1_RS232_485_SEL";
185*833e5d42SEmmanuel Vadot		vcc-supply = <&reg_vdd_1v8>;
186*833e5d42SEmmanuel Vadot
187*833e5d42SEmmanuel Vadot		uart1_bt_rs_sel: bt-rs-hog {
188*833e5d42SEmmanuel Vadot			gpios = <14 GPIO_ACTIVE_HIGH>;
189*833e5d42SEmmanuel Vadot			gpio-hog;
190*833e5d42SEmmanuel Vadot			line-name = "UART1_BT_RS_SEL";
191*833e5d42SEmmanuel Vadot			output-low;
192*833e5d42SEmmanuel Vadot		};
193*833e5d42SEmmanuel Vadot	};
194*833e5d42SEmmanuel Vadot};
195*833e5d42SEmmanuel Vadot
196*833e5d42SEmmanuel Vadot&lpi2c5 {
197*833e5d42SEmmanuel Vadot	status = "okay";
198*833e5d42SEmmanuel Vadot
199*833e5d42SEmmanuel Vadot	eeprom@51 {
200*833e5d42SEmmanuel Vadot		compatible = "atmel,24c02";
201*833e5d42SEmmanuel Vadot		reg = <0x51>;
202*833e5d42SEmmanuel Vadot		pagesize = <16>;
203*833e5d42SEmmanuel Vadot		vcc-supply = <&reg_vdd_1v8>;
204*833e5d42SEmmanuel Vadot	};
205*833e5d42SEmmanuel Vadot};
206*833e5d42SEmmanuel Vadot
207*833e5d42SEmmanuel Vadot/* Used for M33 debug */
208*833e5d42SEmmanuel Vadot&lpuart2 {
209*833e5d42SEmmanuel Vadot	pinctrl-0 = <&pinctrl_lpuart2>;
210*833e5d42SEmmanuel Vadot	pinctrl-names = "default";
211*833e5d42SEmmanuel Vadot};
212*833e5d42SEmmanuel Vadot
213*833e5d42SEmmanuel Vadot/* A-55 debug UART */
214*833e5d42SEmmanuel Vadot&lpuart7 {
215*833e5d42SEmmanuel Vadot	status = "okay";
216*833e5d42SEmmanuel Vadot};
217*833e5d42SEmmanuel Vadot
218*833e5d42SEmmanuel Vadot/* RS232/RS485/BT */
219*833e5d42SEmmanuel Vadot&lpuart8 {
220*833e5d42SEmmanuel Vadot	uart-has-rtscts;
221*833e5d42SEmmanuel Vadot	status = "okay";
222*833e5d42SEmmanuel Vadot};
223*833e5d42SEmmanuel Vadot
224*833e5d42SEmmanuel Vadot&netc_emdio { /* RGMII2 */
225*833e5d42SEmmanuel Vadot	ethphy0: ethernet-phy@1 {
226*833e5d42SEmmanuel Vadot		compatible = "ethernet-phy-ieee802.3-c22";
227*833e5d42SEmmanuel Vadot		reg = <0x1>;
228*833e5d42SEmmanuel Vadot		interrupt-parent = <&gpio2>;
229*833e5d42SEmmanuel Vadot		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
230*833e5d42SEmmanuel Vadot		enet-phy-lane-no-swap;
231*833e5d42SEmmanuel Vadot		ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
232*833e5d42SEmmanuel Vadot		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
233*833e5d42SEmmanuel Vadot		ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
234*833e5d42SEmmanuel Vadot		ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
235*833e5d42SEmmanuel Vadot	};
236*833e5d42SEmmanuel Vadot
237*833e5d42SEmmanuel Vadot	ethphy2: ethernet-phy@8 {
238*833e5d42SEmmanuel Vadot		compatible = "ethernet-phy-ieee802.3-c45";
239*833e5d42SEmmanuel Vadot		reg = <0x8>;
240*833e5d42SEmmanuel Vadot		max-speed = <10000>; /* 10Gbit/s */
241*833e5d42SEmmanuel Vadot		status = "disabled";
242*833e5d42SEmmanuel Vadot	};
243*833e5d42SEmmanuel Vadot};
244*833e5d42SEmmanuel Vadot
245*833e5d42SEmmanuel Vadot&pcie0 {
246*833e5d42SEmmanuel Vadot	reset-gpio = <&gpio1 10 GPIO_ACTIVE_LOW>;
247*833e5d42SEmmanuel Vadot	vpcie-supply = <&reg_vdd_3v3>;
248*833e5d42SEmmanuel Vadot	status = "okay";
249*833e5d42SEmmanuel Vadot};
250*833e5d42SEmmanuel Vadot
251*833e5d42SEmmanuel Vadot&pcie1 {
252*833e5d42SEmmanuel Vadot	reset-gpio = <&gpio1 14 GPIO_ACTIVE_LOW>;
253*833e5d42SEmmanuel Vadot	vpcie-supply = <&reg_vdd_3v3>;
254*833e5d42SEmmanuel Vadot	status = "okay";
255*833e5d42SEmmanuel Vadot};
256*833e5d42SEmmanuel Vadot
257*833e5d42SEmmanuel Vadot&rv3028 {
258*833e5d42SEmmanuel Vadot	pinctrl-names = "default";
259*833e5d42SEmmanuel Vadot	pinctrl-0 = <&pinctrl_rtc>;
260*833e5d42SEmmanuel Vadot	interrupt-parent = <&gpio2>;
261*833e5d42SEmmanuel Vadot	interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
262*833e5d42SEmmanuel Vadot	aux-voltage-chargeable = <1>;
263*833e5d42SEmmanuel Vadot	wakeup-source;
264*833e5d42SEmmanuel Vadot	trickle-resistor-ohms = <3000>;
265*833e5d42SEmmanuel Vadot};
266*833e5d42SEmmanuel Vadot
267*833e5d42SEmmanuel Vadot&scmi_iomuxc {
268*833e5d42SEmmanuel Vadot	pinctrl_lpuart2: lpuart2grp { /* FPSC proprietary */
269*833e5d42SEmmanuel Vadot		fsl,pins = <
270*833e5d42SEmmanuel Vadot			IMX95_PAD_UART2_TXD__AONMIX_TOP_LPUART2_TX	0x31e
271*833e5d42SEmmanuel Vadot			IMX95_PAD_UART2_RXD__AONMIX_TOP_LPUART2_RX	0x31e
272*833e5d42SEmmanuel Vadot		>;
273*833e5d42SEmmanuel Vadot	};
274*833e5d42SEmmanuel Vadot
275*833e5d42SEmmanuel Vadot	pinctrl_lvds0: lvds0grp {
276*833e5d42SEmmanuel Vadot		fsl,pins = <
277*833e5d42SEmmanuel Vadot			IMX95_PAD_GPIO_IO20__GPIO2_IO_BIT20	0x31e
278*833e5d42SEmmanuel Vadot		>;
279*833e5d42SEmmanuel Vadot	};
280*833e5d42SEmmanuel Vadot
281*833e5d42SEmmanuel Vadot	pinctrl_rtc: rtcgrp {
282*833e5d42SEmmanuel Vadot		fsl,pins = <
283*833e5d42SEmmanuel Vadot			IMX95_PAD_GPIO_IO18__GPIO2_IO_BIT18	0x31e
284*833e5d42SEmmanuel Vadot		>;
285*833e5d42SEmmanuel Vadot	};
286*833e5d42SEmmanuel Vadot
287*833e5d42SEmmanuel Vadot	pinctrl_tpm4: tpm4grp {
288*833e5d42SEmmanuel Vadot		fsl,pins = <
289*833e5d42SEmmanuel Vadot			IMX95_PAD_GPIO_IO21__TPM4_CH1	0x51e
290*833e5d42SEmmanuel Vadot		>;
291*833e5d42SEmmanuel Vadot	};
292*833e5d42SEmmanuel Vadot};
293*833e5d42SEmmanuel Vadot
294*833e5d42SEmmanuel Vadot&tpm4 {
295*833e5d42SEmmanuel Vadot	pinctrl-0 = <&pinctrl_tpm4>;
296*833e5d42SEmmanuel Vadot	pinctrl-names = "default";
297*833e5d42SEmmanuel Vadot};
298*833e5d42SEmmanuel Vadot
299*833e5d42SEmmanuel Vadot&usb3 {
300*833e5d42SEmmanuel Vadot	fsl,over-current-active-low;
301*833e5d42SEmmanuel Vadot	fsl,power-active-low;
302*833e5d42SEmmanuel Vadot	status = "okay";
303*833e5d42SEmmanuel Vadot};
304*833e5d42SEmmanuel Vadot
305*833e5d42SEmmanuel Vadot&usb3_dwc3 {
306*833e5d42SEmmanuel Vadot	dr_mode = "peripheral";
307*833e5d42SEmmanuel Vadot	status = "okay";
308*833e5d42SEmmanuel Vadot};
309*833e5d42SEmmanuel Vadot
310*833e5d42SEmmanuel Vadot&usb3_phy {
311*833e5d42SEmmanuel Vadot	vbus-supply = <&reg_vdd_5v0>;
312*833e5d42SEmmanuel Vadot	status = "okay";
313*833e5d42SEmmanuel Vadot};
314*833e5d42SEmmanuel Vadot
315*833e5d42SEmmanuel Vadot/* uSD Card */
316*833e5d42SEmmanuel Vadot&usdhc2 {
317*833e5d42SEmmanuel Vadot	status = "okay";
318*833e5d42SEmmanuel Vadot};
319