// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) /* * Copyright (c) 2022-2025 TQ-Systems GmbH , * D-82229 Seefeld, Germany. * Author: Markus Niebel * Author: Alexander Stein */ /dts-v1/; #include #include #include #include #include #include "imx93-tqma9352.dtsi" /{ model = "TQ-Systems i.MX93 TQMa93xxLA/TQMa93xxCA on MBa91xxCA starter kit"; compatible = "tq,imx93-tqma9352-mba91xxca", "tq,imx93-tqma9352", "fsl,imx93"; chassis-type = "embedded"; chosen { stdout-path = &lpuart1; }; aliases { eeprom0 = &eeprom0; ethernet0 = &eqos; ethernet1 = &fec; rtc0 = &pcf85063; rtc1 = &bbnsm_rtc; }; backlight: backlight { compatible = "pwm-backlight"; pwms = <&tpm2 2 5000000 0>; brightness-levels = <0 4 8 16 32 64 128 255>; default-brightness-level = <7>; power-supply = <®_12v0>; enable-gpios = <&expander2 2 GPIO_ACTIVE_HIGH>; status = "disabled"; }; display: display { /* * Display is not fixed, so compatible has to be added from * DT overlay */ power-supply = <®_3v3>; enable-gpios = <&expander2 1 GPIO_ACTIVE_HIGH>; backlight = <&backlight>; status = "disabled"; port { panel_in: endpoint { }; }; }; fan0: gpio-fan { compatible = "gpio-fan"; gpios = <&expander2 4 GPIO_ACTIVE_HIGH>; gpio-fan,speed-map = <0 0>, <10000 1>; fan-supply = <®_12v0>; #cooling-cells = <2>; }; gpio-keys { compatible = "gpio-keys"; autorepeat; switch-a { label = "switcha"; linux,code = ; gpios = <&expander0 6 GPIO_ACTIVE_LOW>; wakeup-source; }; switch-b { label = "switchb"; linux,code = ; gpios = <&expander0 7 GPIO_ACTIVE_LOW>; wakeup-source; }; }; gpio-leds { compatible = "gpio-leds"; led-1 { color = ; function = LED_FUNCTION_STATUS; gpios = <&expander2 6 GPIO_ACTIVE_HIGH>; linux,default-trigger = "default-on"; }; led-2 { color = ; function = LED_FUNCTION_HEARTBEAT; gpios = <&expander2 7 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; }; }; iio-hwmon { compatible = "iio-hwmon"; io-channels = <&adc1 0>, <&adc1 1>, <&adc1 2>, <&adc1 3>; }; lvds_encoder: lvds-encoder { compatible = "ti,sn75lvds83", "lvds-encoder"; powerdown-gpios = <&expander2 3 GPIO_ACTIVE_LOW>; power-supply = <®_3v3>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; lvds_encoder_input: endpoint { }; }; port@1 { reg = <1>; lvds_encoder_output: endpoint { }; }; }; }; reg_3v3: regulator-3v3 { compatible = "regulator-fixed"; regulator-name = "V_3V3_MB"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; reg_5v0: regulator-5v0 { compatible = "regulator-fixed"; regulator-name = "V_5V0_MB"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; }; reg_12v0: regulator-12v0 { compatible = "regulator-fixed"; regulator-name = "V_12V"; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; gpio = <&expander1 7 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_mpcie_1v5: regulator-mpcie-1v5 { compatible = "regulator-fixed"; regulator-name = "V_1V5_MPCIE"; regulator-min-microvolt = <1500000>; regulator-max-microvolt = <1500000>; gpio = <&expander0 2 GPIO_ACTIVE_HIGH>; enable-active-high; regulator-always-on; }; reg_mpcie_3v3: regulator-mpcie-3v3 { compatible = "regulator-fixed"; regulator-name = "V_3V3_MPCIE"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&expander0 3 GPIO_ACTIVE_HIGH>; enable-active-high; regulator-always-on; }; thermal-zones { cpu-thermal { trips { cpu_active: trip-active0 { temperature = <40000>; hysteresis = <5000>; type = "active"; }; }; cooling-maps { map1 { trip = <&cpu_active>; cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; }; }; }; }; }; &adc1 { status = "okay"; }; &eqos { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_eqos>; phy-mode = "rgmii-id"; phy-handle = <ðphy_eqos>; status = "okay"; mdio { compatible = "snps,dwmac-mdio"; #address-cells = <1>; #size-cells = <0>; ethphy_eqos: ethernet-phy@0 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_eqos_phy>; reset-gpios = <&expander1 0 GPIO_ACTIVE_LOW>; reset-assert-us = <500000>; reset-deassert-us = <50000>; interrupt-parent = <&gpio3>; interrupts = <26 IRQ_TYPE_EDGE_FALLING>; enet-phy-lane-no-swap; 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 = <ðphy_fec>; fsl,magic-packet; status = "okay"; mdio { #address-cells = <1>; #size-cells = <0>; clock-frequency = <5000000>; ethphy_fec: ethernet-phy@0 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_fec_phy>; reset-gpios = <&expander1 1 GPIO_ACTIVE_LOW>; reset-assert-us = <500000>; reset-deassert-us = <50000>; interrupt-parent = <&gpio3>; interrupts = <27 IRQ_TYPE_EDGE_FALLING>; enet-phy-lane-no-swap; ti,rx-internal-delay = ; ti,tx-internal-delay = ; ti,fifo-depth = ; ti,dp83867-rxctrl-strap-quirk; ti,clk-output-sel = ; }; }; }; &flexcan1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_flexcan1>; xceiver-supply = <®_3v3>; status = "okay"; }; &gpio1 { gpio-line-names = /* 00 */ "", "", "", "PMIC_IRQ#", /* 04 */ "", "", "", "", /* 08 */ "", "", "USB_C_ALERT#", "BM2_LCD_INT#", /* 12 */ "PEX_INT#", "", "RTC_EVENT#", "", /* 16 */ "", "", "", "", /* 20 */ "", "", "", "", /* 24 */ "", "", "", "", /* 28 */ "", "", "", ""; }; &gpio2 { gpio-line-names = /* 00 */ "", "", "", "", /* 04 */ "", "", "", "", /* 08 */ "", "", "", "", /* 12 */ "", "", "", "", /* 16 */ "", "", "", "", /* 20 */ "", "", "", "", /* 24 */ "", "", "", "", /* 28 */ "", "", "", ""; }; &gpio3 { gpio-line-names = /* 00 */ "SD2_CD#", "", "", "", /* 04 */ "", "", "", "SD2_RST#", /* 08 */ "", "", "", "", /* 12 */ "", "", "", "", /* 16 */ "", "", "", "", /* 20 */ "", "", "", "", /* 24 */ "", "", "ENET1_INT#", "ENET2_INT#", /* 28 */ "", "", "", ""; }; &gpio4 { gpio-line-names = /* 00 */ "", "", "", "", /* 04 */ "", "", "", "", /* 08 */ "", "", "", "", /* 12 */ "", "", "", "", /* 16 */ "", "", "", "", /* 20 */ "", "", "", "", /* 24 */ "", "", "", "", /* 28 */ "", "", "", ""; }; &lpi2c3 { #address-cells = <1>; #size-cells = <0>; clock-frequency = <400000>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&pinctrl_lpi2c3>; pinctrl-1 = <&pinctrl_lpi2c3>; status = "okay"; temperature-sensor@1c { compatible = "nxp,se97b", "jedec,jc-42.4-temp"; reg = <0x1c>; }; ptn5110: usb-typec@50 { compatible = "nxp,ptn5110", "tcpci"; reg = <0x50>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_typec>; interrupt-parent = <&gpio1>; interrupts = <10 IRQ_TYPE_EDGE_FALLING>; connector { compatible = "usb-c-connector"; label = "X17"; power-role = "dual"; data-role = "dual"; try-power-role = "sink"; typec-power-opmode = "default"; pd-disable; self-powered; port { typec_con_hs: endpoint { remote-endpoint = <&typec_hs>; }; }; }; }; eeprom2: eeprom@54 { compatible = "nxp,se97b", "atmel,24c02"; reg = <0x54>; pagesize = <16>; vcc-supply = <®_3v3>; }; expander0: gpio@70 { compatible = "nxp,pca9538"; reg = <0x70>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pexp_irq>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&gpio1>; interrupts = <12 IRQ_TYPE_LEVEL_LOW>; vcc-supply = <®_3v3>; gpio-line-names = "TEMP_EVENT_MOD#", "MPCIE_WAKE#", "MPCIE_1V5_EN", "MPCIE_3V3_EN", "MPCIE_PERST#", "MPCIE_WDISABLE#", "BUTTON_A#", "BUTTON_B#"; temp-event-mod-hog { gpio-hog; gpios = <0 GPIO_ACTIVE_LOW>; input; line-name = "TEMP_EVENT_MOD#"; }; mpcie-wake-hog { gpio-hog; gpios = <1 GPIO_ACTIVE_LOW>; input; line-name = "MPCIE_WAKE#"; }; /* * Controls the mPCIE slot reset which is low active as * reset signal. The output-low states, the signal is * inactive, e.g. not in reset */ mpcie_rst_hog: mpcie-rst-hog { gpio-hog; gpios = <4 GPIO_ACTIVE_LOW>; output-low; line-name = "MPCIE_PERST#"; }; /* * Controls the mPCIE slot WDISABLE pin which is low active * as disable signal. The output-low states, the signal is * inactive, e.g. not disabled */ mpcie_wdisable_hog: mpcie-wdisable-hog { gpio-hog; gpios = <5 GPIO_ACTIVE_LOW>; output-low; line-name = "MPCIE_WDISABLE#"; }; }; expander1: gpio@71 { compatible = "nxp,pca9538"; reg = <0x71>; gpio-controller; #gpio-cells = <2>; vcc-supply = <®_3v3>; gpio-line-names = "ENET1_RESET#", "ENET2_RESET#", "USB_RESET#", "", "WLAN_PD#", "WLAN_W_DISABLE#", "WLAN_PERST#", "12V_EN"; /* * Controls the WiFi card PD pin which is low active * as power down signal. The output-low states, the signal * is inactive, e.g. not power down */ wlan-pd-hog { gpio-hog; gpios = <4 GPIO_ACTIVE_LOW>; output-low; line-name = "WLAN_PD#"; }; /* * Controls the WiFi card disable pin which is low active * as disable signal. The output-low states, the signal * is inactive, e.g. not disabled */ wlan-wdisable-hog { gpio-hog; gpios = <5 GPIO_ACTIVE_LOW>; output-low; line-name = "WLAN_W_DISABLE#"; }; /* * Controls the WiFi card reset pin which is low active * as reset signal. The output-low states, the signal * is inactive, e.g. not in reset */ wlan-perst-hog { gpio-hog; gpios = <6 GPIO_ACTIVE_LOW>; output-low; line-name = "WLAN_PERST#"; }; }; expander2: gpio@72 { compatible = "nxp,pca9538"; reg = <0x72>; gpio-controller; #gpio-cells = <2>; vcc-supply = <®_3v3>; gpio-line-names = "LCD_RESET#", "LCD_PWR_EN", "LCD_BLT_EN", "LVDS_SHDN#", "FAN_PWR_EN", "", "USER_LED1", "USER_LED2"; }; }; &lpuart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>; status = "okay"; }; &lpuart2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart2>; linux,rs485-enabled-at-boot-time; status = "okay"; }; &pcf85063 { /* RTC_EVENT# from SoM is connected on mainboard */ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pcf85063>; interrupt-parent = <&gpio1>; interrupts = <14 IRQ_TYPE_EDGE_FALLING>; }; &se97_som { /* TEMP_EVENT# from SoM is connected on mainboard */ interrupt-parent = <&expander0>; interrupts = <0 IRQ_TYPE_LEVEL_LOW>; }; &tpm2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_tpm2>; status = "okay"; }; &usbotg1 { dr_mode = "otg"; hnp-disable; srp-disable; adp-disable; usb-role-switch; disable-over-current; samsung,picophy-pre-emp-curr-control = <3>; samsung,picophy-dc-vol-level-adjust = <7>; status = "okay"; port { typec_hs: endpoint { remote-endpoint = <&typec_con_hs>; }; }; }; &usbotg2 { dr_mode = "host"; #address-cells = <1>; #size-cells = <0>; disable-over-current; samsung,picophy-pre-emp-curr-control = <3>; samsung,picophy-dc-vol-level-adjust = <7>; status = "okay"; hub_2_0: hub@1 { compatible = "usb424,2517"; reg = <1>; reset-gpios = <&expander1 2 GPIO_ACTIVE_LOW>; vdd-supply = <®_3v3>; }; }; &usdhc2 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc2_hs>, <&pinctrl_usdhc2_gpio>; pinctrl-1 = <&pinctrl_usdhc2_uhs>, <&pinctrl_usdhc2_gpio>; pinctrl-2 = <&pinctrl_usdhc2_uhs>, <&pinctrl_usdhc2_gpio>; cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>; vmmc-supply = <®_usdhc2_vmmc>; bus-width = <4>; no-sdio; no-mmc; disable-wp; status = "okay"; }; &iomuxc { pinctrl_eqos: eqosgrp { fsl,pins = /* PD | FSEL_2 | DSE X4 */ , /* SION | HYS | ODE | FSEL_2 | DSE X4 */ , /* HYS | FSEL_0 | DSE no drive */ , , , , , /* HYS | PD | FSEL_0 | DSE no drive */ , /* PD | FSEL_2 | DSE X4 */ , , , , , /* PD | FSEL_3 | DSE X3 */ ; }; pinctrl_eqos_phy: eqosphygrp { fsl,pins = /* HYS | FSEL_0 | DSE no drive */ ; }; pinctrl_fec: fecgrp { fsl,pins = /* PD | FSEL_2 | DSE X4 */ , /* SION | HYS | ODE | FSEL_2 | DSE X4 */ , /* HYS | FSEL_0 | DSE no drive */ , , , , , /* HYS | PD | FSEL_0 | DSE no drive */ , /* PD | FSEL_2 | DSE X4 */ , , , , , /* PD | FSEL_3 | DSE X3 */ ; }; pinctrl_fec_phy: fecphygrp { fsl,pins = /* HYS | FSEL_0 | DSE no drive */ ; }; pinctrl_flexcan1: flexcan1grp { fsl,pins = /* HYS | PU | FSEL_0 | DSE no drive */ , /* PU | FSEL_3 | DSE X4 */ ; }; pinctrl_jtag: jtaggrp { fsl,pins = , , , ; }; pinctrl_lpi2c3: lpi2c3grp { fsl,pins = /* SION | HYS | OD | FSEL_3 | DSE X4 */ , ; }; pinctrl_pcf85063: pcf85063grp { fsl,pins = ; }; pinctrl_pexp_irq: pexpirqgrp { fsl,pins = /* HYS | FSEL_0 | No DSE */ ; }; pinctrl_rgbdisp: rgbdispgrp { fsl,pins = , , , , , , , , , , , , , , , , , , , , , , , , , , , ; }; pinctrl_touch: touchgrp { fsl,pins = /* HYS | FSEL_0 | No DSE */ ; }; pinctrl_tpm2: tpm2grp { fsl,pins = ; }; pinctrl_typec: typecgrp { fsl,pins = /* HYS | FSEL_0 | No DSE */ ; }; pinctrl_uart1: uart1grp { fsl,pins = /* HYS | FSEL_0 | No DSE */ , /* FSEL_2 | DSE X4 */ ; }; pinctrl_uart2: uart2grp { fsl,pins = /* HYS | FSEL_0 | No DSE */ , /* FSEL_2 | DSE X4 */ , /* FSEL_2 | DSE X4 */ ; }; pinctrl_usdhc2_gpio: usdhc2gpiogrp { fsl,pins = /* HYS | FSEL_0 | No DSE */ ; }; /* enable SION for data and cmd pad due to ERR052021 */ pinctrl_usdhc2_hs: usdhc2hsgrp { fsl,pins = /* PD | FSEL_3 | DSE X5 */ , /* HYS | PU | FSEL_3 | DSE X4 */ , /* HYS | PU | FSEL_3 | DSE X3 */ , , , , /* FSEL_2 | DSE X3 */ ; }; /* enable SION for data and cmd pad due to ERR052021 */ pinctrl_usdhc2_uhs: usdhc2uhsgrp { fsl,pins = /* PD | FSEL_3 | DSE X6 */ , /* HYS | PU | FSEL_3 | DSE X4 */ , , , , , /* FSEL_2 | DSE X3 */ ; }; };