1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2/* 3 * Copyright 2024 TechNexion Ltd. 4 * 5 * Author: Ray Chang <ray.chang@technexion.com> 6 */ 7 8/dts-v1/; 9 10#include <dt-bindings/phy/phy-imx8-pcie.h> 11#include "imx8mp-edm-g.dtsi" 12 13/ { 14 compatible = "technexion,edm-g-imx8mp-wb", "technexion,edm-g-imx8mp", "fsl,imx8mp"; 15 model = "TechNexion EDM-G-IMX8MP SOM on WB-EDM-G"; 16 17 connector { 18 compatible = "usb-c-connector"; 19 data-role = "dual"; 20 label = "USB-C"; 21 22 ports { 23 #address-cells = <1>; 24 #size-cells = <0>; 25 26 port@0 { 27 reg = <0>; 28 29 hs_ep: endpoint { 30 remote-endpoint = <&usb3_hs_ep>; 31 }; 32 }; 33 34 port@1 { 35 reg = <1>; 36 37 ss_ep: endpoint { 38 remote-endpoint = <&hd3ss3220_in_ep>; 39 }; 40 }; 41 }; 42 }; 43 44 hdmi-connector { 45 compatible = "hdmi-connector"; 46 label = "HDMI OUT"; 47 type = "a"; 48 49 port { 50 hdmi_in: endpoint { 51 remote-endpoint = <&hdmi_tx_out>; 52 }; 53 }; 54 }; 55 56 leds { 57 compatible = "gpio-leds"; 58 59 led { 60 default-state = "on"; 61 gpios = <&expander2 1 GPIO_ACTIVE_HIGH>; 62 label = "gpio-led"; 63 }; 64 }; 65 66 pcie0_refclk: clock-pcie-ref { 67 compatible = "fixed-clock"; 68 #clock-cells = <0>; 69 clock-frequency = <100000000>; 70 }; 71 72 reg_pwr_3v3: regulator-pwr-3v3 { 73 compatible = "regulator-fixed"; 74 regulator-always-on; 75 regulator-boot-on; 76 regulator-max-microvolt = <3300000>; 77 regulator-min-microvolt = <3300000>; 78 regulator-name = "pwr-3v3"; 79 }; 80 81 reg_pwr_5v: regulator-pwr-5v { 82 compatible = "regulator-fixed"; 83 regulator-always-on; 84 regulator-boot-on; 85 regulator-max-microvolt = <5000000>; 86 regulator-min-microvolt = <5000000>; 87 regulator-name = "pwr-5v"; 88 }; 89 90 sound-hdmi { 91 compatible = "fsl,imx-audio-hdmi"; 92 audio-cpu = <&aud2htx>; 93 hdmi-out; 94 model = "audio-hdmi"; 95 }; 96 97 sound-wm8960 { 98 compatible = "fsl,imx-audio-wm8960"; 99 audio-asrc = <&easrc>; 100 audio-codec = <&wm8960>; 101 audio-cpu = <&sai3>; 102 audio-routing = "Headphone Jack", "HP_L", 103 "Headphone Jack", "HP_R", 104 "Ext Spk", "SPK_LP", 105 "Ext Spk", "SPK_LN", 106 "Ext Spk", "SPK_RP", 107 "Ext Spk", "SPK_RN", 108 "LINPUT1", "Mic Jack", 109 "LINPUT1", "Mic Jack", 110 "Mic Jack", "MICB"; 111 model = "wm8960-audio"; 112 }; 113}; 114 115&aud2htx { 116 status = "okay"; 117}; 118 119&easrc { 120 fsl,asrc-rate = <48000>; 121 status = "okay"; 122}; 123 124&flexcan1 { 125 status = "okay"; 126}; 127 128&gpio1 { 129 gpio-line-names = 130 "", "", "", "", "", "", "DSI_RST", "", 131 "", "", "", "", "", "PCIE_CLKREQ_N", "", "", 132 "", "", "", "", "", "", "", "", 133 "", "", "", "", "", "", "", ""; 134 pinctrl-0 = <&pinctrl_gpio1>; 135}; 136 137&gpio4 { 138 gpio-line-names = 139 "", "", "", "", "", "", "GPIO_P249", "GPIO_P251", 140 "", "GPIO_P255", "", "", "", "", "", "", 141 "DSI_BL_EN", "DSI_VDDEN", "", "", "", "", "", "", 142 "", "", "", "", "", "", "", ""; 143 pinctrl-0 = <&pinctrl_gpio4>; 144}; 145 146&hdmi_pvi { 147 status = "okay"; 148}; 149 150&hdmi_tx { 151 pinctrl-0 = <&pinctrl_hdmi>; 152 pinctrl-names = "default"; 153 status = "okay"; 154 155 ports { 156 port@1 { 157 hdmi_tx_out: endpoint { 158 remote-endpoint = <&hdmi_in>; 159 }; 160 }; 161 }; 162}; 163 164&hdmi_tx_phy { 165 status = "okay"; 166}; 167 168&i2c2 { 169 status = "okay"; 170 171 wm8960: audio-codec@1a { 172 compatible = "wlf,wm8960"; 173 reg = <0x1a>; 174 clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>; 175 clock-names = "mclk"; 176 #sound-dai-cells = <0>; 177 AVDD-supply = <®_pwr_3v3>; 178 DBVDD-supply = <®_pwr_3v3>; 179 DCVDD-supply = <®_pwr_3v3>; 180 SPKVDD1-supply = <®_pwr_5v>; 181 SPKVDD2-supply = <®_pwr_5v>; 182 wlf,gpio-cfg = <1 2>; 183 wlf,hp-cfg = <2 2 3>; 184 wlf,shared-lrclk; 185 }; 186 187 expander1: gpio@21 { 188 compatible = "nxp,pca9555"; 189 reg = <0x21>; 190 #gpio-cells = <2>; 191 gpio-controller; 192 gpio-line-names = "EXPOSURE_TRIG_IN1", "FLASH_OUT1", 193 "INFO_TRIG_IN1", "CAM_SHUTTER1", "XVS1", 194 "PWR1_TIME0", "PWR1_TIME1", "PWR1_TIME2", 195 "EXPOSURE_TRIG_IN2", "FLASH_OUT2", 196 "INFO_TRIG_IN2", "CAM_SHUTTER2", "XVS2", 197 "PWR2_TIME0", "PWR2_TIME1", "PWR2_TIME2"; 198 }; 199 200 expander2: gpio@23 { 201 compatible = "nxp,pca9555"; 202 reg = <0x23>; 203 #interrupt-cells = <2>; 204 interrupt-controller; 205 interrupt-parent = <&gpio4>; 206 interrupts = <11 IRQ_TYPE_LEVEL_LOW>; 207 #gpio-cells = <2>; 208 gpio-controller; 209 gpio-line-names = "M2_DISABLE_N", "LED_EN", "", "", 210 "", "", "", "USB_OTG_OC", 211 "EXT_GPIO8", "EXT_GPIO9", "", "", 212 "", "CSI1_PDB", "CSI2_PDB", "PD_FAULT"; 213 pinctrl-0 = <&pinctrl_expander2_irq>; 214 pinctrl-names = "default"; 215 }; 216 217 usb_typec: usb-typec@67 { 218 compatible = "ti,hd3ss3220"; 219 reg = <0x67>; 220 interrupt-parent = <&gpio4>; 221 interrupts = <8 IRQ_TYPE_LEVEL_LOW>; 222 pinctrl-0 = <&pinctrl_hd3ss3220_irq>; 223 pinctrl-names = "default"; 224 225 ports { 226 #address-cells = <1>; 227 #size-cells = <0>; 228 229 port@0 { 230 reg = <0>; 231 232 hd3ss3220_in_ep: endpoint { 233 remote-endpoint = <&ss_ep>; 234 }; 235 }; 236 237 port@1 { 238 reg = <1>; 239 240 hd3ss3220_out_ep: endpoint { 241 remote-endpoint = <&usb3_role_switch>; 242 }; 243 }; 244 }; 245 }; 246}; 247 248&i2c_0 { 249 eeprom2: eeprom@51 { 250 compatible = "atmel,24c02"; 251 reg = <0x51>; 252 pagesize = <16>; 253 }; 254}; 255 256&lcdif3 { 257 status = "okay"; 258}; 259 260&pcie { 261 status = "okay"; 262}; 263 264&pcie_phy { 265 clocks = <&pcie0_refclk>; 266 clock-names = "ref"; 267 fsl,clkreq-unsupported; 268 fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>; 269 status = "okay"; 270}; 271 272&usb3_0 { 273 status = "okay"; 274}; 275 276&usb3_1 { 277 status = "okay"; 278}; 279 280&usb3_phy0 { 281 status = "okay"; 282}; 283 284&usb3_phy1 { 285 status = "okay"; 286}; 287 288&usb_dwc3_0 { 289 /* dual role is implemented but not a full featured OTG */ 290 adp-disable; 291 dr_mode = "otg"; 292 hnp-disable; 293 role-switch-default-mode = "peripheral"; 294 srp-disable; 295 usb-role-switch; 296 297 ports { 298 #address-cells = <1>; 299 #size-cells = <0>; 300 301 port@0 { 302 reg = <0>; 303 304 usb3_hs_ep: endpoint { 305 remote-endpoint = <&hs_ep>; 306 }; 307 }; 308 309 port@1 { 310 reg = <1>; 311 312 usb3_role_switch: endpoint { 313 remote-endpoint = <&hd3ss3220_out_ep>; 314 }; 315 }; 316 }; 317}; 318 319&usb_dwc3_1 { 320 dr_mode = "host"; 321}; 322 323&iomuxc { 324 pinctrl_expander2_irq: expander2-irqgrp { 325 fsl,pins = < 326 MX8MP_IOMUXC_SAI1_TXC__GPIO4_IO11 0x140 /* GPIO_P247 */ 327 >; 328 }; 329 330 pinctrl_gpio1: gpio1grp { 331 fsl,pins = < 332 MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06 0x16 /* DSI_RST */ 333 >; 334 }; 335 336 pinctrl_gpio4: gpio4grp { 337 fsl,pins = < 338 MX8MP_IOMUXC_SAI1_RXD4__GPIO4_IO06 0x16 /* GPIO_P249 */ 339 MX8MP_IOMUXC_SAI1_RXD5__GPIO4_IO07 0x16 /* GPIO_P251 */ 340 MX8MP_IOMUXC_SAI1_RXD7__GPIO4_IO09 0x16 /* GPIO_P255 */ 341 MX8MP_IOMUXC_SAI1_TXD4__GPIO4_IO16 0x16 /* DSI_BL_EN */ 342 MX8MP_IOMUXC_SAI1_TXD5__GPIO4_IO17 0x16 /* DSI_VDDEN */ 343 >; 344 }; 345 346 pinctrl_hd3ss3220_irq: hd3ss3220-irqgrp { 347 fsl,pins = < 348 MX8MP_IOMUXC_SAI1_RXD6__GPIO4_IO08 0x41 /* GPIO_P253 */ 349 >; 350 }; 351 352 pinctrl_hdmi: hdmigrp { 353 fsl,pins = < 354 MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL 0x1c2 355 MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA 0x1c2 356 MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC 0x10 357 >; 358 }; 359}; 360