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 = <®_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 = <®_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 = <ðphy1>; 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 = <®_can1_stby>; 120*ae5de77eSEmmanuel Vadot status = "okay"; 121*ae5de77eSEmmanuel Vadot}; 122*ae5de77eSEmmanuel Vadot 123*ae5de77eSEmmanuel Vadot&flexcan2 { 124*ae5de77eSEmmanuel Vadot xceiver-supply = <®_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 = <®_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 = <®_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 = <®_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 = <®_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®_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