1*6fe1ced5SFrieder Schrempf// SPDX-License-Identifier: GPL-2.0+ OR MIT 2*6fe1ced5SFrieder Schrempf/* 3*6fe1ced5SFrieder Schrempf * Copyright (C) 2024 Kontron Electronics GmbH 4*6fe1ced5SFrieder Schrempf */ 5*6fe1ced5SFrieder Schrempf 6*6fe1ced5SFrieder Schrempf/dts-v1/; 7*6fe1ced5SFrieder Schrempf 8*6fe1ced5SFrieder Schrempf#include <dt-bindings/phy/phy-imx8-pcie.h> 9*6fe1ced5SFrieder Schrempf#include "imx8mp-kontron-smarc.dtsi" 10*6fe1ced5SFrieder Schrempf 11*6fe1ced5SFrieder Schrempf/ { 12*6fe1ced5SFrieder Schrempf model = "Kontron SMARC Eval Carrier with i.MX8MP"; 13*6fe1ced5SFrieder Schrempf compatible = "kontron,imx8mp-smarc-eval-carrier", "kontron,imx8mp-smarc", 14*6fe1ced5SFrieder Schrempf "kontron,imx8mp-osm-s", "fsl,imx8mp"; 15*6fe1ced5SFrieder Schrempf 16*6fe1ced5SFrieder Schrempf backlight: backlight { 17*6fe1ced5SFrieder Schrempf compatible = "pwm-backlight"; 18*6fe1ced5SFrieder Schrempf pwms = <&pwm1 0 50000 0>; 19*6fe1ced5SFrieder Schrempf brightness-levels = <0 100>; 20*6fe1ced5SFrieder Schrempf num-interpolated-steps = <100>; 21*6fe1ced5SFrieder Schrempf default-brightness-level = <100>; 22*6fe1ced5SFrieder Schrempf enable-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>; 23*6fe1ced5SFrieder Schrempf }; 24*6fe1ced5SFrieder Schrempf 25*6fe1ced5SFrieder Schrempf extcon_usbc: usbc { 26*6fe1ced5SFrieder Schrempf compatible = "linux,extcon-usb-gpio"; 27*6fe1ced5SFrieder Schrempf pinctrl-names = "default"; 28*6fe1ced5SFrieder Schrempf pinctrl-0 = <&pinctrl_usb1_id>; 29*6fe1ced5SFrieder Schrempf id-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; 30*6fe1ced5SFrieder Schrempf }; 31*6fe1ced5SFrieder Schrempf 32*6fe1ced5SFrieder Schrempf sound { 33*6fe1ced5SFrieder Schrempf compatible = "simple-audio-card"; 34*6fe1ced5SFrieder Schrempf simple-audio-card,bitclock-master = <&codec_dai>; 35*6fe1ced5SFrieder Schrempf simple-audio-card,format = "i2s"; 36*6fe1ced5SFrieder Schrempf simple-audio-card,frame-master = <&codec_dai>; 37*6fe1ced5SFrieder Schrempf simple-audio-card,mclk-fs = <256>; 38*6fe1ced5SFrieder Schrempf simple-audio-card,name = "imx8mp-wm8904"; 39*6fe1ced5SFrieder Schrempf simple-audio-card,routing = 40*6fe1ced5SFrieder Schrempf "Headphone Jack", "HPOUTL", 41*6fe1ced5SFrieder Schrempf "Headphone Jack", "HPOUTR", 42*6fe1ced5SFrieder Schrempf "IN2L", "Line In Jack", 43*6fe1ced5SFrieder Schrempf "IN2R", "Line In Jack", 44*6fe1ced5SFrieder Schrempf "Headphone Jack", "MICBIAS", 45*6fe1ced5SFrieder Schrempf "IN1L", "Headphone Jack"; 46*6fe1ced5SFrieder Schrempf simple-audio-card,widgets = 47*6fe1ced5SFrieder Schrempf "Microphone", "Headphone Jack", 48*6fe1ced5SFrieder Schrempf "Headphone", "Headphone Jack", 49*6fe1ced5SFrieder Schrempf "Line", "Line In Jack"; 50*6fe1ced5SFrieder Schrempf 51*6fe1ced5SFrieder Schrempf codec_dai: simple-audio-card,codec { 52*6fe1ced5SFrieder Schrempf clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>; 53*6fe1ced5SFrieder Schrempf sound-dai = <&wm8904>; 54*6fe1ced5SFrieder Schrempf }; 55*6fe1ced5SFrieder Schrempf 56*6fe1ced5SFrieder Schrempf simple-audio-card,cpu { 57*6fe1ced5SFrieder Schrempf sound-dai = <&sai3>; 58*6fe1ced5SFrieder Schrempf }; 59*6fe1ced5SFrieder Schrempf }; 60*6fe1ced5SFrieder Schrempf 61*6fe1ced5SFrieder Schrempf regulator_can0: can0-regulator { 62*6fe1ced5SFrieder Schrempf compatible = "regulator-fixed"; 63*6fe1ced5SFrieder Schrempf regulator-name = "can0_en"; 64*6fe1ced5SFrieder Schrempf gpio = <&expander_pm_out 6 GPIO_ACTIVE_HIGH>; 65*6fe1ced5SFrieder Schrempf enable-active-high; 66*6fe1ced5SFrieder Schrempf }; 67*6fe1ced5SFrieder Schrempf 68*6fe1ced5SFrieder Schrempf regulator_can1: can1-regulator { 69*6fe1ced5SFrieder Schrempf compatible = "regulator-fixed"; 70*6fe1ced5SFrieder Schrempf regulator-name = "can1_en"; 71*6fe1ced5SFrieder Schrempf gpio = <&expander_pm_out 7 GPIO_ACTIVE_HIGH>; 72*6fe1ced5SFrieder Schrempf enable-active-high; 73*6fe1ced5SFrieder Schrempf }; 74*6fe1ced5SFrieder Schrempf}; 75*6fe1ced5SFrieder Schrempf 76*6fe1ced5SFrieder Schrempf&ecspi1 { 77*6fe1ced5SFrieder Schrempf status = "okay"; 78*6fe1ced5SFrieder Schrempf}; 79*6fe1ced5SFrieder Schrempf 80*6fe1ced5SFrieder Schrempf&ecspi2 { 81*6fe1ced5SFrieder Schrempf status = "okay"; 82*6fe1ced5SFrieder Schrempf}; 83*6fe1ced5SFrieder Schrempf 84*6fe1ced5SFrieder Schrempf&eqos { 85*6fe1ced5SFrieder Schrempf status = "okay"; 86*6fe1ced5SFrieder Schrempf}; 87*6fe1ced5SFrieder Schrempf 88*6fe1ced5SFrieder Schrempf&fec { 89*6fe1ced5SFrieder Schrempf status = "okay"; 90*6fe1ced5SFrieder Schrempf}; 91*6fe1ced5SFrieder Schrempf 92*6fe1ced5SFrieder Schrempf&flexcan1 { 93*6fe1ced5SFrieder Schrempf xceiver-supply = <®ulator_can0>; 94*6fe1ced5SFrieder Schrempf status = "okay"; 95*6fe1ced5SFrieder Schrempf}; 96*6fe1ced5SFrieder Schrempf 97*6fe1ced5SFrieder Schrempf&flexcan2 { 98*6fe1ced5SFrieder Schrempf xceiver-supply = <®ulator_can1>; 99*6fe1ced5SFrieder Schrempf status = "okay"; 100*6fe1ced5SFrieder Schrempf}; 101*6fe1ced5SFrieder Schrempf 102*6fe1ced5SFrieder Schrempf&hdmi_pvi { 103*6fe1ced5SFrieder Schrempf status = "okay"; 104*6fe1ced5SFrieder Schrempf}; 105*6fe1ced5SFrieder Schrempf 106*6fe1ced5SFrieder Schrempf&hdmi_tx { 107*6fe1ced5SFrieder Schrempf pinctrl-names = "default"; 108*6fe1ced5SFrieder Schrempf pinctrl-0 = <&pinctrl_hdmi>; 109*6fe1ced5SFrieder Schrempf ddc-i2c-bus = <&i2c3>; 110*6fe1ced5SFrieder Schrempf status = "okay"; 111*6fe1ced5SFrieder Schrempf}; 112*6fe1ced5SFrieder Schrempf 113*6fe1ced5SFrieder Schrempf&hdmi_tx_phy { 114*6fe1ced5SFrieder Schrempf status = "okay"; 115*6fe1ced5SFrieder Schrempf}; 116*6fe1ced5SFrieder Schrempf 117*6fe1ced5SFrieder Schrempf&i2c1 { 118*6fe1ced5SFrieder Schrempf status = "okay"; 119*6fe1ced5SFrieder Schrempf 120*6fe1ced5SFrieder Schrempf expander_pm_out: io-expander@22 { 121*6fe1ced5SFrieder Schrempf compatible = "nxp,pca9554"; 122*6fe1ced5SFrieder Schrempf reg = <0x22>; 123*6fe1ced5SFrieder Schrempf gpio-controller; 124*6fe1ced5SFrieder Schrempf #gpio-cells = <2>; 125*6fe1ced5SFrieder Schrempf gpio-line-names = "EN_5V0_S0", "EN_3V3_S0", "EN_1V8_S0", 126*6fe1ced5SFrieder Schrempf "EN_1V5_S0", "EN_12V0_PCIE", "EN_3V3_S5", 127*6fe1ced5SFrieder Schrempf "CAN0_EN", "CAN1_EN"; 128*6fe1ced5SFrieder Schrempf }; 129*6fe1ced5SFrieder Schrempf 130*6fe1ced5SFrieder Schrempf expander_pm_in: io-expander@24 { 131*6fe1ced5SFrieder Schrempf compatible = "nxp,pca9554"; 132*6fe1ced5SFrieder Schrempf reg = <0x24>; 133*6fe1ced5SFrieder Schrempf gpio-controller; 134*6fe1ced5SFrieder Schrempf #gpio-cells = <2>; 135*6fe1ced5SFrieder Schrempf gpio-line-names = "PG_5V0_3V3_S0", "PG_5V0_3V3_S5", "PG_1V8_S0", 136*6fe1ced5SFrieder Schrempf "PG_1V5_S0", "PG_BKLT_5V", "PG_BKLT_12V"; 137*6fe1ced5SFrieder Schrempf }; 138*6fe1ced5SFrieder Schrempf}; 139*6fe1ced5SFrieder Schrempf 140*6fe1ced5SFrieder Schrempf&i2c2 { 141*6fe1ced5SFrieder Schrempf status = "okay"; 142*6fe1ced5SFrieder Schrempf 143*6fe1ced5SFrieder Schrempf wm8904: audio-codec@1a { 144*6fe1ced5SFrieder Schrempf compatible = "wlf,wm8904"; 145*6fe1ced5SFrieder Schrempf reg = <0x1a>; 146*6fe1ced5SFrieder Schrempf #sound-dai-cells = <0>; 147*6fe1ced5SFrieder Schrempf clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>; 148*6fe1ced5SFrieder Schrempf clock-names = "mclk"; 149*6fe1ced5SFrieder Schrempf AVDD-supply = <®_vdd_1v8>; 150*6fe1ced5SFrieder Schrempf CPVDD-supply = <®_vdd_1v8>; 151*6fe1ced5SFrieder Schrempf DBVDD-supply = <®_vdd_1v8>; 152*6fe1ced5SFrieder Schrempf DCVDD-supply = <®_vdd_1v8>; 153*6fe1ced5SFrieder Schrempf MICVDD-supply = <®_vdd_3v3>; 154*6fe1ced5SFrieder Schrempf }; 155*6fe1ced5SFrieder Schrempf 156*6fe1ced5SFrieder Schrempf expander_audio: io-expander@20 { 157*6fe1ced5SFrieder Schrempf compatible = "nxp,pca9554"; 158*6fe1ced5SFrieder Schrempf reg = <0x20>; 159*6fe1ced5SFrieder Schrempf gpio-controller; 160*6fe1ced5SFrieder Schrempf #gpio-cells = <2>; 161*6fe1ced5SFrieder Schrempf gpio-line-names = "I2C_SEL_CODEC_LOOPBACK", "FPAH_PRESENCE", 162*6fe1ced5SFrieder Schrempf "CODEC_OPTION_SW_I2S_HDA", "LINE_IN_JD", 163*6fe1ced5SFrieder Schrempf "LINE_OUT_JD", "HEADPHONES_JD", "MIC_JD"; 164*6fe1ced5SFrieder Schrempf }; 165*6fe1ced5SFrieder Schrempf}; 166*6fe1ced5SFrieder Schrempf 167*6fe1ced5SFrieder Schrempf&i2c3 { 168*6fe1ced5SFrieder Schrempf status = "okay"; 169*6fe1ced5SFrieder Schrempf}; 170*6fe1ced5SFrieder Schrempf 171*6fe1ced5SFrieder Schrempf&i2c4 { 172*6fe1ced5SFrieder Schrempf status = "okay"; 173*6fe1ced5SFrieder Schrempf}; 174*6fe1ced5SFrieder Schrempf 175*6fe1ced5SFrieder Schrempf&lcdif3 { 176*6fe1ced5SFrieder Schrempf status = "okay"; 177*6fe1ced5SFrieder Schrempf}; 178*6fe1ced5SFrieder Schrempf 179*6fe1ced5SFrieder Schrempf&pcie_phy { 180*6fe1ced5SFrieder Schrempf fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>; 181*6fe1ced5SFrieder Schrempf fsl,clkreq-unsupported; 182*6fe1ced5SFrieder Schrempf clocks = <&hsio_blk_ctrl>; 183*6fe1ced5SFrieder Schrempf clock-names = "ref"; 184*6fe1ced5SFrieder Schrempf status = "okay"; 185*6fe1ced5SFrieder Schrempf}; 186*6fe1ced5SFrieder Schrempf 187*6fe1ced5SFrieder Schrempf&pcie { 188*6fe1ced5SFrieder Schrempf pinctrl-names = "default"; 189*6fe1ced5SFrieder Schrempf pinctrl-0 = <&pinctrl_pcie>; 190*6fe1ced5SFrieder Schrempf reset-gpio = <&gpio3 2 GPIO_ACTIVE_LOW>; 191*6fe1ced5SFrieder Schrempf status = "okay"; 192*6fe1ced5SFrieder Schrempf}; 193*6fe1ced5SFrieder Schrempf 194*6fe1ced5SFrieder Schrempf&pwm1 { 195*6fe1ced5SFrieder Schrempf status = "okay"; 196*6fe1ced5SFrieder Schrempf}; 197*6fe1ced5SFrieder Schrempf 198*6fe1ced5SFrieder Schrempf&sai3 { 199*6fe1ced5SFrieder Schrempf assigned-clocks = <&clk IMX8MP_CLK_SAI3>; 200*6fe1ced5SFrieder Schrempf assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>; 201*6fe1ced5SFrieder Schrempf assigned-clock-rates = <24576000>; 202*6fe1ced5SFrieder Schrempf fsl,sai-mclk-direction-output; 203*6fe1ced5SFrieder Schrempf status = "okay"; 204*6fe1ced5SFrieder Schrempf}; 205*6fe1ced5SFrieder Schrempf 206*6fe1ced5SFrieder Schrempf&uart1 { 207*6fe1ced5SFrieder Schrempf uart-has-rtscts; 208*6fe1ced5SFrieder Schrempf status = "okay"; 209*6fe1ced5SFrieder Schrempf}; 210*6fe1ced5SFrieder Schrempf 211*6fe1ced5SFrieder Schrempf&uart2 { 212*6fe1ced5SFrieder Schrempf status = "okay"; 213*6fe1ced5SFrieder Schrempf}; 214*6fe1ced5SFrieder Schrempf 215*6fe1ced5SFrieder Schrempf&uart4 { 216*6fe1ced5SFrieder Schrempf uart-has-rtscts; 217*6fe1ced5SFrieder Schrempf status = "okay"; 218*6fe1ced5SFrieder Schrempf}; 219*6fe1ced5SFrieder Schrempf 220*6fe1ced5SFrieder Schrempf&usb_dwc3_0 { 221*6fe1ced5SFrieder Schrempf adp-disable; 222*6fe1ced5SFrieder Schrempf hnp-disable; 223*6fe1ced5SFrieder Schrempf srp-disable; 224*6fe1ced5SFrieder Schrempf dr_mode = "otg"; 225*6fe1ced5SFrieder Schrempf extcon = <&extcon_usbc>; 226*6fe1ced5SFrieder Schrempf usb-role-switch; 227*6fe1ced5SFrieder Schrempf status = "okay"; 228*6fe1ced5SFrieder Schrempf}; 229*6fe1ced5SFrieder Schrempf 230*6fe1ced5SFrieder Schrempf&usb_dwc3_1 { 231*6fe1ced5SFrieder Schrempf status = "okay"; 232*6fe1ced5SFrieder Schrempf}; 233*6fe1ced5SFrieder Schrempf 234*6fe1ced5SFrieder Schrempf&usb3_0 { 235*6fe1ced5SFrieder Schrempf status = "okay"; 236*6fe1ced5SFrieder Schrempf}; 237*6fe1ced5SFrieder Schrempf 238*6fe1ced5SFrieder Schrempf&usb3_1 { 239*6fe1ced5SFrieder Schrempf status = "okay"; 240*6fe1ced5SFrieder Schrempf}; 241*6fe1ced5SFrieder Schrempf 242*6fe1ced5SFrieder Schrempf&usb3_phy0 { 243*6fe1ced5SFrieder Schrempf vbus-supply = <®_usb1_vbus>; 244*6fe1ced5SFrieder Schrempf status = "okay"; 245*6fe1ced5SFrieder Schrempf}; 246*6fe1ced5SFrieder Schrempf 247*6fe1ced5SFrieder Schrempf&usb3_phy1 { 248*6fe1ced5SFrieder Schrempf status = "okay"; 249*6fe1ced5SFrieder Schrempf}; 250*6fe1ced5SFrieder Schrempf 251*6fe1ced5SFrieder Schrempf&usdhc2 { 252*6fe1ced5SFrieder Schrempf vmmc-supply = <®_vdd_3v3>; 253*6fe1ced5SFrieder Schrempf status = "okay"; 254*6fe1ced5SFrieder Schrempf}; 255