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 = <®_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 = <®_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 = <ðphy0>; 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 = <ðphy2>; 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 = <®_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 = <®_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 = <®_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 = <®_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 = <®_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 = <®_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 = <®_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