1*5f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+ OR MIT 2*5f62a964SEmmanuel Vadot/* 3*5f62a964SEmmanuel Vadot * Copyright (C) 2022 Kontron Electronics GmbH 4*5f62a964SEmmanuel Vadot */ 5*5f62a964SEmmanuel Vadot 6*5f62a964SEmmanuel Vadot/dts-v1/; 7*5f62a964SEmmanuel Vadot 8*5f62a964SEmmanuel Vadot#include "imx8mp-kontron-osm-s.dtsi" 9*5f62a964SEmmanuel Vadot 10*5f62a964SEmmanuel Vadot/ { 11*5f62a964SEmmanuel Vadot model = "Kontron BL i.MX8MP OSM-S"; 12*5f62a964SEmmanuel Vadot compatible = "kontron,imx8mp-bl-osm-s", "kontron,imx8mp-osm-s", "fsl,imx8mp"; 13*5f62a964SEmmanuel Vadot 14*5f62a964SEmmanuel Vadot aliases { 15*5f62a964SEmmanuel Vadot ethernet0 = &fec; 16*5f62a964SEmmanuel Vadot ethernet1 = &eqos; 17*5f62a964SEmmanuel Vadot }; 18*5f62a964SEmmanuel Vadot 19*5f62a964SEmmanuel Vadot extcon_usbc: usbc { 20*5f62a964SEmmanuel Vadot compatible = "linux,extcon-usb-gpio"; 21*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 22*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_usb1_id>; 23*5f62a964SEmmanuel Vadot id-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; 24*5f62a964SEmmanuel Vadot }; 25*5f62a964SEmmanuel Vadot 26*5f62a964SEmmanuel Vadot leds { 27*5f62a964SEmmanuel Vadot compatible = "gpio-leds"; 28*5f62a964SEmmanuel Vadot 29*5f62a964SEmmanuel Vadot led1 { 30*5f62a964SEmmanuel Vadot label = "led1"; 31*5f62a964SEmmanuel Vadot gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; 32*5f62a964SEmmanuel Vadot linux,default-trigger = "heartbeat"; 33*5f62a964SEmmanuel Vadot }; 34*5f62a964SEmmanuel Vadot }; 35*5f62a964SEmmanuel Vadot 36*5f62a964SEmmanuel Vadot pwm-beeper { 37*5f62a964SEmmanuel Vadot compatible = "pwm-beeper"; 38*5f62a964SEmmanuel Vadot pwms = <&pwm2 0 5000 0>; 39*5f62a964SEmmanuel Vadot }; 40*5f62a964SEmmanuel Vadot 41*5f62a964SEmmanuel Vadot reg_vcc_panel: regulator-vcc-panel { 42*5f62a964SEmmanuel Vadot compatible = "regulator-fixed"; 43*5f62a964SEmmanuel Vadot gpio = <&gpio4 3 GPIO_ACTIVE_HIGH>; 44*5f62a964SEmmanuel Vadot enable-active-high; 45*5f62a964SEmmanuel Vadot regulator-max-microvolt = <3300000>; 46*5f62a964SEmmanuel Vadot regulator-min-microvolt = <3300000>; 47*5f62a964SEmmanuel Vadot regulator-name = "VCC_PANEL"; 48*5f62a964SEmmanuel Vadot }; 49*5f62a964SEmmanuel Vadot}; 50*5f62a964SEmmanuel Vadot 51*5f62a964SEmmanuel Vadot&ecspi2 { 52*5f62a964SEmmanuel Vadot status = "okay"; 53*5f62a964SEmmanuel Vadot 54*5f62a964SEmmanuel Vadot eeram@0 { 55*5f62a964SEmmanuel Vadot compatible = "microchip,48l640"; 56*5f62a964SEmmanuel Vadot reg = <0>; 57*5f62a964SEmmanuel Vadot spi-max-frequency = <20000000>; 58*5f62a964SEmmanuel Vadot }; 59*5f62a964SEmmanuel Vadot}; 60*5f62a964SEmmanuel Vadot 61*5f62a964SEmmanuel Vadot&eqos { /* Second ethernet (OSM-S ETH_B) */ 62*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 63*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_eqos_rgmii>; 64*5f62a964SEmmanuel Vadot phy-mode = "rgmii-id"; 65*5f62a964SEmmanuel Vadot phy-handle = <ðphy1>; 66*5f62a964SEmmanuel Vadot status = "okay"; 67*5f62a964SEmmanuel Vadot 68*5f62a964SEmmanuel Vadot mdio { 69*5f62a964SEmmanuel Vadot compatible = "snps,dwmac-mdio"; 70*5f62a964SEmmanuel Vadot #address-cells = <1>; 71*5f62a964SEmmanuel Vadot #size-cells = <0>; 72*5f62a964SEmmanuel Vadot 73*5f62a964SEmmanuel Vadot ethphy1: ethernet-phy@1 { 74*5f62a964SEmmanuel Vadot compatible = "ethernet-phy-id4f51.e91b"; 75*5f62a964SEmmanuel Vadot reg = <1>; 76*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_ethphy1>; 77*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 78*5f62a964SEmmanuel Vadot reset-assert-us = <10000>; 79*5f62a964SEmmanuel Vadot reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; 80*5f62a964SEmmanuel Vadot }; 81*5f62a964SEmmanuel Vadot }; 82*5f62a964SEmmanuel Vadot}; 83*5f62a964SEmmanuel Vadot 84*5f62a964SEmmanuel Vadot&fec { /* First ethernet (OSM-S ETH_A) */ 85*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 86*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_enet_rgmii>; 87*5f62a964SEmmanuel Vadot phy-connection-type = "rgmii-id"; 88*5f62a964SEmmanuel Vadot phy-handle = <ðphy0>; 89*5f62a964SEmmanuel Vadot status = "okay"; 90*5f62a964SEmmanuel Vadot 91*5f62a964SEmmanuel Vadot mdio { 92*5f62a964SEmmanuel Vadot #address-cells = <1>; 93*5f62a964SEmmanuel Vadot #size-cells = <0>; 94*5f62a964SEmmanuel Vadot 95*5f62a964SEmmanuel Vadot ethphy0: ethernet-phy@1 { 96*5f62a964SEmmanuel Vadot compatible = "ethernet-phy-id4f51.e91b"; 97*5f62a964SEmmanuel Vadot reg = <1>; 98*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_ethphy0>; 99*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 100*5f62a964SEmmanuel Vadot reset-assert-us = <10000>; 101*5f62a964SEmmanuel Vadot reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; 102*5f62a964SEmmanuel Vadot }; 103*5f62a964SEmmanuel Vadot }; 104*5f62a964SEmmanuel Vadot}; 105*5f62a964SEmmanuel Vadot 106*5f62a964SEmmanuel Vadot&flexcan1 { 107*5f62a964SEmmanuel Vadot status = "okay"; 108*5f62a964SEmmanuel Vadot}; 109*5f62a964SEmmanuel Vadot 110*5f62a964SEmmanuel Vadot/* 111*5f62a964SEmmanuel Vadot * Rename SoM signals according to board usage: 112*5f62a964SEmmanuel Vadot * SDIO_A_PWR_EN -> CAN_ADDR2 113*5f62a964SEmmanuel Vadot * SDIO_A_WP -> CAN_ADDR3 114*5f62a964SEmmanuel Vadot */ 115*5f62a964SEmmanuel Vadot&gpio2 { 116*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 117*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_gpio2>; 118*5f62a964SEmmanuel Vadot gpio-line-names = "", "", "", "", "", "", "", "", "", "", "", "", 119*5f62a964SEmmanuel Vadot "SDIO_A_CD", "SDIO_A_CLK", "SDIO_A_CMD", "SDIO_A_D0", 120*5f62a964SEmmanuel Vadot "SDIO_A_D1", "SDIO_A_D2", "SDIO_A_D3", "CAN_ADDR2", 121*5f62a964SEmmanuel Vadot "CAN_ADDR3"; 122*5f62a964SEmmanuel Vadot}; 123*5f62a964SEmmanuel Vadot 124*5f62a964SEmmanuel Vadot/* 125*5f62a964SEmmanuel Vadot * Rename SoM signals according to board usage: 126*5f62a964SEmmanuel Vadot * SPI_A_WP -> CAN_ADDR0 127*5f62a964SEmmanuel Vadot * SPI_A_HOLD -> CAN_ADDR1 128*5f62a964SEmmanuel Vadot * GPIO_B_0 -> DIO1_OUT 129*5f62a964SEmmanuel Vadot * GPIO_B_1 -> DIO2_OUT 130*5f62a964SEmmanuel Vadot */ 131*5f62a964SEmmanuel Vadot&gpio3 { 132*5f62a964SEmmanuel Vadot gpio-line-names = "PCIE_WAKE", "PCIE_CLKREQ", "PCIE_A_PERST", "SDIO_B_D5", 133*5f62a964SEmmanuel Vadot "SDIO_B_D6", "SDIO_B_D7", "CAN_ADDR0", "CAN_ADDR1", 134*5f62a964SEmmanuel Vadot "UART_B_RTS", "UART_B_CTS", "SDIO_B_D0", "SDIO_B_D1", 135*5f62a964SEmmanuel Vadot "SDIO_B_D2", "SDIO_B_D3", "SDIO_B_WP", "SDIO_B_D4", 136*5f62a964SEmmanuel Vadot "PCIE_SM_ALERT", "SDIO_B_CLK", "SDIO_B_CMD", "DIO1_OUT", 137*5f62a964SEmmanuel Vadot "DIO2_OUT", "", "BOOT_SEL0", "BOOT_SEL1", 138*5f62a964SEmmanuel Vadot "", "", "SDIO_B_CD", "SDIO_B_PWR_EN", 139*5f62a964SEmmanuel Vadot "HDMI_CEC", "HDMI_HPD"; 140*5f62a964SEmmanuel Vadot}; 141*5f62a964SEmmanuel Vadot 142*5f62a964SEmmanuel Vadot/* 143*5f62a964SEmmanuel Vadot * Rename SoM signals according to board usage: 144*5f62a964SEmmanuel Vadot * GPIO_B_5 -> DIO2_IN 145*5f62a964SEmmanuel Vadot * GPIO_B_6 -> DIO3_IN 146*5f62a964SEmmanuel Vadot * GPIO_B_7 -> DIO4_IN 147*5f62a964SEmmanuel Vadot * GPIO_B_3 -> DIO4_OUT 148*5f62a964SEmmanuel Vadot * GPIO_B_4 -> DIO1_IN 149*5f62a964SEmmanuel Vadot * GPIO_B_2 -> DIO3_OUT 150*5f62a964SEmmanuel Vadot */ 151*5f62a964SEmmanuel Vadot&gpio4 { 152*5f62a964SEmmanuel Vadot gpio-line-names = "DIO2_IN", "DIO3_IN", "DIO4_IN", "GPIO_C_0", 153*5f62a964SEmmanuel Vadot "ETH_A_MDC", "ETH_A_MDIO", "ETH_A_RXD0", "ETH_A_RXD1", 154*5f62a964SEmmanuel Vadot "ETH_A_RXD2", "ETH_A_RXD3", "ETH_A_RX_DV", "ETH_A_RX_CLK", 155*5f62a964SEmmanuel Vadot "ETH_A_TXD0", "ETH_A_TXD1", "ETH_A_TXD2", "ETH_A_TXD3", 156*5f62a964SEmmanuel Vadot "ETH_A_TX_EN", "ETH_A_TX_CLK", "DIO4_OUT", "DIO1_IN", 157*5f62a964SEmmanuel Vadot "DIO3_OUT", "GPIO_A_6", "CAN_A_TX", "UART_A_CTS", 158*5f62a964SEmmanuel Vadot "UART_A_RTS", "CAN_A_RX", "CAN_B_TX", "CAN_B_RX", 159*5f62a964SEmmanuel Vadot "GPIO_A_7", "CARRIER_PWR_EN", "I2S_A_DATA_IN", "I2S_LRCLK"; 160*5f62a964SEmmanuel Vadot}; 161*5f62a964SEmmanuel Vadot 162*5f62a964SEmmanuel Vadot&hdmi_pvi { 163*5f62a964SEmmanuel Vadot status = "okay"; 164*5f62a964SEmmanuel Vadot}; 165*5f62a964SEmmanuel Vadot 166*5f62a964SEmmanuel Vadot&hdmi_tx { 167*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 168*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_hdmi>; 169*5f62a964SEmmanuel Vadot ddc-i2c-bus = <&i2c2>; 170*5f62a964SEmmanuel Vadot status = "okay"; 171*5f62a964SEmmanuel Vadot}; 172*5f62a964SEmmanuel Vadot 173*5f62a964SEmmanuel Vadot&hdmi_tx_phy { 174*5f62a964SEmmanuel Vadot status = "okay"; 175*5f62a964SEmmanuel Vadot}; 176*5f62a964SEmmanuel Vadot 177*5f62a964SEmmanuel Vadot&i2c1 { 178*5f62a964SEmmanuel Vadot status = "okay"; 179*5f62a964SEmmanuel Vadot 180*5f62a964SEmmanuel Vadot gpio_expander_dio: io-expander@20 { 181*5f62a964SEmmanuel Vadot compatible = "ti,tca6408"; 182*5f62a964SEmmanuel Vadot reg = <0x20>; 183*5f62a964SEmmanuel Vadot gpio-controller; 184*5f62a964SEmmanuel Vadot #gpio-cells = <2>; 185*5f62a964SEmmanuel Vadot gpio-line-names = "DIO1_OUT","DIO1_IN", "DIO2_OUT","DIO2_IN", 186*5f62a964SEmmanuel Vadot "DIO3_OUT","DIO3_IN", "DIO4_OUT","DIO4_IN"; 187*5f62a964SEmmanuel Vadot interrupt-parent = <&gpio3>; 188*5f62a964SEmmanuel Vadot interrupts = <19 IRQ_TYPE_EDGE_FALLING>; 189*5f62a964SEmmanuel Vadot reset-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>; 190*5f62a964SEmmanuel Vadot }; 191*5f62a964SEmmanuel Vadot}; 192*5f62a964SEmmanuel Vadot 193*5f62a964SEmmanuel Vadot&i2c2 { 194*5f62a964SEmmanuel Vadot status = "okay"; 195*5f62a964SEmmanuel Vadot}; 196*5f62a964SEmmanuel Vadot 197*5f62a964SEmmanuel Vadot&i2c4 { 198*5f62a964SEmmanuel Vadot status = "okay"; 199*5f62a964SEmmanuel Vadot}; 200*5f62a964SEmmanuel Vadot 201*5f62a964SEmmanuel Vadot&lcdif3 { 202*5f62a964SEmmanuel Vadot status = "okay"; 203*5f62a964SEmmanuel Vadot}; 204*5f62a964SEmmanuel Vadot 205*5f62a964SEmmanuel Vadot&pwm2 { 206*5f62a964SEmmanuel Vadot status = "okay"; 207*5f62a964SEmmanuel Vadot}; 208*5f62a964SEmmanuel Vadot 209*5f62a964SEmmanuel Vadot®_usdhc2_vcc { 210*5f62a964SEmmanuel Vadot status = "disabled"; 211*5f62a964SEmmanuel Vadot}; 212*5f62a964SEmmanuel Vadot 213*5f62a964SEmmanuel Vadot&snvs_pwrkey { 214*5f62a964SEmmanuel Vadot status = "okay"; 215*5f62a964SEmmanuel Vadot}; 216*5f62a964SEmmanuel Vadot 217*5f62a964SEmmanuel Vadot&uart1 { 218*5f62a964SEmmanuel Vadot uart-has-rtscts; 219*5f62a964SEmmanuel Vadot status = "okay"; 220*5f62a964SEmmanuel Vadot}; 221*5f62a964SEmmanuel Vadot 222*5f62a964SEmmanuel Vadot&uart4 { 223*5f62a964SEmmanuel Vadot linux,rs485-enabled-at-boot-time; 224*5f62a964SEmmanuel Vadot uart-has-rtscts; 225*5f62a964SEmmanuel Vadot status = "okay"; 226*5f62a964SEmmanuel Vadot}; 227*5f62a964SEmmanuel Vadot 228*5f62a964SEmmanuel Vadot&usb_dwc3_0 { 229*5f62a964SEmmanuel Vadot adp-disable; 230*5f62a964SEmmanuel Vadot hnp-disable; 231*5f62a964SEmmanuel Vadot srp-disable; 232*5f62a964SEmmanuel Vadot dr_mode = "otg"; 233*5f62a964SEmmanuel Vadot extcon = <&extcon_usbc>; 234*5f62a964SEmmanuel Vadot usb-role-switch; 235*5f62a964SEmmanuel Vadot status = "okay"; 236*5f62a964SEmmanuel Vadot}; 237*5f62a964SEmmanuel Vadot 238*5f62a964SEmmanuel Vadot&usb_dwc3_1 { 239*5f62a964SEmmanuel Vadot pinctrl-names = "default"; 240*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_usb_hub>; 241*5f62a964SEmmanuel Vadot #address-cells = <1>; 242*5f62a964SEmmanuel Vadot #size-cells = <0>; 243*5f62a964SEmmanuel Vadot dr_mode = "host"; 244*5f62a964SEmmanuel Vadot status = "okay"; 245*5f62a964SEmmanuel Vadot 246*5f62a964SEmmanuel Vadot usb-hub@1 { 247*5f62a964SEmmanuel Vadot compatible = "usb424,2514"; 248*5f62a964SEmmanuel Vadot reg = <1>; 249*5f62a964SEmmanuel Vadot reset-gpios = <&gpio3 14 GPIO_ACTIVE_LOW>; 250*5f62a964SEmmanuel Vadot }; 251*5f62a964SEmmanuel Vadot}; 252*5f62a964SEmmanuel Vadot 253*5f62a964SEmmanuel Vadot&usb3_0 { 254*5f62a964SEmmanuel Vadot status = "okay"; 255*5f62a964SEmmanuel Vadot}; 256*5f62a964SEmmanuel Vadot 257*5f62a964SEmmanuel Vadot&usb3_1 { 258*5f62a964SEmmanuel Vadot fsl,disable-port-power-control; 259*5f62a964SEmmanuel Vadot fsl,permanently-attached; 260*5f62a964SEmmanuel Vadot status = "okay"; 261*5f62a964SEmmanuel Vadot}; 262*5f62a964SEmmanuel Vadot 263*5f62a964SEmmanuel Vadot&usb3_phy0 { 264*5f62a964SEmmanuel Vadot vbus-supply = <®_usb1_vbus>; 265*5f62a964SEmmanuel Vadot status = "okay"; 266*5f62a964SEmmanuel Vadot}; 267*5f62a964SEmmanuel Vadot 268*5f62a964SEmmanuel Vadot&usb3_phy1 { 269*5f62a964SEmmanuel Vadot status = "okay"; 270*5f62a964SEmmanuel Vadot}; 271*5f62a964SEmmanuel Vadot 272*5f62a964SEmmanuel Vadot&usdhc2 { 273*5f62a964SEmmanuel Vadot pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; 274*5f62a964SEmmanuel Vadot pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>; 275*5f62a964SEmmanuel Vadot pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>; 276*5f62a964SEmmanuel Vadot vmmc-supply = <®_vdd_3v3>; 277*5f62a964SEmmanuel Vadot status = "okay"; 278*5f62a964SEmmanuel Vadot}; 279*5f62a964SEmmanuel Vadot 280*5f62a964SEmmanuel Vadot&iomuxc { 281*5f62a964SEmmanuel Vadot pinctrl_ethphy0: ethphy0grp { 282*5f62a964SEmmanuel Vadot fsl,pins = < 283*5f62a964SEmmanuel Vadot MX8MP_IOMUXC_GPIO1_IO01__GPIO1_IO01 0x46 284*5f62a964SEmmanuel Vadot >; 285*5f62a964SEmmanuel Vadot }; 286*5f62a964SEmmanuel Vadot 287*5f62a964SEmmanuel Vadot pinctrl_ethphy1: ethphy1grp { 288*5f62a964SEmmanuel Vadot fsl,pins = < 289*5f62a964SEmmanuel Vadot MX8MP_IOMUXC_GPIO1_IO00__GPIO1_IO00 0x46 290*5f62a964SEmmanuel Vadot >; 291*5f62a964SEmmanuel Vadot }; 292*5f62a964SEmmanuel Vadot 293*5f62a964SEmmanuel Vadot pinctrl_gpio2: gpio2grp { 294*5f62a964SEmmanuel Vadot fsl,pins = < 295*5f62a964SEmmanuel Vadot MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19 0x46 296*5f62a964SEmmanuel Vadot MX8MP_IOMUXC_SD2_WP__GPIO2_IO20 0x46 297*5f62a964SEmmanuel Vadot >; 298*5f62a964SEmmanuel Vadot }; 299*5f62a964SEmmanuel Vadot 300*5f62a964SEmmanuel Vadot pinctrl_usb_hub: usbhubgrp { 301*5f62a964SEmmanuel Vadot fsl,pins = < 302*5f62a964SEmmanuel Vadot MX8MP_IOMUXC_NAND_DQS__GPIO3_IO14 0x46 303*5f62a964SEmmanuel Vadot >; 304*5f62a964SEmmanuel Vadot }; 305*5f62a964SEmmanuel Vadot}; 306