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