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