// SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Copyright 2020 Boundary Devices * Copyright 2025 Collabora Ltd. */ /dts-v1/; #include "imx8mp-nitrogen-som.dtsi" / { model = "Boundary Devices Nitrogen8M Plus ENC Carrier Board"; compatible = "boundary,imx8mp-nitrogen-enc-carrier-board", "boundary,imx8mp-nitrogen-som", "fsl,imx8mp"; chosen { stdout-path = &uart2; }; connector { compatible = "usb-c-connector"; data-role = "dual"; label = "USB-C"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hs_ep: endpoint { remote-endpoint = <&usb3_hs_ep>; }; }; port@1 { reg = <1>; ss_ep: endpoint { remote-endpoint = <&hd3ss3220_in_ep>; }; }; }; }; hdmi-connector { compatible = "hdmi-connector"; label = "hdmi"; type = "a"; port { hdmi_connector_in: endpoint { remote-endpoint = <&hdmi_tx_out>; }; }; }; reg_usb_vbus: regulator { compatible = "regulator-fixed"; enable-active-high; gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_reg_usb_vbus>; regulator-name = "usb_vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; }; }; &ecspi2 { cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; pinctrl-0 = <&pinctrl_ecspi2>; pinctrl-names = "default"; status = "okay"; }; &gpio1 { usb-hub-reset-hog { gpio-hog; gpios = <6 GPIO_ACTIVE_LOW>; line-name = "usb-hub-reset"; output-low; }; }; &hdmi_pvi { status = "okay"; }; &hdmi_tx { pinctrl-0 = <&pinctrl_hdmi>; pinctrl-names = "default"; status = "okay"; ports { port@1 { hdmi_tx_out: endpoint { remote-endpoint = <&hdmi_connector_in>; }; }; }; }; &hdmi_tx_phy { status = "okay"; }; &i2c2 { i2c-mux@70 { compatible = "nxp,pca9546"; reg = <0x70>; #address-cells = <1>; #size-cells = <0>; pinctrl-0 = <&pinctrl_i2c2_pca9546>; pinctrl-names = "default"; reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; i2c@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; clock-frequency = <100000>; }; i2c@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; clock-frequency = <100000>; }; i2c@2 { reg = <2>; #address-cells = <1>; #size-cells = <0>; clock-frequency = <100000>; }; i2c@3 { reg = <3>; #address-cells = <1>; #size-cells = <0>; clock-frequency = <100000>; rtc@52 { compatible = "microcrystal,rv3028"; reg = <0x52>; interrupts-extended = <&gpio1 4 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_rv3028>; wakeup-source; }; }; }; }; &i2c4 { usb-mux@47 { compatible = "ti,hd3ss3220"; reg = <0x47>; interrupts-extended = <&gpio1 8 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c4_hd3ss3220>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hd3ss3220_in_ep: endpoint { remote-endpoint = <&ss_ep>; }; }; port@1 { reg = <1>; hd3ss3220_out_ep: endpoint { remote-endpoint = <&usb3_role_switch>; }; }; }; }; }; &isp_0 { status = "okay"; }; &lcdif3 { status = "okay"; }; &pwm1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm1>; status = "okay"; }; &pwm2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm2>; status = "okay"; }; &pwm4 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm4>; status = "okay"; }; &snvs_pwrkey { status = "okay"; }; &uart2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart2>; status = "okay"; }; &uart3 { assigned-clocks = <&clk IMX8MP_CLK_UART3>; assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart3>; status = "okay"; }; &uart4 { assigned-clocks = <&clk IMX8MP_CLK_UART4>; assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart4>; status = "okay"; }; &usb3_0 { fsl,over-current-active-low; status = "okay"; }; &usb3_1 { status = "okay"; }; &usb3_phy0 { vbus-supply = <®_usb_vbus>; status = "okay"; }; &usb3_phy1 { vbus-supply = <®_usb_vbus>; status = "okay"; }; &usb_dwc3_0 { dr_mode = "otg"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usb3_0>; usb-role-switch; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usb3_hs_ep: endpoint { remote-endpoint = <&hs_ep>; }; }; port@1 { reg = <1>; usb3_role_switch: endpoint { remote-endpoint = <&hd3ss3220_out_ep>; }; }; }; }; &usb_dwc3_1 { dr_mode = "host"; status = "okay"; }; &usdhc1 { bus-width = <4>; cd-gpios = <&gpio2 11 GPIO_ACTIVE_LOW>; pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_usdhc1_gpio>; pinctrl-1 = <&pinctrl_usdhc1_100mhz>, <&pinctrl_usdhc1_gpio>; pinctrl-2 = <&pinctrl_usdhc1_200mhz>, <&pinctrl_usdhc1_gpio>; status = "okay"; }; &iomuxc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; pinctrl_ecspi2: ecspi2grp { fsl,pins = < MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x82 MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x82 MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK 0x82 MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x143 >; }; pinctrl_hdmi: hdmigrp { fsl,pins = < MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC 0x40000019 MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL 0x400001c3 MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA 0x400001c3 MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_HDMI_HPD 0x40000019 >; }; pinctrl_hog: hoggrp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06 0x100 MX8MP_IOMUXC_NAND_DATA01__GPIO3_IO07 0x119 MX8MP_IOMUXC_SAI1_MCLK__GPIO4_IO20 0x16 MX8MP_IOMUXC_SAI1_TXD7__GPIO4_IO19 0x1c4 MX8MP_IOMUXC_SD1_DATA4__GPIO2_IO06 0x41 MX8MP_IOMUXC_SD1_DATA5__GPIO2_IO07 0x41 MX8MP_IOMUXC_SD1_DATA6__GPIO2_IO08 0x41 MX8MP_IOMUXC_SD1_RESET_B__GPIO2_IO10 0x41 MX8MP_IOMUXC_SPDIF_EXT_CLK__GPIO5_IO05 0x41 MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04 0x41 MX8MP_IOMUXC_SPDIF_TX__GPIO5_IO03 0x41 >; }; pinctrl_i2c2_pca9546: i2c2-pca9546grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO05__GPIO1_IO05 0x100 >; }; pinctrl_i2c4_hd3ss3220: i2c4-hd3ss3220grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO08__GPIO1_IO08 0x16 MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02 0x03 >; }; pinctrl_pwm1: pwm1grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO01__PWM1_OUT 0x100 >; }; pinctrl_pwm2: pwm2grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO09__PWM2_OUT 0xd6 MX8MP_IOMUXC_SAI5_RXD0__PWM2_OUT 0xd6 >; }; pinctrl_pwm4: pwm4grp { fsl,pins = < MX8MP_IOMUXC_SAI5_RXFS__PWM4_OUT 0x116 >; }; pinctrl_reg_usb_vbus: reg-usb-vbusgrp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12 0x100 >; }; pinctrl_rv3028: rv3028grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04 0x1c0 >; }; pinctrl_uart2: uart2grp { fsl,pins = < MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX 0x140 MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX 0x140 >; }; pinctrl_uart3: uart3grp { fsl,pins = < MX8MP_IOMUXC_ECSPI1_MOSI__UART3_DCE_TX 0x140 MX8MP_IOMUXC_ECSPI1_SCLK__UART3_DCE_RX 0x140 >; }; pinctrl_uart4: uart4grp { fsl,pins = < MX8MP_IOMUXC_UART4_RXD__UART4_DCE_RX 0x140 MX8MP_IOMUXC_UART4_TXD__UART4_DCE_TX 0x140 >; }; pinctrl_usb3_0: usb3-0grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO13__USB1_OTG_OC 0x1c0 >; }; pinctrl_usdhc1: usdhc1grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO03__USDHC1_VSELECT 0x116 MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK 0x190 MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD 0x1d0 MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0 0x1d0 MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1 0x1d0 MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2 0x1d0 MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3 0x1d0 >; }; pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp { fsl,pins = < MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK 0x194 MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD 0x1d4 MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0 0x1d4 MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1 0x1d4 MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2 0x1d4 MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3 0x1d4 >; }; pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp { fsl,pins = < MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK 0x196 MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD 0x1d6 MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0 0x1d6 MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1 0x1d6 MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2 0x1d6 MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3 0x1d6 >; }; pinctrl_usdhc1_gpio: usdhc1-gpiogrp { fsl,pins = < MX8MP_IOMUXC_SD1_STROBE__GPIO2_IO11 0x1c4 >; }; };