// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /* * Copyright (c) 2023-2024 TQ-Systems GmbH , * D-82229 Seefeld, Germany. * Author: Martin Schmiedel * Author: Alexander Stein */ /dts-v1/; #include #include #include #include #include "imx8mp-tqma8mpql.dtsi" / { model = "TQ-Systems i.MX8MPlus TQMa8MPxL on MBa8MP-RAS314"; compatible = "tq,imx8mp-tqma8mpql-mba8mp-ras314", "tq,imx8mp-tqma8mpql", "fsl,imx8mp"; chassis-type = "embedded"; chosen { stdout-path = &uart4; }; aliases { mmc0 = &usdhc3; mmc1 = &usdhc2; mmc2 = &usdhc1; rtc0 = &pcf85063; rtc1 = &snvs_rtc; }; /* X8 */ backlight_lvds: backlight { compatible = "pwm-backlight"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_backlight>; pwms = <&pwm2 0 5000000 0>; brightness-levels = <0 4 8 16 32 64 128 255>; default-brightness-level = <7>; power-supply = <®_vcc_12v0>; enable-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>; status = "disabled"; }; /* X7 + X8 */ display: display { /* * Display is not fixed, so compatible has to be added from * DT overlay */ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lvdsdisplay>; power-supply = <®_vcc_3v3>; enable-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; backlight = <&backlight_lvds>; status = "disabled"; }; gpio-leds { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpioled>; led-1 { color = ; function = LED_FUNCTION_STATUS; function-enumerator = <0>; gpios = <&gpio4 18 GPIO_ACTIVE_HIGH>; }; led-2 { color = ; function = LED_FUNCTION_STATUS; function-enumerator = <1>; gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>; }; }; hdmi-connector { compatible = "hdmi-connector"; label = "X9"; type = "a"; port { hdmi_connector_in: endpoint { remote-endpoint = <&hdmi_tx_out>; }; }; }; reg_usdhc2_vmmc: regulator-usdhc2 { compatible = "regulator-fixed"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>; regulator-name = "VSD_3V3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>; enable-active-high; startup-delay-us = <100>; off-on-delay-us = <12000>; }; reg_vcc_3v3: regulator-3v3 { compatible = "regulator-fixed"; regulator-name = "V_3V3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; reg_vcc_5v0: regulator-5v0 { compatible = "regulator-fixed"; regulator-name = "V_5V0"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; }; reg_vcc_12v0: regulator-12v0 { compatible = "regulator-fixed"; regulator-name = "V_12V"; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* global autoconfigured region for contiguous allocations */ linux,cma { compatible = "shared-dma-pool"; reusable; size = <0 0x38000000>; alloc-ranges = <0 0x40000000 0 0xB0000000>; linux,cma-default; }; }; rfkill { compatible = "rfkill-gpio"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_rfkill>; label = "rfkill-pcie-wlan"; radio-type = "wlan"; shutdown-gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>; }; sound { compatible = "fsl,imx-audio-tlv320aic32x4"; model = "tq-mba8mp-ras314"; audio-cpu = <&sai5>; audio-codec = <&tlv320aic3x04>; audio-routing = "IN3_L", "Mic Jack", "Mic Jack", "Mic Bias", "Headphone Jack", "HPL", "Headphone Jack", "HPR"; }; }; &ecspi3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_ecspi3>; cs-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>, <&gpio1 6 GPIO_ACTIVE_LOW>; status = "okay"; }; &eqos { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_eqos>; phy-mode = "rgmii-id"; phy-handle = <ðphy3>; status = "okay"; mdio { compatible = "snps,dwmac-mdio"; #address-cells = <1>; #size-cells = <0>; ethphy3: ethernet-phy@3 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <3>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_eqos_phy>; reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>; reset-assert-us = <500000>; reset-deassert-us = <50000>; enet-phy-lane-no-swap; interrupt-parent = <&gpio4>; interrupts = <3 IRQ_TYPE_EDGE_FALLING>; ti,rx-internal-delay = ; ti,tx-internal-delay = ; ti,fifo-depth = ; ti,dp83867-rxctrl-strap-quirk; ti,clk-output-sel = ; }; }; }; &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_fec>; phy-mode = "rgmii-id"; phy-handle = <ðphy0>; fsl,magic-packet; status = "okay"; mdio { #address-cells = <1>; #size-cells = <0>; ethphy0: ethernet-phy@0 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_fec_phy>; reset-gpios = <&gpio4 0 GPIO_ACTIVE_LOW>; reset-assert-us = <500000>; reset-deassert-us = <50000>; enet-phy-lane-no-swap; interrupt-parent = <&gpio4>; interrupts = <1 IRQ_TYPE_EDGE_FALLING>; ti,rx-internal-delay = ; ti,tx-internal-delay = ; ti,fifo-depth = ; ti,dp83867-rxctrl-strap-quirk; ti,clk-output-sel = ; }; }; }; &gpio1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio1>; gpio-line-names = "WIFI_PMIC_EN", "LVDS_RESET#", "", "", "", "", "GPIO8", "", "", "", "", "", "", "", "GPIO12", "GPIO13", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""; wifi-pmic-en-hog { gpio-hog; gpios = <0 0>; output-high; line-name = "WIFI_PMIC_EN"; }; }; &gpio2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio2>; gpio-line-names = "GPIO22", "GPIO23", "GPIO24", "GPIO25", "GPIO26", "GPIO27", "CAM_GPIO1", "CAM_GPIO2", "", "", "GPIO1", "GPIO0", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""; }; &gpio3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio3>; gpio-line-names = "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "TEMP_EVENT#", "", "", "", "", "", "", "", "", "", "", ""; }; &gpio4 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio4>; gpio-line-names = "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "HDMI_OC#", "GPIO14", "GPIO15", "GPIO16", "GPIO17", "PCIE_WAKE#", "GPIO19", "GPIO20", "PCIE_PERST#", "", "", ""; pewake-hog { gpio-hog; gpios = <25 0>; input; line-name = "PCIE_WAKE#"; }; }; &gpio5 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio5>, <&pinctrl_gpt1_gpio>, <&pinctrl_gpt2_gpio>, <&pinctrl_gpt3_gpio>; gpio-line-names = "", "GPIO18", "", "GPIO3", "GPIO2", "GPIO21", "", "", "", "", "", "", "", "", "", "", "", "", "GPIO5", "GPIO6", "", "", "GPIO11", "GPIO10", "GPIO9", "GPIO7", "", "GPIO4", "", "", "", ""; }; &gpt1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpt1>; status = "disabled"; }; &gpt2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpt2>; status = "disabled"; }; &gpt3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpt3>; status = "disabled"; }; &hdmi_pvi { status = "okay"; }; &hdmi_tx { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hdmi>; status = "okay"; ports { port@1 { hdmi_tx_out: endpoint { remote-endpoint = <&hdmi_connector_in>; }; }; }; }; &hdmi_tx_phy { status = "okay"; }; /* X5 + X6 Camera & Display interface */ &i2c2 { clock-frequency = <384000>; pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c2>; pinctrl-1 = <&pinctrl_i2c2_gpio>; scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; }; /* X1 ID_I2C */ &i2c3 { clock-frequency = <384000>; pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c3>; pinctrl-1 = <&pinctrl_i2c3_gpio>; scl-gpios = <&gpio2 10 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio2 11 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; }; &i2c4 { clock-frequency = <384000>; pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c4>; pinctrl-1 = <&pinctrl_i2c4_gpio>; scl-gpios = <&gpio5 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; tlv320aic3x04: audio-codec@18 { compatible = "ti,tlv320aic32x4"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_tlv320aic3x04>; reg = <0x18>; clock-names = "mclk"; clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_MCLK1>; reset-gpios = <&gpio5 11 GPIO_ACTIVE_LOW>; iov-supply = <®_vcc_3v3>; ldoin-supply = <®_vcc_3v3>; }; }; /* X1 I2C */ &i2c5 { clock-frequency = <384000>; pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c5>; pinctrl-1 = <&pinctrl_i2c5_gpio>; scl-gpios = <&gpio5 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; }; /* X1 I2C on GPIO24/GPIO25 */ &i2c6 { clock-frequency = <384000>; pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c6>; pinctrl-1 = <&pinctrl_i2c6_gpio>; scl-gpios = <&gpio2 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio2 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "disabled"; }; &lcdif3 { status = "okay"; }; &pcf85063 { /* RTC_EVENT# is connected on MBa8MP-RAS314 */ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pcf85063>; interrupt-parent = <&gpio3>; interrupts = <19 IRQ_TYPE_EDGE_FALLING>; }; &pcie_phy { clocks = <&hsio_blk_ctrl>; clock-names = "ref"; fsl,refclk-pad-mode = ; status = "okay"; }; &pcie { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pcie>; reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>; status = "okay"; }; &pwm2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm2>; status = "disabled"; }; &pwm3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm3>; status = "okay"; }; &pwm4 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm4>; status = "okay"; }; &sai5 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai5>; assigned-clocks = <&clk IMX8MP_CLK_SAI5>; assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>; assigned-clock-rates = <12288000>; fsl,sai-mclk-direction-output; status = "okay"; }; &snvs_pwrkey { status = "okay"; }; /* X1 UART1 */ &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>; uart-has-rtscts; assigned-clocks = <&clk IMX8MP_CLK_UART1>; assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>; status = "okay"; }; &uart2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart2>; uart-has-rtscts; assigned-clocks = <&clk IMX8MP_CLK_UART2>; assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>; status = "okay"; bluetooth { compatible = "nxp,88w8987-bt"; }; }; &uart3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart3>; assigned-clocks = <&clk IMX8MP_CLK_UART3>; assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>; status = "okay"; }; &uart4 { /* console */ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart4>; status = "okay"; }; &usb3_0 { fsl,disable-port-power-control; status = "okay"; }; &usb3_1 { fsl,disable-port-power-control; fsl,permanently-attached; status = "okay"; }; &usb3_phy0 { vbus-supply = <®_vcc_5v0>; status = "okay"; }; &usb3_phy1 { vbus-supply = <®_vcc_5v0>; status = "okay"; }; &usb_dwc3_0 { dr_mode = "peripheral"; status = "okay"; }; &usb_dwc3_1 { dr_mode = "host"; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usbhub>; status = "okay"; hub_2_0: hub@1 { compatible = "usb451,8142"; reg = <1>; peer-hub = <&hub_3_0>; reset-gpios = <&gpio5 26 GPIO_ACTIVE_LOW>; vdd-supply = <®_vcc_3v3>; }; hub_3_0: hub@2 { compatible = "usb451,8140"; reg = <2>; peer-hub = <&hub_2_0>; reset-gpios = <&gpio5 26 GPIO_ACTIVE_LOW>; vdd-supply = <®_vcc_3v3>; }; }; /* X1 SD card on GPIO22-GPIO27 */ &usdhc1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; disable-wp; bus-width = <4>; status = "disabled"; }; &usdhc2 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>; pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>; cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; vmmc-supply = <®_usdhc2_vmmc>; no-mmc; no-sdio; disable-wp; bus-width = <4>; status = "okay"; }; &iomuxc { pinctrl_backlight: backlightgrp { fsl,pins = ; }; pinctrl_ecspi3: ecspi3grp { fsl,pins = , , , , ; }; pinctrl_ecspi3_gpio: ecspi3gpiogrp { fsl,pins = , , , , ; }; pinctrl_eqos: eqosgrp { fsl,pins = , , , , , , , , , , , , , ; }; pinctrl_eqos_phy: eqosphygrp { fsl,pins = , ; }; pinctrl_fec: fecgrp { fsl,pins = , , , , , , , , , , , , , ; }; pinctrl_fec_phy: fecphygrp { fsl,pins = , ; }; pinctrl_gpioled: gpioledgrp { fsl,pins = , ; }; pinctrl_gpio1: gpio1grp { fsl,pins = , ; }; pinctrl_gpio2: gpio2grp { fsl,pins = , , , , , , , ; }; pinctrl_gpio3: gpio3grp { fsl,pins = ; }; pinctrl_gpio4: gpio4grp { fsl,pins = , /* PCIE_WAKE# */ , , ; }; pinctrl_gpio5: gpio5grp { fsl,pins = , ; }; pinctrl_hdmi: hdmigrp { fsl,pins = , , , ; }; pinctrl_gpt1: gpt1grp { fsl,pins = ; }; pinctrl_gpt1_gpio: gpt1gpiogrp { fsl,pins = ; }; pinctrl_gpt2: gpt2grp { fsl,pins = ; }; pinctrl_gpt2_gpio: gpt2gpiogrp { fsl,pins = ; }; pinctrl_gpt3: gpt3grp { fsl,pins = ; }; pinctrl_gpt3_gpio: gpt3gpiogrp { fsl,pins = ; }; pinctrl_i2c2: i2c2grp { fsl,pins = , ; }; pinctrl_i2c2_gpio: i2c2-gpiogrp { fsl,pins = , ; }; pinctrl_i2c3: i2c3grp { fsl,pins = , ; }; pinctrl_i2c3_gpio: i2c3-gpiogrp { fsl,pins = , ; }; pinctrl_i2c4: i2c4grp { fsl,pins = , ; }; pinctrl_i2c4_gpio: i2c4-gpiogrp { fsl,pins = , ; }; pinctrl_i2c5: i2c5grp { fsl,pins = , ; }; pinctrl_i2c5_gpio: i2c5-gpiogrp { fsl,pins = , ; }; pinctrl_i2c6: i2c6grp { fsl,pins = , ; }; pinctrl_i2c6_gpio: i2c6-gpiogrp { fsl,pins = , ; }; pinctrl_pcf85063: pcf85063grp { fsl,pins = ; }; pinctrl_pcie: pciegrp { fsl,pins = , ; }; pinctrl_lvdsdisplay: lvdsdisplaygrp { fsl,pins = ; }; pinctrl_pwm2: pwm2grp { fsl,pins = ; }; pinctrl_pwm3: pwm3grp { fsl,pins = ; }; pinctrl_pwm3_gpio: pwm3grpiogrp { fsl,pins = ; }; pinctrl_pwm4: pwm4grp { fsl,pins = ; }; pinctrl_pwm4_gpio: pwm4grpiogrp { fsl,pins = ; }; pinctrl_rfkill: rfkillgrp { fsl,pins = ; }; pinctrl_sai5: sai5grp { fsl,pins = , , , , ; }; pinctrl_tlv320aic3x04: tlv320aic3x04grp { fsl,pins = ; }; pinctrl_uart1: uart1grp { fsl,pins = , , , ; }; pinctrl_uart1_gpio: uart1gpiogrp { fsl,pins = , , , ; }; pinctrl_uart2: uart2grp { fsl,pins = , , , ; }; pinctrl_uart3: uart3grp { fsl,pins = , ; }; pinctrl_uart4: uart4grp { fsl,pins = , ; }; pinctrl_usbhub: usbhubgrp { fsl,pins = ; }; pinctrl_usdhc1: usdhc1grp { fsl,pins = , , , , , ; }; pinctrl_usdhc2: usdhc2grp { fsl,pins = , , , , , , ; }; pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp { fsl,pins = , , , , , , ; }; pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { fsl,pins = , , , , , , ; }; pinctrl_usdhc2_gpio: usdhc2-gpiogrp { fsl,pins = ; }; };