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