1*44eeddd6SMarek Vasut// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*44eeddd6SMarek Vasut/* 3*44eeddd6SMarek Vasut * Copyright (C) 2023 Marek Vasut <marex@denx.de> 4*44eeddd6SMarek Vasut * 5*44eeddd6SMarek Vasut * DHCOM iMX8MP variant: 6*44eeddd6SMarek Vasut * DHCM-iMX8ML8-C160-R409-F1638-SPI16-GE-CAN2-SD-RTC-WBTA-ADC-T-RGB-CSI2-HS-I-01D2 7*44eeddd6SMarek Vasut * DHCOM PCB number: 660-100 or newer 8*44eeddd6SMarek Vasut * PDK3 PCB number: 669-100 or newer 9*44eeddd6SMarek Vasut */ 10*44eeddd6SMarek Vasut 11*44eeddd6SMarek Vasut/dts-v1/; 12*44eeddd6SMarek Vasut 13*44eeddd6SMarek Vasut#include <dt-bindings/leds/common.h> 14*44eeddd6SMarek Vasut#include <dt-bindings/phy/phy-imx8-pcie.h> 15*44eeddd6SMarek Vasut#include "imx8mp-dhcom-som.dtsi" 16*44eeddd6SMarek Vasut 17*44eeddd6SMarek Vasut/ { 18*44eeddd6SMarek Vasut model = "DH electronics i.MX8M Plus DHCOM Premium Developer Kit (3)"; 19*44eeddd6SMarek Vasut compatible = "dh,imx8mp-dhcom-pdk3", "dh,imx8mp-dhcom-som", 20*44eeddd6SMarek Vasut "fsl,imx8mp"; 21*44eeddd6SMarek Vasut 22*44eeddd6SMarek Vasut chosen { 23*44eeddd6SMarek Vasut stdout-path = &uart1; 24*44eeddd6SMarek Vasut }; 25*44eeddd6SMarek Vasut 26*44eeddd6SMarek Vasut clk_ext_audio_codec: clock-codec { 27*44eeddd6SMarek Vasut compatible = "fixed-clock"; 28*44eeddd6SMarek Vasut #clock-cells = <0>; 29*44eeddd6SMarek Vasut clock-frequency = <24000000>; 30*44eeddd6SMarek Vasut }; 31*44eeddd6SMarek Vasut 32*44eeddd6SMarek Vasut clk_xtal25: clock-xtal25 { 33*44eeddd6SMarek Vasut compatible = "fixed-clock"; 34*44eeddd6SMarek Vasut #clock-cells = <0>; 35*44eeddd6SMarek Vasut clock-frequency = <25000000>; 36*44eeddd6SMarek Vasut }; 37*44eeddd6SMarek Vasut 38*44eeddd6SMarek Vasut connector { 39*44eeddd6SMarek Vasut compatible = "usb-c-connector"; 40*44eeddd6SMarek Vasut label = "USB-C"; 41*44eeddd6SMarek Vasut data-role = "dual"; 42*44eeddd6SMarek Vasut 43*44eeddd6SMarek Vasut ports { 44*44eeddd6SMarek Vasut #address-cells = <1>; 45*44eeddd6SMarek Vasut #size-cells = <0>; 46*44eeddd6SMarek Vasut 47*44eeddd6SMarek Vasut port@0 { 48*44eeddd6SMarek Vasut reg = <0>; 49*44eeddd6SMarek Vasut 50*44eeddd6SMarek Vasut usb_c_0_hs_ep: endpoint { 51*44eeddd6SMarek Vasut remote-endpoint = <&dwc3_0_hs_ep>; 52*44eeddd6SMarek Vasut }; 53*44eeddd6SMarek Vasut }; 54*44eeddd6SMarek Vasut 55*44eeddd6SMarek Vasut port@1 { 56*44eeddd6SMarek Vasut reg = <1>; 57*44eeddd6SMarek Vasut 58*44eeddd6SMarek Vasut usb_c_0_ss_ep: endpoint { 59*44eeddd6SMarek Vasut remote-endpoint = <&ptn5150_in_ep>; 60*44eeddd6SMarek Vasut }; 61*44eeddd6SMarek Vasut }; 62*44eeddd6SMarek Vasut }; 63*44eeddd6SMarek Vasut }; 64*44eeddd6SMarek Vasut 65*44eeddd6SMarek Vasut gpio-keys { 66*44eeddd6SMarek Vasut compatible = "gpio-keys"; 67*44eeddd6SMarek Vasut 68*44eeddd6SMarek Vasut button-0 { 69*44eeddd6SMarek Vasut gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; /* GPIO A */ 70*44eeddd6SMarek Vasut label = "TA1-GPIO-A"; 71*44eeddd6SMarek Vasut linux,code = <KEY_A>; 72*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_a>; 73*44eeddd6SMarek Vasut pinctrl-names = "default"; 74*44eeddd6SMarek Vasut wakeup-source; 75*44eeddd6SMarek Vasut }; 76*44eeddd6SMarek Vasut 77*44eeddd6SMarek Vasut button-1 { 78*44eeddd6SMarek Vasut gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; /* GPIO B */ 79*44eeddd6SMarek Vasut label = "TA2-GPIO-B"; 80*44eeddd6SMarek Vasut linux,code = <KEY_B>; 81*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_b>; 82*44eeddd6SMarek Vasut pinctrl-names = "default"; 83*44eeddd6SMarek Vasut wakeup-source; 84*44eeddd6SMarek Vasut }; 85*44eeddd6SMarek Vasut 86*44eeddd6SMarek Vasut button-2 { 87*44eeddd6SMarek Vasut gpios = <&gpio5 2 GPIO_ACTIVE_LOW>; /* GPIO C */ 88*44eeddd6SMarek Vasut label = "TA3-GPIO-C"; 89*44eeddd6SMarek Vasut linux,code = <KEY_C>; 90*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_c>; 91*44eeddd6SMarek Vasut pinctrl-names = "default"; 92*44eeddd6SMarek Vasut wakeup-source; 93*44eeddd6SMarek Vasut }; 94*44eeddd6SMarek Vasut 95*44eeddd6SMarek Vasut button-3 { 96*44eeddd6SMarek Vasut gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; /* GPIO E */ 97*44eeddd6SMarek Vasut label = "TA4-GPIO-E"; 98*44eeddd6SMarek Vasut linux,code = <KEY_E>; 99*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_e>; 100*44eeddd6SMarek Vasut pinctrl-names = "default"; 101*44eeddd6SMarek Vasut wakeup-source; 102*44eeddd6SMarek Vasut }; 103*44eeddd6SMarek Vasut }; 104*44eeddd6SMarek Vasut 105*44eeddd6SMarek Vasut led { 106*44eeddd6SMarek Vasut compatible = "gpio-leds"; 107*44eeddd6SMarek Vasut 108*44eeddd6SMarek Vasut led-0 { 109*44eeddd6SMarek Vasut color = <LED_COLOR_ID_GREEN>; 110*44eeddd6SMarek Vasut default-state = "off"; 111*44eeddd6SMarek Vasut function = LED_FUNCTION_INDICATOR; 112*44eeddd6SMarek Vasut function-enumerator = <0>; 113*44eeddd6SMarek Vasut gpios = <&gpio4 27 GPIO_ACTIVE_HIGH>; /* GPIO D */ 114*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_d>; 115*44eeddd6SMarek Vasut pinctrl-names = "default"; 116*44eeddd6SMarek Vasut }; 117*44eeddd6SMarek Vasut 118*44eeddd6SMarek Vasut led-1 { 119*44eeddd6SMarek Vasut color = <LED_COLOR_ID_GREEN>; 120*44eeddd6SMarek Vasut default-state = "off"; 121*44eeddd6SMarek Vasut function = LED_FUNCTION_INDICATOR; 122*44eeddd6SMarek Vasut function-enumerator = <1>; 123*44eeddd6SMarek Vasut gpios = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* GPIO F */ 124*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_f>; 125*44eeddd6SMarek Vasut pinctrl-names = "default"; 126*44eeddd6SMarek Vasut }; 127*44eeddd6SMarek Vasut 128*44eeddd6SMarek Vasut led-2 { 129*44eeddd6SMarek Vasut color = <LED_COLOR_ID_GREEN>; 130*44eeddd6SMarek Vasut default-state = "off"; 131*44eeddd6SMarek Vasut function = LED_FUNCTION_INDICATOR; 132*44eeddd6SMarek Vasut function-enumerator = <2>; 133*44eeddd6SMarek Vasut gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>; /* GPIO G */ 134*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_g>; 135*44eeddd6SMarek Vasut pinctrl-names = "default"; 136*44eeddd6SMarek Vasut }; 137*44eeddd6SMarek Vasut 138*44eeddd6SMarek Vasut led-3 { 139*44eeddd6SMarek Vasut color = <LED_COLOR_ID_GREEN>; 140*44eeddd6SMarek Vasut default-state = "off"; 141*44eeddd6SMarek Vasut function = LED_FUNCTION_INDICATOR; 142*44eeddd6SMarek Vasut function-enumerator = <3>; 143*44eeddd6SMarek Vasut gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; /* GPIO I */ 144*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_dhcom_i>; 145*44eeddd6SMarek Vasut pinctrl-names = "default"; 146*44eeddd6SMarek Vasut }; 147*44eeddd6SMarek Vasut }; 148*44eeddd6SMarek Vasut 149*44eeddd6SMarek Vasut reg_3p3vdd: regulator-3p3vdd { /* 3.3VDD */ 150*44eeddd6SMarek Vasut compatible = "regulator-fixed"; 151*44eeddd6SMarek Vasut regulator-always-on; 152*44eeddd6SMarek Vasut regulator-min-microvolt = <3300000>; 153*44eeddd6SMarek Vasut regulator-max-microvolt = <3300000>; 154*44eeddd6SMarek Vasut regulator-name = "3P3VDD"; 155*44eeddd6SMarek Vasut }; 156*44eeddd6SMarek Vasut 157*44eeddd6SMarek Vasut sound { 158*44eeddd6SMarek Vasut compatible = "simple-audio-card"; 159*44eeddd6SMarek Vasut simple-audio-card,name = "SGTL5000-Card"; 160*44eeddd6SMarek Vasut simple-audio-card,format = "i2s"; 161*44eeddd6SMarek Vasut simple-audio-card,bitclock-master = <&codec_dai>; 162*44eeddd6SMarek Vasut simple-audio-card,frame-master = <&codec_dai>; 163*44eeddd6SMarek Vasut simple-audio-card,widgets = "Headphone", "Headphone Jack"; 164*44eeddd6SMarek Vasut simple-audio-card,routing = "Headphone Jack", "HP_OUT"; 165*44eeddd6SMarek Vasut 166*44eeddd6SMarek Vasut cpu_dai: simple-audio-card,cpu { 167*44eeddd6SMarek Vasut sound-dai = <&sai3>; 168*44eeddd6SMarek Vasut }; 169*44eeddd6SMarek Vasut 170*44eeddd6SMarek Vasut codec_dai: simple-audio-card,codec { 171*44eeddd6SMarek Vasut sound-dai = <&sgtl5000>; 172*44eeddd6SMarek Vasut }; 173*44eeddd6SMarek Vasut }; 174*44eeddd6SMarek Vasut}; 175*44eeddd6SMarek Vasut 176*44eeddd6SMarek Vasut&i2c5 { 177*44eeddd6SMarek Vasut i2c-mux@70 { 178*44eeddd6SMarek Vasut compatible = "nxp,pca9540"; 179*44eeddd6SMarek Vasut reg = <0x70>; 180*44eeddd6SMarek Vasut #address-cells = <1>; 181*44eeddd6SMarek Vasut #size-cells = <0>; 182*44eeddd6SMarek Vasut 183*44eeddd6SMarek Vasut i2cmuxed0: i2c@0 { 184*44eeddd6SMarek Vasut #address-cells = <1>; 185*44eeddd6SMarek Vasut #size-cells = <0>; 186*44eeddd6SMarek Vasut reg = <0>; 187*44eeddd6SMarek Vasut 188*44eeddd6SMarek Vasut sgtl5000: codec@a { 189*44eeddd6SMarek Vasut compatible = "fsl,sgtl5000"; 190*44eeddd6SMarek Vasut reg = <0x0a>; 191*44eeddd6SMarek Vasut #sound-dai-cells = <0>; 192*44eeddd6SMarek Vasut clocks = <&clk_ext_audio_codec>; 193*44eeddd6SMarek Vasut VDDA-supply = <®_3p3vdd>; 194*44eeddd6SMarek Vasut VDDIO-supply = <®_vdd_3p3v_awo>; 195*44eeddd6SMarek Vasut }; 196*44eeddd6SMarek Vasut 197*44eeddd6SMarek Vasut typec@3d { 198*44eeddd6SMarek Vasut compatible = "nxp,ptn5150"; 199*44eeddd6SMarek Vasut reg = <0x3d>; 200*44eeddd6SMarek Vasut interrupt-parent = <&gpio4>; 201*44eeddd6SMarek Vasut interrupts = <25 IRQ_TYPE_EDGE_FALLING>; 202*44eeddd6SMarek Vasut pinctrl-names = "default"; 203*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_ptn5150>; 204*44eeddd6SMarek Vasut 205*44eeddd6SMarek Vasut ports { 206*44eeddd6SMarek Vasut #address-cells = <1>; 207*44eeddd6SMarek Vasut #size-cells = <0>; 208*44eeddd6SMarek Vasut 209*44eeddd6SMarek Vasut port@0 { 210*44eeddd6SMarek Vasut reg = <0>; 211*44eeddd6SMarek Vasut 212*44eeddd6SMarek Vasut ptn5150_in_ep: endpoint { 213*44eeddd6SMarek Vasut remote-endpoint = <&usb_c_0_ss_ep>; 214*44eeddd6SMarek Vasut }; 215*44eeddd6SMarek Vasut }; 216*44eeddd6SMarek Vasut 217*44eeddd6SMarek Vasut port@1 { 218*44eeddd6SMarek Vasut reg = <1>; 219*44eeddd6SMarek Vasut 220*44eeddd6SMarek Vasut ptn5150_out_ep: endpoint { 221*44eeddd6SMarek Vasut remote-endpoint = <&dwc3_0_ss_ep>; 222*44eeddd6SMarek Vasut }; 223*44eeddd6SMarek Vasut }; 224*44eeddd6SMarek Vasut }; 225*44eeddd6SMarek Vasut }; 226*44eeddd6SMarek Vasut 227*44eeddd6SMarek Vasut power-sensor@40 { 228*44eeddd6SMarek Vasut compatible = "ti,ina238"; 229*44eeddd6SMarek Vasut reg = <0x40>; 230*44eeddd6SMarek Vasut shunt-resistor = <20000>; /* 0.02 R */ 231*44eeddd6SMarek Vasut ti,shunt-gain = <1>; /* Drop cca. 40mV */ 232*44eeddd6SMarek Vasut }; 233*44eeddd6SMarek Vasut 234*44eeddd6SMarek Vasut eeprom_board: eeprom@54 { 235*44eeddd6SMarek Vasut compatible = "atmel,24c04"; 236*44eeddd6SMarek Vasut pagesize = <16>; 237*44eeddd6SMarek Vasut reg = <0x54>; 238*44eeddd6SMarek Vasut }; 239*44eeddd6SMarek Vasut 240*44eeddd6SMarek Vasut pcieclk: clock@6b { 241*44eeddd6SMarek Vasut compatible = "skyworks,si52144"; 242*44eeddd6SMarek Vasut reg = <0x6b>; 243*44eeddd6SMarek Vasut clocks = <&clk_xtal25>; 244*44eeddd6SMarek Vasut #clock-cells = <1>; 245*44eeddd6SMarek Vasut }; 246*44eeddd6SMarek Vasut }; 247*44eeddd6SMarek Vasut 248*44eeddd6SMarek Vasut i2cmuxed1: i2c@1 { /* HDMI DDC I2C */ 249*44eeddd6SMarek Vasut #address-cells = <1>; 250*44eeddd6SMarek Vasut #size-cells = <0>; 251*44eeddd6SMarek Vasut reg = <1>; 252*44eeddd6SMarek Vasut }; 253*44eeddd6SMarek Vasut }; 254*44eeddd6SMarek Vasut}; 255*44eeddd6SMarek Vasut 256*44eeddd6SMarek Vasutðphy0g { 257*44eeddd6SMarek Vasut reg = <7>; 258*44eeddd6SMarek Vasut}; 259*44eeddd6SMarek Vasut 260*44eeddd6SMarek Vasut&fec { /* Second ethernet */ 261*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_fec_rgmii>; 262*44eeddd6SMarek Vasut phy-handle = <ðphypdk>; 263*44eeddd6SMarek Vasut phy-mode = "rgmii-id"; 264*44eeddd6SMarek Vasut 265*44eeddd6SMarek Vasut mdio { 266*44eeddd6SMarek Vasut ethphypdk: ethernet-phy@7 { /* Micrel KSZ9131RNXI */ 267*44eeddd6SMarek Vasut compatible = "ethernet-phy-id0022.1642", 268*44eeddd6SMarek Vasut "ethernet-phy-ieee802.3-c22"; 269*44eeddd6SMarek Vasut interrupt-parent = <&gpio4>; 270*44eeddd6SMarek Vasut interrupts = <3 IRQ_TYPE_LEVEL_LOW>; 271*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_ethphy1>; 272*44eeddd6SMarek Vasut pinctrl-names = "default"; 273*44eeddd6SMarek Vasut reg = <7>; 274*44eeddd6SMarek Vasut reset-assert-us = <1000>; 275*44eeddd6SMarek Vasut /* RESET_N signal rise time ~100ms */ 276*44eeddd6SMarek Vasut reset-deassert-us = <120000>; 277*44eeddd6SMarek Vasut reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>; 278*44eeddd6SMarek Vasut }; 279*44eeddd6SMarek Vasut }; 280*44eeddd6SMarek Vasut}; 281*44eeddd6SMarek Vasut 282*44eeddd6SMarek Vasut&flexcan1 { 283*44eeddd6SMarek Vasut status = "okay"; 284*44eeddd6SMarek Vasut}; 285*44eeddd6SMarek Vasut 286*44eeddd6SMarek Vasut&pcie_phy { 287*44eeddd6SMarek Vasut clocks = <&pcieclk 1>; 288*44eeddd6SMarek Vasut clock-names = "ref"; 289*44eeddd6SMarek Vasut fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>; 290*44eeddd6SMarek Vasut status = "okay"; 291*44eeddd6SMarek Vasut}; 292*44eeddd6SMarek Vasut 293*44eeddd6SMarek Vasut&pcie { 294*44eeddd6SMarek Vasut fsl,max-link-speed = <3>; 295*44eeddd6SMarek Vasut reset-gpio = <&gpio1 6 GPIO_ACTIVE_LOW>; 296*44eeddd6SMarek Vasut status = "okay"; 297*44eeddd6SMarek Vasut}; 298*44eeddd6SMarek Vasut 299*44eeddd6SMarek Vasut&sai3 { 300*44eeddd6SMarek Vasut pinctrl-names = "default"; 301*44eeddd6SMarek Vasut pinctrl-0 = <&pinctrl_sai3>; 302*44eeddd6SMarek Vasut assigned-clocks = <&clk IMX8MP_CLK_SAI3>; 303*44eeddd6SMarek Vasut assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>; 304*44eeddd6SMarek Vasut assigned-clock-rates = <12288000>; 305*44eeddd6SMarek Vasut fsl,sai-mclk-direction-output; 306*44eeddd6SMarek Vasut status = "okay"; 307}; 308 309&usb_dwc3_0 { 310 usb-role-switch; 311 312 port { 313 #address-cells = <1>; 314 #size-cells = <0>; 315 316 dwc3_0_hs_ep: endpoint@0 { 317 reg = <0>; 318 remote-endpoint = <&usb_c_0_hs_ep>; 319 }; 320 321 dwc3_0_ss_ep: endpoint@1 { 322 reg = <1>; 323 remote-endpoint = <&ptn5150_out_ep>; 324 }; 325 }; 326}; 327 328&usb3_1 { 329 fsl,disable-port-power-control; 330 fsl,permanently-attached; 331}; 332 333&usb_dwc3_1 { 334 /* This port has USB5734 Hub connected to it, PWR/OC pins are unused */ 335 /delete-property/ pinctrl-names; 336 /delete-property/ pinctrl-0; 337}; 338 339&iomuxc { 340 /* 341 * GPIO_A,B,C,E are connected to buttons. 342 * GPIO_D,F,G,I are connected to LEDs. 343 * GPIO_H is connected to USB Hub RESET_N. 344 * GPIO_M is connected to CLKOUT2. 345 */ 346 pinctrl-0 = <&pinctrl_hog_base 347 &pinctrl_dhcom_h &pinctrl_dhcom_j &pinctrl_dhcom_k 348 &pinctrl_dhcom_l 349 &pinctrl_dhcom_int>; 350 351 pinctrl_ptn5150: ptn5150grp { 352 fsl,pins = < 353 MX8MP_IOMUXC_SAI2_TXC__GPIO4_IO25 0x40000000 354 >; 355 }; 356}; 357