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