xref: /freebsd/sys/contrib/device-tree/src/arm64/freescale/imx8mp-libra-rdk-fpsc.dts (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
1*ae5de77eSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
2*ae5de77eSEmmanuel Vadot/*
3*ae5de77eSEmmanuel Vadot * Copyright (C) 2025 PHYTEC Messtechnik GmbH
4*ae5de77eSEmmanuel Vadot */
5*ae5de77eSEmmanuel Vadot
6*ae5de77eSEmmanuel Vadot/dts-v1/;
7*ae5de77eSEmmanuel Vadot
8*ae5de77eSEmmanuel Vadot#include <dt-bindings/leds/leds-pca9532.h>
9*ae5de77eSEmmanuel Vadot#include <dt-bindings/phy/phy-imx8-pcie.h>
10*ae5de77eSEmmanuel Vadot#include <dt-bindings/pwm/pwm.h>
11*ae5de77eSEmmanuel Vadot#include "imx8mp-phycore-fpsc.dtsi"
12*ae5de77eSEmmanuel Vadot
13*ae5de77eSEmmanuel Vadot/ {
14*ae5de77eSEmmanuel Vadot	compatible = "phytec,imx8mp-libra-rdk-fpsc",
15*ae5de77eSEmmanuel Vadot		     "phytec,imx8mp-phycore-fpsc", "fsl,imx8mp";
16*ae5de77eSEmmanuel Vadot	model = "PHYTEC i.MX8MP Libra RDK FPSC";
17*ae5de77eSEmmanuel Vadot
18*ae5de77eSEmmanuel Vadot	backlight_lvds0: backlight0 {
19*ae5de77eSEmmanuel Vadot		compatible = "pwm-backlight";
20*ae5de77eSEmmanuel Vadot		pinctrl-0 = <&pinctrl_lvds0>;
21*ae5de77eSEmmanuel Vadot		pinctrl-names = "default";
22*ae5de77eSEmmanuel Vadot		power-supply = <&reg_vdd_12v0>;
23*ae5de77eSEmmanuel Vadot		status = "disabled";
24*ae5de77eSEmmanuel Vadot	};
25*ae5de77eSEmmanuel Vadot
26*ae5de77eSEmmanuel Vadot	chosen {
27*ae5de77eSEmmanuel Vadot		stdout-path = &uart4;
28*ae5de77eSEmmanuel Vadot	};
29*ae5de77eSEmmanuel Vadot
30*ae5de77eSEmmanuel Vadot	panel0_lvds: panel-lvds {
31*ae5de77eSEmmanuel Vadot		/* compatible panel in overlay */
32*ae5de77eSEmmanuel Vadot		backlight = <&backlight_lvds0>;
33*ae5de77eSEmmanuel Vadot		power-supply = <&reg_vdd_3v3>;
34*ae5de77eSEmmanuel Vadot		status = "disabled";
35*ae5de77eSEmmanuel Vadot
36*ae5de77eSEmmanuel Vadot		port {
37*ae5de77eSEmmanuel Vadot			panel0_in: endpoint {
38*ae5de77eSEmmanuel Vadot				remote-endpoint = <&ldb_lvds_ch0>;
39*ae5de77eSEmmanuel Vadot			};
40*ae5de77eSEmmanuel Vadot		};
41*ae5de77eSEmmanuel Vadot	};
42*ae5de77eSEmmanuel Vadot
43*ae5de77eSEmmanuel Vadot	reg_can1_stby: regulator-can1-stby {
44*ae5de77eSEmmanuel Vadot		compatible = "regulator-fixed";
45*ae5de77eSEmmanuel Vadot		regulator-max-microvolt = <1800000>;
46*ae5de77eSEmmanuel Vadot		regulator-min-microvolt = <1800000>;
47*ae5de77eSEmmanuel Vadot		regulator-name = "can1-stby";
48*ae5de77eSEmmanuel Vadot		gpio = <&gpio_expander 10 GPIO_ACTIVE_LOW>;
49*ae5de77eSEmmanuel Vadot	};
50*ae5de77eSEmmanuel Vadot
51*ae5de77eSEmmanuel Vadot	reg_can2_stby: regulator-can2-stby {
52*ae5de77eSEmmanuel Vadot		compatible = "regulator-fixed";
53*ae5de77eSEmmanuel Vadot		regulator-max-microvolt = <1800000>;
54*ae5de77eSEmmanuel Vadot		regulator-min-microvolt = <1800000>;
55*ae5de77eSEmmanuel Vadot		regulator-name = "can2-stby";
56*ae5de77eSEmmanuel Vadot		gpio = <&gpio_expander 9 GPIO_ACTIVE_LOW>;
57*ae5de77eSEmmanuel Vadot	};
58*ae5de77eSEmmanuel Vadot
59*ae5de77eSEmmanuel Vadot	reg_vdd_12v0: regulator-vdd-12v0 {
60*ae5de77eSEmmanuel Vadot		compatible = "regulator-fixed";
61*ae5de77eSEmmanuel Vadot		regulator-always-on;
62*ae5de77eSEmmanuel Vadot		regulator-boot-on;
63*ae5de77eSEmmanuel Vadot		regulator-max-microvolt = <12000000>;
64*ae5de77eSEmmanuel Vadot		regulator-min-microvolt = <12000000>;
65*ae5de77eSEmmanuel Vadot		regulator-name = "VDD_12V0";
66*ae5de77eSEmmanuel Vadot	};
67*ae5de77eSEmmanuel Vadot
68*ae5de77eSEmmanuel Vadot	reg_vdd_1v8: regulator-vdd-1v8 {
69*ae5de77eSEmmanuel Vadot		compatible = "regulator-fixed";
70*ae5de77eSEmmanuel Vadot		regulator-always-on;
71*ae5de77eSEmmanuel Vadot		regulator-boot-on;
72*ae5de77eSEmmanuel Vadot		regulator-max-microvolt = <1800000>;
73*ae5de77eSEmmanuel Vadot		regulator-min-microvolt = <1800000>;
74*ae5de77eSEmmanuel Vadot		regulator-name = "VDD_1V8";
75*ae5de77eSEmmanuel Vadot	};
76*ae5de77eSEmmanuel Vadot
77*ae5de77eSEmmanuel Vadot	reg_vdd_3v3: regulator-vdd-3v3 {
78*ae5de77eSEmmanuel Vadot		compatible = "regulator-fixed";
79*ae5de77eSEmmanuel Vadot		regulator-always-on;
80*ae5de77eSEmmanuel Vadot		regulator-boot-on;
81*ae5de77eSEmmanuel Vadot		regulator-max-microvolt = <3300000>;
82*ae5de77eSEmmanuel Vadot		regulator-min-microvolt = <3300000>;
83*ae5de77eSEmmanuel Vadot		regulator-name = "VDD_3V3";
84*ae5de77eSEmmanuel Vadot	};
85*ae5de77eSEmmanuel Vadot
86*ae5de77eSEmmanuel Vadot	reg_vdd_5v0: regulator-vdd-5v0 {
87*ae5de77eSEmmanuel Vadot		compatible = "regulator-fixed";
88*ae5de77eSEmmanuel Vadot		regulator-always-on;
89*ae5de77eSEmmanuel Vadot		regulator-boot-on;
90*ae5de77eSEmmanuel Vadot		regulator-max-microvolt = <5000000>;
91*ae5de77eSEmmanuel Vadot		regulator-min-microvolt = <5000000>;
92*ae5de77eSEmmanuel Vadot		regulator-name = "VDD_5V0";
93*ae5de77eSEmmanuel Vadot	};
94*ae5de77eSEmmanuel Vadot};
95*ae5de77eSEmmanuel Vadot
96*ae5de77eSEmmanuel Vadot&eqos {
97*ae5de77eSEmmanuel Vadot	phy-handle = <&ethphy1>;
98*ae5de77eSEmmanuel Vadot	status = "okay";
99*ae5de77eSEmmanuel Vadot
100*ae5de77eSEmmanuel Vadot	mdio {
101*ae5de77eSEmmanuel Vadot		compatible = "snps,dwmac-mdio";
102*ae5de77eSEmmanuel Vadot		#address-cells = <1>;
103*ae5de77eSEmmanuel Vadot		#size-cells = <0>;
104*ae5de77eSEmmanuel Vadot
105*ae5de77eSEmmanuel Vadot		ethphy1: ethernet-phy@1 {
106*ae5de77eSEmmanuel Vadot			compatible = "ethernet-phy-ieee802.3-c22";
107*ae5de77eSEmmanuel Vadot			reg = <0x1>;
108*ae5de77eSEmmanuel Vadot			enet-phy-lane-no-swap;
109*ae5de77eSEmmanuel Vadot			ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
110*ae5de77eSEmmanuel Vadot			ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
111*ae5de77eSEmmanuel Vadot			ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
112*ae5de77eSEmmanuel Vadot			ti,tx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
113*ae5de77eSEmmanuel Vadot		};
114*ae5de77eSEmmanuel Vadot	};
115*ae5de77eSEmmanuel Vadot};
116*ae5de77eSEmmanuel Vadot
117*ae5de77eSEmmanuel Vadot/* CAN FD */
118*ae5de77eSEmmanuel Vadot&flexcan1 {
119*ae5de77eSEmmanuel Vadot	xceiver-supply = <&reg_can1_stby>;
120*ae5de77eSEmmanuel Vadot	status = "okay";
121*ae5de77eSEmmanuel Vadot};
122*ae5de77eSEmmanuel Vadot
123*ae5de77eSEmmanuel Vadot&flexcan2 {
124*ae5de77eSEmmanuel Vadot	xceiver-supply = <&reg_can2_stby>;
125*ae5de77eSEmmanuel Vadot	status = "okay";
126*ae5de77eSEmmanuel Vadot};
127*ae5de77eSEmmanuel Vadot
128*ae5de77eSEmmanuel Vadot&flexspi {
129*ae5de77eSEmmanuel Vadot	status = "okay";
130*ae5de77eSEmmanuel Vadot
131*ae5de77eSEmmanuel Vadot	spi_nor: flash@0 {
132*ae5de77eSEmmanuel Vadot		compatible = "jedec,spi-nor";
133*ae5de77eSEmmanuel Vadot		reg = <0>;
134*ae5de77eSEmmanuel Vadot		spi-max-frequency = <80000000>;
135*ae5de77eSEmmanuel Vadot		spi-rx-bus-width = <4>;
136*ae5de77eSEmmanuel Vadot		spi-tx-bus-width = <1>;
137*ae5de77eSEmmanuel Vadot		vcc-supply = <&reg_vdd_1v8>;
138*ae5de77eSEmmanuel Vadot	};
139*ae5de77eSEmmanuel Vadot};
140*ae5de77eSEmmanuel Vadot
141*ae5de77eSEmmanuel Vadot&gpio5 {
142*ae5de77eSEmmanuel Vadot	gpio-line-names = "", "", "", "", "I2C5_SDA",
143*ae5de77eSEmmanuel Vadot			  "GPIO1", "", "", "", "SPI1_CS",
144*ae5de77eSEmmanuel Vadot			  "", "", "", "SPI2_CS", "I2C1_SCL",
145*ae5de77eSEmmanuel Vadot			  "I2C1_SDA", "I2C2_SCL", "I2C2_SDA", "I2C3_SCL", "I2C3_SDA",
146*ae5de77eSEmmanuel Vadot			  "", "GPIO2", "", "LVDS1_BL_EN", "SPI3_CS",
147*ae5de77eSEmmanuel Vadot			  "", "GPIO3";
148*ae5de77eSEmmanuel Vadot};
149*ae5de77eSEmmanuel Vadot
150*ae5de77eSEmmanuel Vadot&i2c2 {
151*ae5de77eSEmmanuel Vadot	clock-frequency = <400000>;
152*ae5de77eSEmmanuel Vadot	status = "okay";
153*ae5de77eSEmmanuel Vadot
154*ae5de77eSEmmanuel Vadot	eeprom@51 {
155*ae5de77eSEmmanuel Vadot		compatible = "atmel,24c02";
156*ae5de77eSEmmanuel Vadot		reg = <0x51>;
157*ae5de77eSEmmanuel Vadot		pagesize = <16>;
158*ae5de77eSEmmanuel Vadot		vcc-supply = <&reg_vdd_1v8>;
159*ae5de77eSEmmanuel Vadot	};
160*ae5de77eSEmmanuel Vadot};
161*ae5de77eSEmmanuel Vadot
162*ae5de77eSEmmanuel Vadot&i2c3 {
163*ae5de77eSEmmanuel Vadot	clock-frequency = <400000>;
164*ae5de77eSEmmanuel Vadot	status = "okay";
165*ae5de77eSEmmanuel Vadot
166*ae5de77eSEmmanuel Vadot	leds@62 {
167*ae5de77eSEmmanuel Vadot		compatible = "nxp,pca9533";
168*ae5de77eSEmmanuel Vadot		reg = <0x62>;
169*ae5de77eSEmmanuel Vadot
170*ae5de77eSEmmanuel Vadot		led-1 {
171*ae5de77eSEmmanuel Vadot			type = <PCA9532_TYPE_LED>;
172*ae5de77eSEmmanuel Vadot		};
173*ae5de77eSEmmanuel Vadot
174*ae5de77eSEmmanuel Vadot		led-2 {
175*ae5de77eSEmmanuel Vadot			type = <PCA9532_TYPE_LED>;
176*ae5de77eSEmmanuel Vadot		};
177*ae5de77eSEmmanuel Vadot
178*ae5de77eSEmmanuel Vadot		led-3 {
179*ae5de77eSEmmanuel Vadot			type = <PCA9532_TYPE_LED>;
180*ae5de77eSEmmanuel Vadot		};
181*ae5de77eSEmmanuel Vadot	};
182*ae5de77eSEmmanuel Vadot};
183*ae5de77eSEmmanuel Vadot
184*ae5de77eSEmmanuel Vadot&i2c5 {
185*ae5de77eSEmmanuel Vadot	#address-cells = <1>;
186*ae5de77eSEmmanuel Vadot	#size-cells = <0>;
187*ae5de77eSEmmanuel Vadot	clock-frequency = <400000>;
188*ae5de77eSEmmanuel Vadot	status = "okay";
189*ae5de77eSEmmanuel Vadot
190*ae5de77eSEmmanuel Vadot	gpio_expander: gpio@20 {
191*ae5de77eSEmmanuel Vadot		compatible = "ti,tca6416";
192*ae5de77eSEmmanuel Vadot		reg = <0x20>;
193*ae5de77eSEmmanuel Vadot		interrupt-parent = <&gpio4>;
194*ae5de77eSEmmanuel Vadot		interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
195*ae5de77eSEmmanuel Vadot		#gpio-cells = <2>;
196*ae5de77eSEmmanuel Vadot		gpio-controller;
197*ae5de77eSEmmanuel Vadot		gpio-line-names = "CSI1_CTRL1", "CSI1_CTRL2", "CSI1_CTRL3",
198*ae5de77eSEmmanuel Vadot				  "CSI1_CTRL4", "CSI2_CTRL1", "CSI2_CTRL2",
199*ae5de77eSEmmanuel Vadot				  "CSI2_CTRL3", "CSI2_CTRL4", "CLK_EN_AV",
200*ae5de77eSEmmanuel Vadot				  "nCAN2_EN", "nCAN1_EN", "PCIE1_nWAKE",
201*ae5de77eSEmmanuel Vadot				  "PCIE2_nWAKE", "PCIE2_nALERT_3V3",
202*ae5de77eSEmmanuel Vadot				  "UART1_BT_RS_SEL", "UART1_RS232_485_SEL";
203*ae5de77eSEmmanuel Vadot		vcc-supply = <&reg_vdd_1v8>;
204*ae5de77eSEmmanuel Vadot
205*ae5de77eSEmmanuel Vadot		uart1_bt_rs_sel: bt-rs-hog {
206*ae5de77eSEmmanuel Vadot			gpios = <14 GPIO_ACTIVE_HIGH>;
207*ae5de77eSEmmanuel Vadot			gpio-hog;
208*ae5de77eSEmmanuel Vadot			line-name = "UART1_BT_RS_SEL";
209*ae5de77eSEmmanuel Vadot			output-low;	/* default RS232/RS485 */
210*ae5de77eSEmmanuel Vadot		};
211*ae5de77eSEmmanuel Vadot
212*ae5de77eSEmmanuel Vadot		uart1_rs232_485_sel: rs232-485-hog {
213*ae5de77eSEmmanuel Vadot			gpios = <15 GPIO_ACTIVE_HIGH>;
214*ae5de77eSEmmanuel Vadot			gpio-hog;
215*ae5de77eSEmmanuel Vadot			line-name = "UART1_RS232_485_SEL";
216*ae5de77eSEmmanuel Vadot			output-high;	/* default RS232 */
217*ae5de77eSEmmanuel Vadot		};
218*ae5de77eSEmmanuel Vadot	};
219*ae5de77eSEmmanuel Vadot};
220*ae5de77eSEmmanuel Vadot
221*ae5de77eSEmmanuel Vadot&iomuxc {
222*ae5de77eSEmmanuel Vadot	pinctrl_lvds0: lvds0grp {
223*ae5de77eSEmmanuel Vadot		fsl,pins = <
224*ae5de77eSEmmanuel Vadot			MX8MP_IOMUXC_UART1_TXD__GPIO5_IO23	0x12
225*ae5de77eSEmmanuel Vadot		>;
226*ae5de77eSEmmanuel Vadot	};
227*ae5de77eSEmmanuel Vadot	pinctrl_rtc: rtcgrp {
228*ae5de77eSEmmanuel Vadot		fsl,pins = <
229*ae5de77eSEmmanuel Vadot			MX8MP_IOMUXC_UART2_TXD__GPIO5_IO25	0x1C0
230*ae5de77eSEmmanuel Vadot		>;
231*ae5de77eSEmmanuel Vadot	};
232*ae5de77eSEmmanuel Vadot};
233*ae5de77eSEmmanuel Vadot
234*ae5de77eSEmmanuel Vadot&lvds_bridge {
235*ae5de77eSEmmanuel Vadot	ports {
236*ae5de77eSEmmanuel Vadot		port@1 {
237*ae5de77eSEmmanuel Vadot			ldb_lvds_ch0: endpoint {
238*ae5de77eSEmmanuel Vadot				remote-endpoint = <&panel0_in>;
239*ae5de77eSEmmanuel Vadot			};
240*ae5de77eSEmmanuel Vadot		};
241*ae5de77eSEmmanuel Vadot	};
242*ae5de77eSEmmanuel Vadot};
243*ae5de77eSEmmanuel Vadot
244*ae5de77eSEmmanuel Vadot/* Mini PCIe */
245*ae5de77eSEmmanuel Vadot&pcie {
246*ae5de77eSEmmanuel Vadot	reset-gpio = <&gpio1 8 GPIO_ACTIVE_LOW>;
247*ae5de77eSEmmanuel Vadot	vpcie-supply = <&reg_vdd_3v3>;
248*ae5de77eSEmmanuel Vadot	status = "okay";
249*ae5de77eSEmmanuel Vadot};
250*ae5de77eSEmmanuel Vadot
251*ae5de77eSEmmanuel Vadot&pcie_phy {
252*ae5de77eSEmmanuel Vadot	clocks = <&hsio_blk_ctrl>;
253*ae5de77eSEmmanuel Vadot	clock-names = "ref";
254*ae5de77eSEmmanuel Vadot	fsl,clkreq-unsupported;
255*ae5de77eSEmmanuel Vadot	fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;
256*ae5de77eSEmmanuel Vadot	status = "okay";
257*ae5de77eSEmmanuel Vadot};
258*ae5de77eSEmmanuel Vadot
259*ae5de77eSEmmanuel Vadot&reg_vdd_io {
260*ae5de77eSEmmanuel Vadot	regulator-max-microvolt = <1800000>;
261*ae5de77eSEmmanuel Vadot	regulator-min-microvolt = <1800000>;
262*ae5de77eSEmmanuel Vadot};
263*ae5de77eSEmmanuel Vadot
264*ae5de77eSEmmanuel Vadot&rv3028 {
265*ae5de77eSEmmanuel Vadot	interrupt-parent = <&gpio5>;
266*ae5de77eSEmmanuel Vadot	interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
267*ae5de77eSEmmanuel Vadot	aux-voltage-chargeable = <1>;
268*ae5de77eSEmmanuel Vadot	pinctrl-0 = <&pinctrl_rtc>;
269*ae5de77eSEmmanuel Vadot	pinctrl-names = "default";
270*ae5de77eSEmmanuel Vadot	trickle-resistor-ohms = <3000>;
271*ae5de77eSEmmanuel Vadot	wakeup-source;
272*ae5de77eSEmmanuel Vadot};
273*ae5de77eSEmmanuel Vadot
274*ae5de77eSEmmanuel Vadot&snvs_pwrkey {
275*ae5de77eSEmmanuel Vadot	status = "okay";
276*ae5de77eSEmmanuel Vadot};
277*ae5de77eSEmmanuel Vadot
278*ae5de77eSEmmanuel Vadot/* debug console */
279*ae5de77eSEmmanuel Vadot&uart4 {
280*ae5de77eSEmmanuel Vadot	status = "okay";
281*ae5de77eSEmmanuel Vadot};
282*ae5de77eSEmmanuel Vadot
283*ae5de77eSEmmanuel Vadot/* SD-Card */
284*ae5de77eSEmmanuel Vadot&usdhc2 {
285*ae5de77eSEmmanuel Vadot	assigned-clocks = <&clk IMX8MP_CLK_USDHC2>;
286*ae5de77eSEmmanuel Vadot	assigned-clock-rates = <200000000>;
287*ae5de77eSEmmanuel Vadot	bus-width = <4>;
288*ae5de77eSEmmanuel Vadot	disable-wp;
289*ae5de77eSEmmanuel Vadot	status = "okay";
290*ae5de77eSEmmanuel Vadot};
291