The TQMa62xx is a SoM family with a pluggable board connector based on the
TI AM62x SoCs. Add DTS(I) for the AM625 (2x Cortex-A53) variant and its
combination with our MBa62xx carrier board.
Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
---
arch/arm64/boot/dts/ti/Makefile | 1 +
.../boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts | 930 ++++++++++++++++++
arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi | 331 +++++++
3 files changed, 1262 insertions(+)
create mode 100644 arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi
diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index 361248dcfff42..1dce374215e57 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -14,6 +14,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-ov5640.dtbo
dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-tevi-ov5640.dtbo
dtb-$(CONFIG_ARCH_K3) += k3-am625-phyboard-lyra-rdk.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am625-sk.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-am625-tqma62xx-mba62xx.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-dahlia.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-dev.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-ivy.dtb
diff --git a/arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts
new file mode 100644
index 0000000000000..cca8d0018504d
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts
@@ -0,0 +1,930 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (c) 2023-2025 TQ-Systems GmbH <linux@ew.tq-group.com>, D-82229 Seefeld, Germany.
+ * Author: Matthias Schiffer
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include <dt-bindings/pwm/pwm.h>
+#include "k3-am625-tqma62xx.dtsi"
+
+/ {
+ compatible = "tq,am625-tqma6254-mba62xx", "tq,am625-tqma6254",
+ "ti,am625";
+ model = "TQ-Systems TQMa62xx SoM on MBa62xx carrier board";
+ chassis-type = "embedded";
+
+ aliases {
+ can0 = &mcu_mcan0;
+ can1 = &mcu_mcan1;
+ ethernet0 = &cpsw_port1;
+ ethernet1 = &cpsw_port2;
+ i2c1 = &main_i2c1;
+ mmc1 = &sdhci1;
+ mmc2 = &sdhci2;
+ serial0 = &main_uart0;
+ serial1 = &mcu_uart0;
+ spi1 = &main_spi0;
+ usb0 = &usb0;
+ usb1 = &usb1;
+ };
+
+ chosen {
+ stdout-path = &main_uart0;
+ };
+
+ backlight: backlight {
+ compatible = "pwm-backlight";
+ pinctrl-names = "default";
+ pinctrl-0 = <&backlight_pins>;
+ enable-gpios = <&main_gpio0 38 GPIO_ACTIVE_HIGH>;
+ status = "disabled";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ pinctrl-names = "default";
+ pinctrl-0 = <&gpio_key_pins>;
+
+ user-button {
+ label = "USER_BUTTON";
+ linux,code = <BTN_0>;
+ gpios = <&main_gpio0 40 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&gpio_led_pins>;
+
+ led-1 {
+ gpios = <&main_gpio0 41 GPIO_ACTIVE_HIGH>;
+ color = <LED_COLOR_ID_GREEN>;
+ function = LED_FUNCTION_INDICATOR;
+ };
+
+ led-2 {
+ gpios = <&main_gpio0 42 GPIO_ACTIVE_HIGH>;
+ color = <LED_COLOR_ID_YELLOW>;
+ function = LED_FUNCTION_INDICATOR;
+ };
+ };
+
+ panel: panel {
+ pinctrl-names = "default";
+ pinctrl-0 = <&lvds_panel_pins>;
+ enable-gpios = <&main_gpio0 36 GPIO_ACTIVE_HIGH>;
+ power-supply = <®_lvds_pwr>;
+ };
+
+ fan0: pwm-fan {
+ compatible = "pwm-fan";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwm_fan_pins>;
+ fan-supply = <®_pwm_fan>;
+ #cooling-cells = <2>;
+ /* typical 25 kHz -> 40.000 nsec */
+ pwms = <&epwm0 1 40000 PWM_POLARITY_INVERTED>;
+ cooling-levels = <0 32 64 128 196 240>;
+ pulses-per-revolution = <2>;
+ interrupt-parent = <&main_gpio1>;
+ interrupts = <30 IRQ_TYPE_EDGE_FALLING>;
+ status = "disabled";
+ };
+
+ wifi_pwrseq: pwrseq-wifi {
+ compatible = "mmc-pwrseq-simple";
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mmc2_pwrseq_pins>;
+ reset-gpios = <&main_gpio0 44 GPIO_ACTIVE_HIGH>;
+ };
+
+ reg_1v8: regulator-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "V_1V8_MBA";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ reg_3v3_sd: regulator-3v3-sd {
+ /* TPS22963CYZTP */
+ compatible = "regulator-fixed";
+ pinctrl-names = "default";
+ pinctrl-0 = <®_3v3_sd_pins>;
+ regulator-name = "V_3V3_SD";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ enable-active-high;
+ vin-supply = <®_3v3>;
+ gpio = <&main_gpio1 8 GPIO_ACTIVE_HIGH>;
+ bootph-all;
+ };
+
+ reg_lvds_pwr: regulator-lvds-pwr {
+ compatible = "regulator-fixed";
+ pinctrl-names = "default";
+ pinctrl-0 = <®_lvds_pwr_pins>;
+ regulator-name = "LVDS0_PWR";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ enable-active-high;
+ vin-supply = <®_3v3>;
+ gpio = <&main_gpio0 61 GPIO_ACTIVE_HIGH>;
+ };
+
+ reg_pwm_fan: regulator-pwm-fan {
+ compatible = "regulator-fixed";
+ pinctrl-names = "default";
+ pinctrl-0 = <®_pwm_fan_pins>;
+ regulator-name = "FAN_PWR";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&main_gpio0 62 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ sound: sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "tqm-tlv320aic32";
+ simple-audio-card,widgets =
+ "Line Out", "Line Out",
+ "Line In", "Line In",
+ "Microphone", "Microphone Jack";
+ simple-audio-card,routing =
+ "Line Out", "LOL",
+ "Line Out", "LOR",
+ "IN1_L", "Line In",
+ "IN1_R", "Line In",
+ "IN3_L", "Microphone Jack",
+ "Microphone Jack", "Mic Bias";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,bitclock-master = <&sound_master>;
+ simple-audio-card,frame-master = <&sound_master>;
+
+ simple-audio-card,cpu {
+ sound-dai = <&mcasp1>;
+ };
+
+ sound_master: simple-audio-card,codec {
+ sound-dai = <&tlv320aic32x4>;
+ clocks = <&audio_refclk0>;
+ };
+ };
+};
+
+&audio_refclk0 {
+ /* Set parent to POSTDIV1_16FFT_MAIN_1_HSDIVOUT6, for 96MHz clock output */
+ assigned-clock-parents = <&k3_clks 157 7>;
+};
+
+&cpsw3g {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_rgmii1_pins
+ &main_rgmii2_pins>;
+ status = "okay";
+};
+
+&cpsw_port1 {
+ phy-mode = "rgmii-id";
+ phy-handle = <&cpsw3g_phy0>;
+};
+
+&cpsw_port2 {
+ phy-mode = "rgmii-id";
+ phy-handle = <&cpsw3g_phy3>;
+};
+
+&cpsw3g_mdio {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mdio1_pins>;
+ status = "okay";
+
+ cpsw3g_phy0: ethernet-phy@0 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <0x0>;
+ reset-gpios = <&main_gpio1 11 GPIO_ACTIVE_LOW>;
+ reset-assert-us = <1000>;
+ reset-deassert-us = <1000>;
+ ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+ ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+ };
+
+ cpsw3g_phy3: ethernet-phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <0x3>;
+ reset-gpios = <&main_gpio1 12 GPIO_ACTIVE_LOW>;
+ reset-assert-us = <1000>;
+ reset-deassert-us = <1000>;
+ ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+ ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+ };
+};
+
+&dss {
+ pinctrl-names = "default";
+ pinctrl-0 = <&dss_pins>;
+};
+
+&epwm0 {
+ status = "okay";
+};
+
+&epwm1 {
+ status = "okay";
+};
+
+&main_gpio0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_gpio0_pins &main_gpio0_pr0_pins>;
+ gpio-line-names =
+ "", "", "", "", /* 0-3 */
+ "", "", "", "", /* 4-7 */
+ "", "", "", "", /* 8-11 */
+ "ADC_SYNC", "ADC_RST#", "ADC_DATA_RDY", "", /* 12-15 */
+ "", "", "", "", /* 16-19 */
+ "", "", "", "", /* 20-23 */
+ "", "", "", "", /* 24-27 */
+ "", "", "", "", /* 28-31 */
+ "", "", "", "", /* 32-35 */
+ "", "", "", "BG95_PWRKEY", /* 36-39 */
+ "", "", "", "BG95_RESET", /* 40-43 */
+ "", "", "", "", /* 44-47 */
+ "", "", "", "", /* 48-51 */
+ "", "", "", "", /* 52-55 */
+ "", "", "", "", /* 56-59 */
+ "", "", "", "", /* 60-63 */
+ "", "", "", "", /* 64-67 */
+ "", "", "", "", /* 68-71 */
+ "ADC_INT"; /* 72- */
+ bootph-all;
+};
+
+&main_gpio1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_gpio1_pins &main_gpio1_pr0_pins>;
+ bootph-all;
+
+ /* No overcurrent handling in USB host driver - pin is hogged for now */
+ line7-hog {
+ gpio-hog;
+ gpios = <7 GPIO_ACTIVE_HIGH>;
+ line-name = "USB0_VBUS_OC#";
+ input;
+ };
+};
+
+&main_i2c1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_i2c1_pins>;
+ clock-frequency = <400000>;
+ status = "okay";
+
+ tlv320aic32x4: audio-codec@18 {
+ compatible = "ti,tlv320aic32x4";
+ reg = <0x18>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&audio_codec_pins>;
+ #sound-dai-cells = <0>;
+ clock-names = "mclk";
+ clocks = <&audio_refclk0>;
+ reset-gpios = <&main_gpio0 33 GPIO_ACTIVE_LOW>;
+ iov-supply = <®_1v8>;
+ ldoin-supply = <®_3v3>;
+ };
+};
+
+&main_spi0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_spi0_pins>;
+ ti,pindir-d0-out-d1-in;
+ status = "okay";
+
+ /* adc@0: NXP NAFE13388 */
+};
+
+&main0_thermal {
+ trips {
+ main0_active0: trip-active0 {
+ temperature = <40000>;
+ hysteresis = <5000>;
+ type = "active";
+ };
+
+ main0_active1: trip-active1 {
+ temperature = <48000>;
+ hysteresis = <3000>;
+ type = "active";
+ };
+
+ main0_active2: trip-active2 {
+ temperature = <60000>;
+ hysteresis = <10000>;
+ type = "active";
+ };
+ };
+
+ cooling-maps {
+ map1 {
+ trip = <&main0_active0>;
+ cooling-device = <&fan0 1 1>;
+ };
+
+ map2 {
+ trip = <&main0_active1>;
+ cooling-device = <&fan0 2 2>;
+ };
+
+ map3 {
+ trip = <&main0_active2>;
+ cooling-device = <&fan0 3 3>;
+ };
+ };
+};
+
+&main1_thermal {
+ trips {
+ main1_active0: trip-active0 {
+ temperature = <40000>;
+ hysteresis = <5000>;
+ type = "active";
+ };
+
+ main1_active1: trip-active1 {
+ temperature = <48000>;
+ hysteresis = <3000>;
+ type = "active";
+ };
+
+ main1_active2: trip-active2 {
+ temperature = <60000>;
+ hysteresis = <10000>;
+ type = "active";
+ };
+ };
+
+ cooling-maps {
+ map1 {
+ trip = <&main1_active0>;
+ cooling-device = <&fan0 1 1>;
+ };
+
+ map2 {
+ trip = <&main1_active1>;
+ cooling-device = <&fan0 2 2>;
+ };
+
+ map3 {
+ trip = <&main1_active2>;
+ cooling-device = <&fan0 3 3>;
+ };
+ };
+};
+
+/* Main console */
+&main_uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_uart0_pins>;
+ bootph-all;
+ status = "okay";
+};
+
+/*
+ * IOT module - GNSS UART
+ *
+ * Board configuration must not enable UART trace output for TIFS firmware
+ */
+&main_uart1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_uart1_pins>;
+ /* IOT module uses USB by default, UART can be enabled as fallback */
+ status = "disabled";
+};
+
+/* Bluetooth module */
+&main_uart2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_uart2_pins>;
+ /* Bluetooth module uses SDIO by default, UART can be enabled as fallback */
+ status = "disabled";
+};
+
+/* IOT module - main UART */
+&main_uart5 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_uart5_pins>;
+ /* IOT module uses USB by default, UART can be enabled as fallback */
+ status = "disabled";
+};
+
+&mcasp1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mcasp1_pins>;
+ #sound-dai-cells = <0>;
+ op-mode = <0>; /* MCASP_IIS_MODE */
+ tdm-slots = <2>;
+ serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
+ 1 0 2 0
+ 0 0 0 0
+ 0 0 0 0
+ 0 0 0 0
+ >;
+ tx-num-evt = <0>;
+ rx-num-evt = <0>;
+ status = "okay";
+};
+
+&mcu_gpio0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mcu_gpio0_pins>;
+ gpio-line-names =
+ "EN_DIG_OUT_1", "EN_DIG_OUT_2", "STATUS_OUT_1", "STATUS_OUT_2", /* 0-3 */
+ "EN_DIG_OUT_3", "", "", "V_VPP_EN", /* 4-7 */
+ "", "", "", "EN_DIG_OUT_4", /* 8-11 */
+ "STATUS_OUT_3", "", "", "", /* 12-15 */
+ "", "STATUS_OUT_4", "DIG_IN_1", "DIG_IN_2", /* 16-19 */
+ "DIG_IN_3", "", "", "DIG_IN_4"; /* 20-23 */
+ bootph-all;
+};
+
+&mcu_mcan0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mcu_mcan0_pins>;
+ status = "okay";
+};
+
+&mcu_mcan1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mcu_mcan1_pins>;
+ status = "okay";
+};
+
+&mcu_uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mcu_uart0_pins>;
+ rs485-rts-active-low;
+ linux,rs485-enabled-at-boot-time;
+ status = "okay";
+};
+
+®_sd {
+ pinctrl-names = "default";
+ pinctrl-0 = <®_sd_pins>;
+ gpios = <&main_gpio0 31 GPIO_ACTIVE_LOW>;
+ bootph-all;
+ status = "okay";
+};
+
+&sdhci1 {
+ /* SD-card */
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mmc1_pins>;
+ vmmc-supply = <®_3v3_sd>;
+ vqmmc-supply = <®_sd>;
+ bus-width = <4>;
+ disable-wp;
+ no-mmc;
+ no-sdio;
+ bootph-all;
+ ti,driver-strength-ohm = <50>;
+ status = "okay";
+};
+
+&sdhci2 {
+ /* WLAN */
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mmc2_pins>;
+ mmc-pwrseq = <&wifi_pwrseq>;
+ keep-power-in-suspend;
+ cap-power-off-card;
+ bus-width = <4>;
+ non-removable;
+ no-mmc;
+ no-sd;
+ ti,driver-strength-ohm = <50>;
+ ti,fails-without-test-cd;
+ status = "okay";
+};
+
+&usbss0 {
+ bootph-all;
+ ti,vbus-divider;
+ status = "okay";
+};
+
+&usbss1 {
+ ti,vbus-divider;
+ status = "okay";
+};
+
+&usb0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_usb0_pins>;
+ dr_mode = "otg";
+ usb-role-switch;
+ bootph-all;
+
+ connector {
+ compatible = "gpio-usb-b-connector", "usb-b-connector";
+ id-gpios = <&main_gpio0 71 GPIO_ACTIVE_HIGH>;
+ type = "micro";
+ };
+};
+
+&usb1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_usb1_hub_pins>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ dr_mode = "host";
+
+ usb1_hub_2_0: hub@1 {
+ compatible = "usb424,2514";
+ reg = <1>;
+ reset-gpios = <&main_gpio1 23 GPIO_ACTIVE_HIGH>;
+ vdd-supply = <®_3v3>;
+ vdda-supply = <®_3v3>;
+ };
+};
+
+&wkup_uart0 {
+ /* WKUP UART0 is used by DM firmware */
+ status = "reserved";
+};
+
+&main_pmx0 {
+ audio_codec_pins: audio-codec-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x088, PIN_OUTPUT, 7) /* (L24) GPMC0_OEn_REn.GPIO0_33 */
+ AM62X_IOPAD(0x1d0, PIN_OUTPUT, 5) /* (A15) UART0_CTSn.AUDIO_EXT_REFCLK0 */
+ >;
+ };
+
+ backlight_pins: backlight-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x009c, PIN_OUTPUT, 7) /* (V25) GPMC0_WAIT1.GPIO0_38 */
+ AM62X_IOPAD(0x01a0, PIN_OUTPUT, 6) /* (E18) MCASP0_AXR0.EHRPWM1_B */
+ >;
+ };
+
+ dss_pins: dss-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
+ AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
+ AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
+ AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
+ AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
+ AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
+ AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
+ AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
+ AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
+ AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
+ AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
+ AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
+ AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
+ AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
+ AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
+ AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
+ AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
+ AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
+ AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
+ AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
+ >;
+ };
+
+ csi_clk_pins: csi-clk-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x019c, PIN_OUTPUT, 6) /* (B18) MCASP0_AXR1.EHRPWM1_A */
+ >;
+ };
+
+ gpio_key_pins: gpio-key-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x0a4, PIN_INPUT, 7) /* (M22) GPMC0_DIR.GPIO0_40 */
+ >;
+ };
+
+ gpio_led_pins: gpio-led-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x0a8, PIN_OUTPUT, 7) /* (M21) GPMC0_CSn0.GPIO0_41 */
+ AM62X_IOPAD(0x0ac, PIN_OUTPUT, 7) /* (L21) GPMC0_CSn1.GPIO0_42 */
+ >;
+ };
+
+ lvds_panel_pins: lvds-panel-pins {
+ pinctrl-single,pins = <
+ /* (N20) GPMC0_BE1n.GPIO0_36 - LVDS0_RESET# */
+ AM62X_IOPAD(0x0094, PIN_OUTPUT, 7)
+ >;
+ };
+
+ main_gpio0_pins: main-gpio0-pins {
+ pinctrl-single,pins = <
+ /* Control GPIOs for IOT Module */
+ /* (K25) GPMC0_WPn.GPIO0_39 - BG95_PWRKEY */
+ AM62X_IOPAD(0x0a0, PIN_OUTPUT, 7)
+ /* (K22) GPMC0_CSn2.GPIO0_43 - BG95_RESET */
+ AM62X_IOPAD(0x0b0, PIN_OUTPUT, 7)
+ >;
+ };
+
+ main_gpio0_pr0_pins: main-gpio0-pr0-pins {
+ pinctrl-single,pins = <
+ /* (N24) GPMC0_AD2.GPIO0_17 */
+ AM62X_IOPAD(0x0044, PIN_INPUT, 7)
+ /* (N25) GPMC0_AD3.GPIO0_18 */
+ AM62X_IOPAD(0x0048, PIN_INPUT, 7)
+ /* (P24) GPMC0_AD4.GPIO0_19 */
+ AM62X_IOPAD(0x004c, PIN_INPUT, 7)
+ /* (P22) GPMC0_AD5.GPIO0_20 */
+ AM62X_IOPAD(0x0050, PIN_INPUT, 7)
+ /* (W25) VOUT0_DATA2.GPIO0_47 */
+ AM62X_IOPAD(0x00c0, PIN_INPUT, 7)
+ /* (W24) VOUT0_DATA3.GPIO0_48 */
+ AM62X_IOPAD(0x00c4, PIN_INPUT, 7)
+ /* (Y25) VOUT0_DATA4.GPIO0_49 */
+ AM62X_IOPAD(0x00c8, PIN_INPUT, 7)
+ /* (Y24) VOUT0_DATA5.GPIO0_50 */
+ AM62X_IOPAD(0x00cc, PIN_INPUT, 7)
+ >;
+ };
+
+ main_gpio1_pins: main-gpio1-pins {
+ pinctrl-single,pins = <
+ /* (B19) MCASP0_AXR3.GPIO1_7 - USB0_VBUS_OC# */
+ AM62X_IOPAD(0x0194, PIN_INPUT, 7)
+ >;
+ };
+
+ main_gpio1_pr0_pins: main-gpio1-pr0-pins {
+ pinctrl-single,pins = <
+ /* (C15) MCAN0_TX.GPIO1_24 */
+ AM62X_IOPAD(0x01d8, PIN_INPUT, 7)
+ /* (E15) MCAN0_RX.GPIO1_25 */
+ AM62X_IOPAD(0x01dc, PIN_INPUT, 7)
+ >;
+ };
+
+ main_i2c1_pins: main-i2c1-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x1e8, PIN_INPUT, 0) /* (B17) I2C1_SCL */
+ AM62X_IOPAD(0x1ec, PIN_INPUT, 0) /* (A17) I2C1_SDA */
+ >;
+ };
+
+ main_mcasp1_pins: main-mcasp1-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x090, PIN_INPUT, 2) /* (M24) GPMC0_BE0N_CLE.MCASP1_ACLKX */
+ AM62X_IOPAD(0x098, PIN_INPUT, 2) /* (U23) GPMC0_WAIT0.MCASP1_AFSX */
+ AM62X_IOPAD(0x08c, PIN_OUTPUT, 2) /* (L25) GPMC0_WEN.MCASP1_AXR0 */
+ AM62X_IOPAD(0x084, PIN_INPUT, 2) /* (L23) GPMC0_ADVN_ALE.MCASP1_AXR2 */
+ >;
+ };
+
+ main_mmc1_pins: main-mmc1-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21) MMC1_CMD */
+ AM62X_IOPAD(0x234, PIN_INPUT, 0) /* (B22) MMC1_CLK */
+ AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22) MMC1_DAT0 */
+ AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21) MMC1_DAT1 */
+ AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21) MMC1_DAT2 */
+ AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
+ AM62X_IOPAD(0x240, PIN_INPUT, 0) /* (D17) MMC1_SDCD */
+ >;
+ bootph-all;
+ };
+
+ main_mmc2_pins: main-mmc2-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x120, PIN_INPUT, 0) /* (C24) MMC2_CMD */
+ AM62X_IOPAD(0x118, PIN_INPUT, 0) /* (D25) MMC2_CLK */
+ AM62X_IOPAD(0x114, PIN_INPUT, 0) /* (B24) MMC2_DAT0 */
+ AM62X_IOPAD(0x110, PIN_INPUT, 0) /* (C25) MMC2_DAT1 */
+ AM62X_IOPAD(0x10c, PIN_INPUT, 0) /* (E23) MMC2_DAT2 */
+ AM62X_IOPAD(0x108, PIN_INPUT, 0) /* (D24) MMC2_DAT3 */
+ AM62X_IOPAD(0x11c, PIN_INPUT, 0) /* (#N/A) MMC2_CLKB */
+ >;
+ };
+
+ main_mmc2_pwrseq_pins: main-mmc2-pwrseq-pins {
+ pinctrl-single,pins = <
+ /* (K24) GPMC0_CSn3.GPIO0_44 - WIFI-BT_EN */
+ AM62X_IOPAD(0x00b4, PIN_OUTPUT, 7)
+ >;
+ };
+
+ main_mdio1_pins: main-mdio1-pins {
+ pinctrl-single,pins = <
+ /* (B20) MCASP0_ACLKX.GPIO1_11 - RESET_RGMII1# */
+ AM62X_IOPAD(0x1a4, PIN_OUTPUT, 7)
+ /* (D20) MCASP0_AFSX.GPIO1_12 - RESET_RGMII2# */
+ AM62X_IOPAD(0x1a8, PIN_OUTPUT, 7)
+
+ AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC */
+ AM62X_IOPAD(0x15c, PIN_INPUT, 0) /* (AB22) MDIO0_MDIO */
+ >;
+ };
+
+ main_rgmii1_pins: main-rgmii1-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x14c, PIN_INPUT, 0) /* (AB17) RGMII1_RD0 */
+ AM62X_IOPAD(0x150, PIN_INPUT, 0) /* (AC17) RGMII1_RD1 */
+ AM62X_IOPAD(0x154, PIN_INPUT, 0) /* (AB16) RGMII1_RD2 */
+ AM62X_IOPAD(0x158, PIN_INPUT, 0) /* (AA15) RGMII1_RD3 */
+ AM62X_IOPAD(0x148, PIN_INPUT, 0) /* (AD17) RGMII1_RXC */
+ AM62X_IOPAD(0x144, PIN_INPUT, 0) /* (AE17) RGMII1_RX_CTL */
+ AM62X_IOPAD(0x134, PIN_OUTPUT, 0) /* (AE20) RGMII1_TD0 */
+ AM62X_IOPAD(0x138, PIN_OUTPUT, 0) /* (AD20) RGMII1_TD1 */
+ AM62X_IOPAD(0x13c, PIN_OUTPUT, 0) /* (AE18) RGMII1_TD2 */
+ AM62X_IOPAD(0x140, PIN_OUTPUT, 0) /* (AD18) RGMII1_TD3 */
+ AM62X_IOPAD(0x130, PIN_OUTPUT, 0) /* (AE19) RGMII1_TXC */
+ AM62X_IOPAD(0x12c, PIN_OUTPUT, 0) /* (AD19) RGMII1_TX_CTL */
+ >;
+ };
+
+ main_rgmii2_pins: main-rgmii2-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */
+ AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */
+ AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */
+ AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */
+ AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */
+ AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */
+ AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */
+ AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */
+ AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */
+ AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */
+ AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */
+ AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */
+ >;
+ };
+
+ main_spi0_pins: main-spi0-pins {
+ pinctrl-single,pins = <
+ /* (A14) SPI0_CLK */
+ AM62X_IOPAD(0x1bc, PIN_OUTPUT, 0)
+ /* (A13) SPI0_CS0 */
+ AM62X_IOPAD(0x1b4, PIN_OUTPUT, 0)
+ /* (B13) SPI0_D0 */
+ AM62X_IOPAD(0x1c0, PIN_OUTPUT, 0)
+ /* (B14) SPI0_D1 */
+ AM62X_IOPAD(0x1c4, PIN_INPUT, 0)
+ >;
+ };
+
+ main_spi0_adc_pins: main-spi0-adc-pins {
+ pinctrl-single,pins = <
+ /* (G21) OSPI0_CSn1.GPIO0_12 - ADC_SYNC */
+ AM62X_IOPAD(0x030, PIN_INPUT, 7)
+ /* (H21) OSPI0_CSn2.GPIO0_13 - ADC_RST# */
+ AM62X_IOPAD(0x034, PIN_OUTPUT, 7)
+ /* (E24) OSPI0_CSn3.GPIO0_14 - ADC_DATA_RDY */
+ AM62X_IOPAD(0x038, PIN_INPUT, 7)
+ /* (B23) MMC2_SDWP.GPIO0_72 - ADC_INT# */
+ AM62X_IOPAD(0x128, PIN_INPUT, 7)
+ >;
+ };
+
+ main_uart0_pins: main-uart0-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
+ AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
+ >;
+ bootph-all;
+ };
+
+ main_uart1_pins: main-uart1-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x1ac, PIN_INPUT, 2) /* (E19) MCASP0_AFSR.UART1_RXD */
+ AM62X_IOPAD(0x1b0, PIN_OUTPUT, 2) /* (A20) MCASP0_ACLKR.UART1_TXD */
+ >;
+ };
+
+ main_uart2_pins: main-uart2-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x0b8, PIN_INPUT, 4) /* (U22) VOUT0_DATA0.UART2_RXD */
+ AM62X_IOPAD(0x0bc, PIN_OUTPUT, 4) /* (V24) VOUT0_DATA1.UART2_TXD */
+ AM62X_IOPAD(0x104, PIN_INPUT, 4) /* (AC24) VOUT0_PCLK.UART2_CTS# */
+ AM62X_IOPAD(0x100, PIN_OUTPUT, 4) /* (AC25) VOUT0_VSYNC.UART2_RTS# */
+ >;
+ };
+
+ main_uart5_pins: main-uart5-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x0d0, PIN_INPUT, 4) /* (Y23) VOUT0_DATA6.UART5_RXD */
+ AM62X_IOPAD(0x0d4, PIN_OUTPUT, 4) /* (AA25) VOUT0_DATA7.UART5_TXD */
+ >;
+ };
+
+ main_usb0_pins: main-usb0-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x254, PIN_OUTPUT, 0) /* (C20) USB0_DRVVBUS */
+ AM62X_IOPAD(0x124, PIN_INPUT, 7) /* (A23) MMC2_SDCD.GPIO0_71 */
+ >;
+ };
+
+ main_usb1_hub_pins: main-usb1-hub-pins {
+ pinctrl-single,pins = <
+ /* (B15) UART0_RTSn.GPIO1_23 - USB_HUB_RESET */
+ AM62X_IOPAD(0x01d4, PIN_OUTPUT, 7)
+ >;
+ };
+
+ pwm_fan_pins: pwm-fan-pins {
+ pinctrl-single,pins = <
+ /* (C13) SPI0_CS1.EHRPWM0_B - FAN_PWM */
+ AM62X_IOPAD(0x01b8, PIN_OUTPUT, 2)
+ /* (A18) EXT_REFCLK1.GPIO1_30 - FAN_RPM */
+ AM62X_IOPAD(0x01f0, PIN_INPUT, 7)
+ >;
+ };
+
+ reg_3v3_sd_pins: reg-3v3-sd-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x198, PIN_OUTPUT, 7) /* (A19) MCASP0_AXR2.GPIO1_8 */
+ >;
+ bootph-all;
+ };
+
+ reg_lvds_pwr_pins: reg-lvds-pwr-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x00f8, PIN_OUTPUT, 7) /* (AB24) VOUT0_HSYNC.GPIO0_61 */
+ >;
+ };
+
+ reg_pwm_fan_pins: reg-pwm-fan-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x00fc, PIN_OUTPUT, 7) /* (Y20) VOUT0_DE.GPIO0_62 */
+ >;
+ };
+
+ reg_sd_pins: reg-sd-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 */
+ >;
+ bootph-all;
+ };
+};
+
+&mcu_pmx0 {
+ mcu_gpio0_pins: mcu-gpio0-pins {
+ pinctrl-single,pins = <
+ /* (E8) MCU_SPI0_CS0.MCU_GPIO0_0 - EN_DIG_OUT1 */
+ AM62X_MCU_IOPAD(0x000, PIN_OUTPUT, 7)
+ /* (B8) MCU_SPI0_CS1.MCU_GPIO0_1 - EN_DIG_OUT2 */
+ AM62X_MCU_IOPAD(0x004, PIN_OUTPUT, 7)
+ /* (A7) MCU_SPI0_CLK.MCU_GPIO0_2 - STATUS_OUT1 */
+ AM62X_MCU_IOPAD(0x008, PIN_INPUT, 7)
+ /* (D9) MCU_SPI0_D0.MCU_GPIO0_3 - STATUS_OUT2 */
+ AM62X_MCU_IOPAD(0x00c, PIN_INPUT, 7)
+ /* (C9) MCU_SPI0_D1.MCU_GPIO0_4 - EN_DIG_OUT3 */
+ AM62X_MCU_IOPAD(0x010, PIN_OUTPUT, 7)
+ /* (C6) WKUP_UART0_CTSn.MCU_GPIO0_11 - EN_DIG_OUT4 */
+ AM62X_MCU_IOPAD(0x02c, PIN_OUTPUT, 7)
+ /* (A4) WKUP_UART0_RTSn.MCU_GPIO0_12 - STATUS_OUT3 */
+ AM62X_MCU_IOPAD(0x030, PIN_INPUT, 7)
+ /* (A8) MCU_I2C0_SCL.MCU_GPIO0_17 - STATUS_OUT4 */
+ AM62X_MCU_IOPAD(0x044, PIN_INPUT, 7)
+ /* (D10) MCU_I2C0_SDA.MCU_GPIO0_18 - DIG_IN_1 */
+ AM62X_MCU_IOPAD(0x048, PIN_INPUT, 7)
+ /* (B9) WKUP_I2C0_SCL.MCU_GPIO0_19 - DIG_IN_2 */
+ AM62X_MCU_IOPAD(0x04c, PIN_INPUT, 7)
+ /* (A9) WKUP_I2C0_SDA.MCU_GPIO0_20 - DIG_IN_3 */
+ AM62X_MCU_IOPAD(0x050, PIN_INPUT, 7)
+ /* (A12) WKUP_CLKOUT0.MCU_GPIO0_23 - DIG_IN_4 */
+ AM62X_MCU_IOPAD(0x084, PIN_INPUT, 7)
+ /* (A6) MCU_UART0_CTSn.MCU_GPIO0_7 - V_VPP_EN */
+ AM62X_MCU_IOPAD(0x01c, PIN_OUTPUT, 7)
+ >;
+ };
+ mcu_mcan0_pins: mcu-mcan0-pins {
+ pinctrl-single,pins = <
+ AM62X_MCU_IOPAD(0x038, PIN_INPUT, 0) /* (B3) MCU_MCAN0_RX */
+ AM62X_MCU_IOPAD(0x034, PIN_OUTPUT, 0) /* (D6) MCU_MCAN0_TX */
+ >;
+ };
+
+ mcu_mcan1_pins: mcu-mcan1-pins {
+ pinctrl-single,pins = <
+ AM62X_MCU_IOPAD(0x040, PIN_INPUT, 0) /* (D4) MCU_MCAN1_RX */
+ AM62X_MCU_IOPAD(0x03c, PIN_OUTPUT, 0) /* (E5) MCU_MCAN1_TX */
+ >;
+ };
+
+ mcu_uart0_pins: mcu-uart0-pins {
+ pinctrl-single,pins = <
+ AM62X_MCU_IOPAD(0x014, PIN_INPUT, 0) /* (B5) MCU_UART0_RXD */
+ AM62X_MCU_IOPAD(0x018, PIN_OUTPUT, 0) /* (A5) MCU_UART0_TXD */
+ AM62X_MCU_IOPAD(0x020, PIN_OUTPUT, 0) /* (B6) MCU_UART0_RTS# */
+ >;
+ };
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi
new file mode 100644
index 0000000000000..1b7d58cb7b936
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi
@@ -0,0 +1,331 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (c) 2023-2025 TQ-Systems GmbH <linux@ew.tq-group.com>, D-82229 Seefeld, Germany.
+ * Author: Matthias Schiffer
+ */
+
+#include "k3-am625.dtsi"
+
+/ {
+ aliases {
+ i2c0 = &main_i2c0;
+ mmc0 = &sdhci0;
+ spi0 = &ospi0;
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ /* 1G RAM */
+ reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
+ bootph-pre-ram;
+ };
+
+ reserved_memory: reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramoops@9c700000 {
+ compatible = "ramoops";
+ reg = <0x00 0x9c700000 0x00 0x00100000>;
+ record-size = <0x8000>;
+ console-size = <0x8000>;
+ ftrace-size = <0x00>;
+ pmsg-size = <0x8000>;
+ };
+
+ /* global cma region */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x00 0x8000000>;
+ linux,cma-default;
+ };
+
+ rtos_ipc_memory_region: memory@9c800000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x9c800000 0x00 0x00300000>;
+ no-map;
+ };
+
+ wkup_r5fss0_core0_dma_memory_region: memory@9da00000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x9da00000 0x00 0x100000>;
+ no-map;
+ };
+
+ wkup_r5fss0_core0_memory_region: memory@9db00000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x9db00000 0x00 0xc00000>;
+ no-map;
+ };
+
+ secure_tfa_ddr: tfa@9e780000 {
+ reg = <0x00 0x9e780000 0x00 0x80000>;
+ alignment = <0x1000>;
+ no-map;
+ };
+
+ secure_ddr: optee@9e800000 {
+ reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
+ alignment = <0x1000>;
+ no-map;
+ };
+ };
+
+ reg_3v3: regulator-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "V_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ reg_sd: regulator-sd {
+ /* Output of TPS6521902RSM */
+ compatible = "regulator-gpio";
+ regulator-name = "V_VDDSHV5";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ vin-supply = <®_ldo1>;
+ states = <1800000 0x0>,
+ <3300000 0x1>;
+ /* Controlling GPIO set by base board */
+ status = "disabled";
+ };
+};
+
+&main_i2c0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_i2c0_pins>;
+ clock-frequency = <400000>;
+ bootph-pre-ram;
+ status = "okay";
+
+ tps65219: pmic@30 {
+ compatible = "ti,tps65219";
+ reg = <0x30>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pmic_irq_pins>;
+ interrupt-parent = <&gic500>;
+ interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ buck1-supply = <®_3v3>;
+ buck2-supply = <®_3v3>;
+ buck3-supply = <®_3v3>;
+ ldo1-supply = <®_3v3>;
+ ldo2-supply = <®_buck2>;
+ ldo3-supply = <®_3v3>;
+ ldo4-supply = <®_3v3>;
+ system-power-controller;
+ ti,power-button;
+
+ regulators {
+ reg_buck1: buck1 {
+ regulator-name = "V_VDD_CORE";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_buck2: buck2 {
+ regulator-name = "V_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_buck3: buck3 {
+ regulator-name = "V_1V1";
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_ldo1: ldo1 {
+ /* Actual voltage of LDO1 is controlled by GPIO, see reg_sd */
+ regulator-name = "V_VDDSHV5_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-allow-bypass;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_ldo2: ldo2 {
+ regulator-name = "V_0V85";
+ regulator-min-microvolt = <850000>;
+ regulator-max-microvolt = <850000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_ldo3: ldo3 {
+ regulator-name = "V_1V8A";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_ldo4: ldo4 {
+ /* Unused */
+ regulator-name = "V_VLDO4";
+ regulator-boot-on;
+ };
+ };
+ };
+
+ tmp1075: temperature-sensor@4a {
+ compatible = "ti,tmp1075";
+ reg = <0x4a>;
+ vs-supply = <®_buck2>;
+ };
+
+ eeprom0: eeprom@50 {
+ compatible = "st,24c02", "atmel,24c02";
+ reg = <0x50>;
+ vcc-supply = <®_buck2>;
+ pagesize = <16>;
+ read-only;
+ bootph-pre-ram;
+ };
+
+ pcf85063: rtc@51 {
+ compatible = "nxp,pcf85063a";
+ reg = <0x51>;
+ quartz-load-femtofarads = <12500>;
+ };
+
+ eeprom1: eeprom@54 {
+ compatible = "st,24c64", "atmel,24c64";
+ reg = <0x54>;
+ vcc-supply = <®_buck2>;
+ pagesize = <32>;
+ };
+};
+
+&a53_opp_table {
+ opp-1400000000 {
+ opp-hz = /bits/ 64 <1400000000>;
+ opp-supported-hw = <0x01 0x0004>;
+ opp-suspend;
+ clock-latency-ns = <6000000>;
+ /* Enabled by bootloader if supported */
+ status = "disabled";
+ };
+};
+
+&ospi0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&ospi0_pins>;
+ bootph-all;
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0x0>;
+ vcc-supply = <®_buck2>;
+ spi-tx-bus-width = <8>;
+ spi-rx-bus-width = <8>;
+ spi-max-frequency = <84000000>;
+ bootph-all;
+ cdns,tshsl-ns = <60>;
+ cdns,tsd2d-ns = <60>;
+ cdns,tchsh-ns = <60>;
+ cdns,tslch-ns = <60>;
+ cdns,read-delay = <2>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ /* Filled by bootloader */
+ };
+ };
+};
+
+&sdhci0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mmc0_pins>;
+ non-removable;
+ disable-wp;
+ no-sd;
+ no-sdio;
+ bootph-all;
+ ti,driver-strength-ohm = <50>;
+ status = "okay";
+};
+
+&wkup_rtc0 {
+ /*
+ * Erratum i2327: We can't guarantee that the TQMa62xx will boot fast
+ * enough for U-Boot to apply the workaround within one second after
+ * power-on. Keep the RTC disabled to avoid RTC interrupt issues.
+ *
+ * The external RTC of the TQMa62xx should be used instead.
+ *
+ * If needed, the RTC can be enabled in a baseboard DTS, as long as
+ * boot is fast enough on all relevant boot media.
+ */
+ status = "disabled";
+};
+
+&main_pmx0 {
+ main_i2c0_pins: main-i2c0-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x1e0, PIN_INPUT, 0) /* (B16) I2C0_SCL */
+ AM62X_IOPAD(0x1e4, PIN_INPUT, 0) /* (A16) I2C0_SDA */
+ >;
+ bootph-pre-ram;
+ };
+
+ main_mmc0_pins: main-mmc0-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */
+ AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1) MMC0_CLK */
+ AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */
+ AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (AA1) MMC0_DAT1 */
+ AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (AA3) MMC0_DAT2 */
+ AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (Y4) MMC0_DAT3 */
+ AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (AB2) MMC0_DAT4 */
+ AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (AC1) MMC0_DAT5 */
+ AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (AD2) MMC0_DAT6 */
+ AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (AC2) MMC0_DAT7 */
+ >;
+ bootph-all;
+ };
+
+ ospi0_pins: ospi0-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x000, PIN_OUTPUT, 0) /* (H24) OSPI0_CLK */
+ AM62X_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F23) OSPI0_CSn0 */
+ AM62X_IOPAD(0x00c, PIN_INPUT, 0) /* (E25) OSPI0_D0 */
+ AM62X_IOPAD(0x010, PIN_INPUT, 0) /* (G24) OSPI0_D1 */
+ AM62X_IOPAD(0x014, PIN_INPUT, 0) /* (F25) OSPI0_D2 */
+ AM62X_IOPAD(0x018, PIN_INPUT, 0) /* (F24) OSPI0_D3 */
+ AM62X_IOPAD(0x01c, PIN_INPUT, 0) /* (J23) OSPI0_D4 */
+ AM62X_IOPAD(0x020, PIN_INPUT, 0) /* (J25) OSPI0_D5 */
+ AM62X_IOPAD(0x024, PIN_INPUT, 0) /* (H25) OSPI0_D6 */
+ AM62X_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
+ AM62X_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
+ AM62X_IOPAD(0x004, PIN_INPUT, 0) /* (G25) OSPI0_LBCLKO */
+ >;
+ };
+
+ pmic_irq_pins: pmic-irq-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (D16) EXTINTn */
+ >;
+ };
+};
+
+#include "k3-am62-ti-ipc-firmware.dtsi"
--
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
https://www.tq-group.com/
On Mon, 2025-11-10 at 12:49 +0100, Matthias Schiffer wrote:
> The TQMa62xx is a SoM family with a pluggable board connector based on the
> TI AM62x SoCs. Add DTS(I) for the AM625 (2x Cortex-A53) variant and its
> combination with our MBa62xx carrier board.
Hi Vignesh,
do you have any further comments? Can we get this in for 6.19?
Best,
Matthias
>
> Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
> ---
> arch/arm64/boot/dts/ti/Makefile | 1 +
> .../boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts | 930 ++++++++++++++++++
> arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi | 331 +++++++
> 3 files changed, 1262 insertions(+)
> create mode 100644 arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts
> create mode 100644 arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi
>
> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
> index 361248dcfff42..1dce374215e57 100644
> --- a/arch/arm64/boot/dts/ti/Makefile
> +++ b/arch/arm64/boot/dts/ti/Makefile
> @@ -14,6 +14,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-ov5640.dtbo
> dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-tevi-ov5640.dtbo
> dtb-$(CONFIG_ARCH_K3) += k3-am625-phyboard-lyra-rdk.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am625-sk.dtb
> +dtb-$(CONFIG_ARCH_K3) += k3-am625-tqma62xx-mba62xx.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-dahlia.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-dev.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-ivy.dtb
> diff --git a/arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts
> new file mode 100644
> index 0000000000000..cca8d0018504d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx-mba62xx.dts
> @@ -0,0 +1,930 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*
> + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
> + * Copyright (c) 2023-2025 TQ-Systems GmbH <linux@ew.tq-group.com>, D-82229 Seefeld, Germany.
> + * Author: Matthias Schiffer
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/net/ti-dp83867.h>
> +#include <dt-bindings/pwm/pwm.h>
> +#include "k3-am625-tqma62xx.dtsi"
> +
> +/ {
> + compatible = "tq,am625-tqma6254-mba62xx", "tq,am625-tqma6254",
> + "ti,am625";
> + model = "TQ-Systems TQMa62xx SoM on MBa62xx carrier board";
> + chassis-type = "embedded";
> +
> + aliases {
> + can0 = &mcu_mcan0;
> + can1 = &mcu_mcan1;
> + ethernet0 = &cpsw_port1;
> + ethernet1 = &cpsw_port2;
> + i2c1 = &main_i2c1;
> + mmc1 = &sdhci1;
> + mmc2 = &sdhci2;
> + serial0 = &main_uart0;
> + serial1 = &mcu_uart0;
> + spi1 = &main_spi0;
> + usb0 = &usb0;
> + usb1 = &usb1;
> + };
> +
> + chosen {
> + stdout-path = &main_uart0;
> + };
> +
> + backlight: backlight {
> + compatible = "pwm-backlight";
> + pinctrl-names = "default";
> + pinctrl-0 = <&backlight_pins>;
> + enable-gpios = <&main_gpio0 38 GPIO_ACTIVE_HIGH>;
> + status = "disabled";
> + };
> +
> + gpio-keys {
> + compatible = "gpio-keys";
> + pinctrl-names = "default";
> + pinctrl-0 = <&gpio_key_pins>;
> +
> + user-button {
> + label = "USER_BUTTON";
> + linux,code = <BTN_0>;
> + gpios = <&main_gpio0 40 GPIO_ACTIVE_LOW>;
> + };
> + };
> +
> + gpio-leds {
> + compatible = "gpio-leds";
> + pinctrl-names = "default";
> + pinctrl-0 = <&gpio_led_pins>;
> +
> + led-1 {
> + gpios = <&main_gpio0 41 GPIO_ACTIVE_HIGH>;
> + color = <LED_COLOR_ID_GREEN>;
> + function = LED_FUNCTION_INDICATOR;
> + };
> +
> + led-2 {
> + gpios = <&main_gpio0 42 GPIO_ACTIVE_HIGH>;
> + color = <LED_COLOR_ID_YELLOW>;
> + function = LED_FUNCTION_INDICATOR;
> + };
> + };
> +
> + panel: panel {
> + pinctrl-names = "default";
> + pinctrl-0 = <&lvds_panel_pins>;
> + enable-gpios = <&main_gpio0 36 GPIO_ACTIVE_HIGH>;
> + power-supply = <®_lvds_pwr>;
> + };
> +
> + fan0: pwm-fan {
> + compatible = "pwm-fan";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pwm_fan_pins>;
> + fan-supply = <®_pwm_fan>;
> + #cooling-cells = <2>;
> + /* typical 25 kHz -> 40.000 nsec */
> + pwms = <&epwm0 1 40000 PWM_POLARITY_INVERTED>;
> + cooling-levels = <0 32 64 128 196 240>;
> + pulses-per-revolution = <2>;
> + interrupt-parent = <&main_gpio1>;
> + interrupts = <30 IRQ_TYPE_EDGE_FALLING>;
> + status = "disabled";
> + };
> +
> + wifi_pwrseq: pwrseq-wifi {
> + compatible = "mmc-pwrseq-simple";
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mmc2_pwrseq_pins>;
> + reset-gpios = <&main_gpio0 44 GPIO_ACTIVE_HIGH>;
> + };
> +
> + reg_1v8: regulator-1v8 {
> + compatible = "regulator-fixed";
> + regulator-name = "V_1V8_MBA";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + reg_3v3_sd: regulator-3v3-sd {
> + /* TPS22963CYZTP */
> + compatible = "regulator-fixed";
> + pinctrl-names = "default";
> + pinctrl-0 = <®_3v3_sd_pins>;
> + regulator-name = "V_3V3_SD";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + enable-active-high;
> + vin-supply = <®_3v3>;
> + gpio = <&main_gpio1 8 GPIO_ACTIVE_HIGH>;
> + bootph-all;
> + };
> +
> + reg_lvds_pwr: regulator-lvds-pwr {
> + compatible = "regulator-fixed";
> + pinctrl-names = "default";
> + pinctrl-0 = <®_lvds_pwr_pins>;
> + regulator-name = "LVDS0_PWR";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + enable-active-high;
> + vin-supply = <®_3v3>;
> + gpio = <&main_gpio0 61 GPIO_ACTIVE_HIGH>;
> + };
> +
> + reg_pwm_fan: regulator-pwm-fan {
> + compatible = "regulator-fixed";
> + pinctrl-names = "default";
> + pinctrl-0 = <®_pwm_fan_pins>;
> + regulator-name = "FAN_PWR";
> + regulator-min-microvolt = <12000000>;
> + regulator-max-microvolt = <12000000>;
> + gpio = <&main_gpio0 62 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + sound: sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "tqm-tlv320aic32";
> + simple-audio-card,widgets =
> + "Line Out", "Line Out",
> + "Line In", "Line In",
> + "Microphone", "Microphone Jack";
> + simple-audio-card,routing =
> + "Line Out", "LOL",
> + "Line Out", "LOR",
> + "IN1_L", "Line In",
> + "IN1_R", "Line In",
> + "IN3_L", "Microphone Jack",
> + "Microphone Jack", "Mic Bias";
> + simple-audio-card,format = "i2s";
> + simple-audio-card,bitclock-master = <&sound_master>;
> + simple-audio-card,frame-master = <&sound_master>;
> +
> + simple-audio-card,cpu {
> + sound-dai = <&mcasp1>;
> + };
> +
> + sound_master: simple-audio-card,codec {
> + sound-dai = <&tlv320aic32x4>;
> + clocks = <&audio_refclk0>;
> + };
> + };
> +};
> +
> +&audio_refclk0 {
> + /* Set parent to POSTDIV1_16FFT_MAIN_1_HSDIVOUT6, for 96MHz clock output */
> + assigned-clock-parents = <&k3_clks 157 7>;
> +};
> +
> +&cpsw3g {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_rgmii1_pins
> + &main_rgmii2_pins>;
> + status = "okay";
> +};
> +
> +&cpsw_port1 {
> + phy-mode = "rgmii-id";
> + phy-handle = <&cpsw3g_phy0>;
> +};
> +
> +&cpsw_port2 {
> + phy-mode = "rgmii-id";
> + phy-handle = <&cpsw3g_phy3>;
> +};
> +
> +&cpsw3g_mdio {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mdio1_pins>;
> + status = "okay";
> +
> + cpsw3g_phy0: ethernet-phy@0 {
> + compatible = "ethernet-phy-ieee802.3-c22";
> + reg = <0x0>;
> + reset-gpios = <&main_gpio1 11 GPIO_ACTIVE_LOW>;
> + reset-assert-us = <1000>;
> + reset-deassert-us = <1000>;
> + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
> + };
> +
> + cpsw3g_phy3: ethernet-phy@3 {
> + compatible = "ethernet-phy-ieee802.3-c22";
> + reg = <0x3>;
> + reset-gpios = <&main_gpio1 12 GPIO_ACTIVE_LOW>;
> + reset-assert-us = <1000>;
> + reset-deassert-us = <1000>;
> + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
> + };
> +};
> +
> +&dss {
> + pinctrl-names = "default";
> + pinctrl-0 = <&dss_pins>;
> +};
> +
> +&epwm0 {
> + status = "okay";
> +};
> +
> +&epwm1 {
> + status = "okay";
> +};
> +
> +&main_gpio0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_gpio0_pins &main_gpio0_pr0_pins>;
> + gpio-line-names =
> + "", "", "", "", /* 0-3 */
> + "", "", "", "", /* 4-7 */
> + "", "", "", "", /* 8-11 */
> + "ADC_SYNC", "ADC_RST#", "ADC_DATA_RDY", "", /* 12-15 */
> + "", "", "", "", /* 16-19 */
> + "", "", "", "", /* 20-23 */
> + "", "", "", "", /* 24-27 */
> + "", "", "", "", /* 28-31 */
> + "", "", "", "", /* 32-35 */
> + "", "", "", "BG95_PWRKEY", /* 36-39 */
> + "", "", "", "BG95_RESET", /* 40-43 */
> + "", "", "", "", /* 44-47 */
> + "", "", "", "", /* 48-51 */
> + "", "", "", "", /* 52-55 */
> + "", "", "", "", /* 56-59 */
> + "", "", "", "", /* 60-63 */
> + "", "", "", "", /* 64-67 */
> + "", "", "", "", /* 68-71 */
> + "ADC_INT"; /* 72- */
> + bootph-all;
> +};
> +
> +&main_gpio1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_gpio1_pins &main_gpio1_pr0_pins>;
> + bootph-all;
> +
> + /* No overcurrent handling in USB host driver - pin is hogged for now */
> + line7-hog {
> + gpio-hog;
> + gpios = <7 GPIO_ACTIVE_HIGH>;
> + line-name = "USB0_VBUS_OC#";
> + input;
> + };
> +};
> +
> +&main_i2c1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_i2c1_pins>;
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + tlv320aic32x4: audio-codec@18 {
> + compatible = "ti,tlv320aic32x4";
> + reg = <0x18>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&audio_codec_pins>;
> + #sound-dai-cells = <0>;
> + clock-names = "mclk";
> + clocks = <&audio_refclk0>;
> + reset-gpios = <&main_gpio0 33 GPIO_ACTIVE_LOW>;
> + iov-supply = <®_1v8>;
> + ldoin-supply = <®_3v3>;
> + };
> +};
> +
> +&main_spi0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_spi0_pins>;
> + ti,pindir-d0-out-d1-in;
> + status = "okay";
> +
> + /* adc@0: NXP NAFE13388 */
> +};
> +
> +&main0_thermal {
> + trips {
> + main0_active0: trip-active0 {
> + temperature = <40000>;
> + hysteresis = <5000>;
> + type = "active";
> + };
> +
> + main0_active1: trip-active1 {
> + temperature = <48000>;
> + hysteresis = <3000>;
> + type = "active";
> + };
> +
> + main0_active2: trip-active2 {
> + temperature = <60000>;
> + hysteresis = <10000>;
> + type = "active";
> + };
> + };
> +
> + cooling-maps {
> + map1 {
> + trip = <&main0_active0>;
> + cooling-device = <&fan0 1 1>;
> + };
> +
> + map2 {
> + trip = <&main0_active1>;
> + cooling-device = <&fan0 2 2>;
> + };
> +
> + map3 {
> + trip = <&main0_active2>;
> + cooling-device = <&fan0 3 3>;
> + };
> + };
> +};
> +
> +&main1_thermal {
> + trips {
> + main1_active0: trip-active0 {
> + temperature = <40000>;
> + hysteresis = <5000>;
> + type = "active";
> + };
> +
> + main1_active1: trip-active1 {
> + temperature = <48000>;
> + hysteresis = <3000>;
> + type = "active";
> + };
> +
> + main1_active2: trip-active2 {
> + temperature = <60000>;
> + hysteresis = <10000>;
> + type = "active";
> + };
> + };
> +
> + cooling-maps {
> + map1 {
> + trip = <&main1_active0>;
> + cooling-device = <&fan0 1 1>;
> + };
> +
> + map2 {
> + trip = <&main1_active1>;
> + cooling-device = <&fan0 2 2>;
> + };
> +
> + map3 {
> + trip = <&main1_active2>;
> + cooling-device = <&fan0 3 3>;
> + };
> + };
> +};
> +
> +/* Main console */
> +&main_uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_uart0_pins>;
> + bootph-all;
> + status = "okay";
> +};
> +
> +/*
> + * IOT module - GNSS UART
> + *
> + * Board configuration must not enable UART trace output for TIFS firmware
> + */
> +&main_uart1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_uart1_pins>;
> + /* IOT module uses USB by default, UART can be enabled as fallback */
> + status = "disabled";
> +};
> +
> +/* Bluetooth module */
> +&main_uart2 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_uart2_pins>;
> + /* Bluetooth module uses SDIO by default, UART can be enabled as fallback */
> + status = "disabled";
> +};
> +
> +/* IOT module - main UART */
> +&main_uart5 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_uart5_pins>;
> + /* IOT module uses USB by default, UART can be enabled as fallback */
> + status = "disabled";
> +};
> +
> +&mcasp1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mcasp1_pins>;
> + #sound-dai-cells = <0>;
> + op-mode = <0>; /* MCASP_IIS_MODE */
> + tdm-slots = <2>;
> + serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
> + 1 0 2 0
> + 0 0 0 0
> + 0 0 0 0
> + 0 0 0 0
> + >;
> + tx-num-evt = <0>;
> + rx-num-evt = <0>;
> + status = "okay";
> +};
> +
> +&mcu_gpio0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mcu_gpio0_pins>;
> + gpio-line-names =
> + "EN_DIG_OUT_1", "EN_DIG_OUT_2", "STATUS_OUT_1", "STATUS_OUT_2", /* 0-3 */
> + "EN_DIG_OUT_3", "", "", "V_VPP_EN", /* 4-7 */
> + "", "", "", "EN_DIG_OUT_4", /* 8-11 */
> + "STATUS_OUT_3", "", "", "", /* 12-15 */
> + "", "STATUS_OUT_4", "DIG_IN_1", "DIG_IN_2", /* 16-19 */
> + "DIG_IN_3", "", "", "DIG_IN_4"; /* 20-23 */
> + bootph-all;
> +};
> +
> +&mcu_mcan0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mcu_mcan0_pins>;
> + status = "okay";
> +};
> +
> +&mcu_mcan1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mcu_mcan1_pins>;
> + status = "okay";
> +};
> +
> +&mcu_uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mcu_uart0_pins>;
> + rs485-rts-active-low;
> + linux,rs485-enabled-at-boot-time;
> + status = "okay";
> +};
> +
> +®_sd {
> + pinctrl-names = "default";
> + pinctrl-0 = <®_sd_pins>;
> + gpios = <&main_gpio0 31 GPIO_ACTIVE_LOW>;
> + bootph-all;
> + status = "okay";
> +};
> +
> +&sdhci1 {
> + /* SD-card */
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mmc1_pins>;
> + vmmc-supply = <®_3v3_sd>;
> + vqmmc-supply = <®_sd>;
> + bus-width = <4>;
> + disable-wp;
> + no-mmc;
> + no-sdio;
> + bootph-all;
> + ti,driver-strength-ohm = <50>;
> + status = "okay";
> +};
> +
> +&sdhci2 {
> + /* WLAN */
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mmc2_pins>;
> + mmc-pwrseq = <&wifi_pwrseq>;
> + keep-power-in-suspend;
> + cap-power-off-card;
> + bus-width = <4>;
> + non-removable;
> + no-mmc;
> + no-sd;
> + ti,driver-strength-ohm = <50>;
> + ti,fails-without-test-cd;
> + status = "okay";
> +};
> +
> +&usbss0 {
> + bootph-all;
> + ti,vbus-divider;
> + status = "okay";
> +};
> +
> +&usbss1 {
> + ti,vbus-divider;
> + status = "okay";
> +};
> +
> +&usb0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_usb0_pins>;
> + dr_mode = "otg";
> + usb-role-switch;
> + bootph-all;
> +
> + connector {
> + compatible = "gpio-usb-b-connector", "usb-b-connector";
> + id-gpios = <&main_gpio0 71 GPIO_ACTIVE_HIGH>;
> + type = "micro";
> + };
> +};
> +
> +&usb1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_usb1_hub_pins>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + dr_mode = "host";
> +
> + usb1_hub_2_0: hub@1 {
> + compatible = "usb424,2514";
> + reg = <1>;
> + reset-gpios = <&main_gpio1 23 GPIO_ACTIVE_HIGH>;
> + vdd-supply = <®_3v3>;
> + vdda-supply = <®_3v3>;
> + };
> +};
> +
> +&wkup_uart0 {
> + /* WKUP UART0 is used by DM firmware */
> + status = "reserved";
> +};
> +
> +&main_pmx0 {
> + audio_codec_pins: audio-codec-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x088, PIN_OUTPUT, 7) /* (L24) GPMC0_OEn_REn.GPIO0_33 */
> + AM62X_IOPAD(0x1d0, PIN_OUTPUT, 5) /* (A15) UART0_CTSn.AUDIO_EXT_REFCLK0 */
> + >;
> + };
> +
> + backlight_pins: backlight-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x009c, PIN_OUTPUT, 7) /* (V25) GPMC0_WAIT1.GPIO0_38 */
> + AM62X_IOPAD(0x01a0, PIN_OUTPUT, 6) /* (E18) MCASP0_AXR0.EHRPWM1_B */
> + >;
> + };
> +
> + dss_pins: dss-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
> + AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
> + AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
> + AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
> + AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
> + AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
> + AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
> + AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
> + AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
> + AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
> + AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
> + AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
> + AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
> + AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
> + AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
> + AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
> + AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
> + AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
> + AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
> + AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
> + >;
> + };
> +
> + csi_clk_pins: csi-clk-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x019c, PIN_OUTPUT, 6) /* (B18) MCASP0_AXR1.EHRPWM1_A */
> + >;
> + };
> +
> + gpio_key_pins: gpio-key-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x0a4, PIN_INPUT, 7) /* (M22) GPMC0_DIR.GPIO0_40 */
> + >;
> + };
> +
> + gpio_led_pins: gpio-led-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x0a8, PIN_OUTPUT, 7) /* (M21) GPMC0_CSn0.GPIO0_41 */
> + AM62X_IOPAD(0x0ac, PIN_OUTPUT, 7) /* (L21) GPMC0_CSn1.GPIO0_42 */
> + >;
> + };
> +
> + lvds_panel_pins: lvds-panel-pins {
> + pinctrl-single,pins = <
> + /* (N20) GPMC0_BE1n.GPIO0_36 - LVDS0_RESET# */
> + AM62X_IOPAD(0x0094, PIN_OUTPUT, 7)
> + >;
> + };
> +
> + main_gpio0_pins: main-gpio0-pins {
> + pinctrl-single,pins = <
> + /* Control GPIOs for IOT Module */
> + /* (K25) GPMC0_WPn.GPIO0_39 - BG95_PWRKEY */
> + AM62X_IOPAD(0x0a0, PIN_OUTPUT, 7)
> + /* (K22) GPMC0_CSn2.GPIO0_43 - BG95_RESET */
> + AM62X_IOPAD(0x0b0, PIN_OUTPUT, 7)
> + >;
> + };
> +
> + main_gpio0_pr0_pins: main-gpio0-pr0-pins {
> + pinctrl-single,pins = <
> + /* (N24) GPMC0_AD2.GPIO0_17 */
> + AM62X_IOPAD(0x0044, PIN_INPUT, 7)
> + /* (N25) GPMC0_AD3.GPIO0_18 */
> + AM62X_IOPAD(0x0048, PIN_INPUT, 7)
> + /* (P24) GPMC0_AD4.GPIO0_19 */
> + AM62X_IOPAD(0x004c, PIN_INPUT, 7)
> + /* (P22) GPMC0_AD5.GPIO0_20 */
> + AM62X_IOPAD(0x0050, PIN_INPUT, 7)
> + /* (W25) VOUT0_DATA2.GPIO0_47 */
> + AM62X_IOPAD(0x00c0, PIN_INPUT, 7)
> + /* (W24) VOUT0_DATA3.GPIO0_48 */
> + AM62X_IOPAD(0x00c4, PIN_INPUT, 7)
> + /* (Y25) VOUT0_DATA4.GPIO0_49 */
> + AM62X_IOPAD(0x00c8, PIN_INPUT, 7)
> + /* (Y24) VOUT0_DATA5.GPIO0_50 */
> + AM62X_IOPAD(0x00cc, PIN_INPUT, 7)
> + >;
> + };
> +
> + main_gpio1_pins: main-gpio1-pins {
> + pinctrl-single,pins = <
> + /* (B19) MCASP0_AXR3.GPIO1_7 - USB0_VBUS_OC# */
> + AM62X_IOPAD(0x0194, PIN_INPUT, 7)
> + >;
> + };
> +
> + main_gpio1_pr0_pins: main-gpio1-pr0-pins {
> + pinctrl-single,pins = <
> + /* (C15) MCAN0_TX.GPIO1_24 */
> + AM62X_IOPAD(0x01d8, PIN_INPUT, 7)
> + /* (E15) MCAN0_RX.GPIO1_25 */
> + AM62X_IOPAD(0x01dc, PIN_INPUT, 7)
> + >;
> + };
> +
> + main_i2c1_pins: main-i2c1-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x1e8, PIN_INPUT, 0) /* (B17) I2C1_SCL */
> + AM62X_IOPAD(0x1ec, PIN_INPUT, 0) /* (A17) I2C1_SDA */
> + >;
> + };
> +
> + main_mcasp1_pins: main-mcasp1-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x090, PIN_INPUT, 2) /* (M24) GPMC0_BE0N_CLE.MCASP1_ACLKX */
> + AM62X_IOPAD(0x098, PIN_INPUT, 2) /* (U23) GPMC0_WAIT0.MCASP1_AFSX */
> + AM62X_IOPAD(0x08c, PIN_OUTPUT, 2) /* (L25) GPMC0_WEN.MCASP1_AXR0 */
> + AM62X_IOPAD(0x084, PIN_INPUT, 2) /* (L23) GPMC0_ADVN_ALE.MCASP1_AXR2 */
> + >;
> + };
> +
> + main_mmc1_pins: main-mmc1-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21) MMC1_CMD */
> + AM62X_IOPAD(0x234, PIN_INPUT, 0) /* (B22) MMC1_CLK */
> + AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22) MMC1_DAT0 */
> + AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21) MMC1_DAT1 */
> + AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21) MMC1_DAT2 */
> + AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
> + AM62X_IOPAD(0x240, PIN_INPUT, 0) /* (D17) MMC1_SDCD */
> + >;
> + bootph-all;
> + };
> +
> + main_mmc2_pins: main-mmc2-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x120, PIN_INPUT, 0) /* (C24) MMC2_CMD */
> + AM62X_IOPAD(0x118, PIN_INPUT, 0) /* (D25) MMC2_CLK */
> + AM62X_IOPAD(0x114, PIN_INPUT, 0) /* (B24) MMC2_DAT0 */
> + AM62X_IOPAD(0x110, PIN_INPUT, 0) /* (C25) MMC2_DAT1 */
> + AM62X_IOPAD(0x10c, PIN_INPUT, 0) /* (E23) MMC2_DAT2 */
> + AM62X_IOPAD(0x108, PIN_INPUT, 0) /* (D24) MMC2_DAT3 */
> + AM62X_IOPAD(0x11c, PIN_INPUT, 0) /* (#N/A) MMC2_CLKB */
> + >;
> + };
> +
> + main_mmc2_pwrseq_pins: main-mmc2-pwrseq-pins {
> + pinctrl-single,pins = <
> + /* (K24) GPMC0_CSn3.GPIO0_44 - WIFI-BT_EN */
> + AM62X_IOPAD(0x00b4, PIN_OUTPUT, 7)
> + >;
> + };
> +
> + main_mdio1_pins: main-mdio1-pins {
> + pinctrl-single,pins = <
> + /* (B20) MCASP0_ACLKX.GPIO1_11 - RESET_RGMII1# */
> + AM62X_IOPAD(0x1a4, PIN_OUTPUT, 7)
> + /* (D20) MCASP0_AFSX.GPIO1_12 - RESET_RGMII2# */
> + AM62X_IOPAD(0x1a8, PIN_OUTPUT, 7)
> +
> + AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC */
> + AM62X_IOPAD(0x15c, PIN_INPUT, 0) /* (AB22) MDIO0_MDIO */
> + >;
> + };
> +
> + main_rgmii1_pins: main-rgmii1-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x14c, PIN_INPUT, 0) /* (AB17) RGMII1_RD0 */
> + AM62X_IOPAD(0x150, PIN_INPUT, 0) /* (AC17) RGMII1_RD1 */
> + AM62X_IOPAD(0x154, PIN_INPUT, 0) /* (AB16) RGMII1_RD2 */
> + AM62X_IOPAD(0x158, PIN_INPUT, 0) /* (AA15) RGMII1_RD3 */
> + AM62X_IOPAD(0x148, PIN_INPUT, 0) /* (AD17) RGMII1_RXC */
> + AM62X_IOPAD(0x144, PIN_INPUT, 0) /* (AE17) RGMII1_RX_CTL */
> + AM62X_IOPAD(0x134, PIN_OUTPUT, 0) /* (AE20) RGMII1_TD0 */
> + AM62X_IOPAD(0x138, PIN_OUTPUT, 0) /* (AD20) RGMII1_TD1 */
> + AM62X_IOPAD(0x13c, PIN_OUTPUT, 0) /* (AE18) RGMII1_TD2 */
> + AM62X_IOPAD(0x140, PIN_OUTPUT, 0) /* (AD18) RGMII1_TD3 */
> + AM62X_IOPAD(0x130, PIN_OUTPUT, 0) /* (AE19) RGMII1_TXC */
> + AM62X_IOPAD(0x12c, PIN_OUTPUT, 0) /* (AD19) RGMII1_TX_CTL */
> + >;
> + };
> +
> + main_rgmii2_pins: main-rgmii2-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */
> + AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */
> + AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */
> + AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */
> + AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */
> + AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */
> + AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */
> + AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */
> + AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */
> + AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */
> + AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */
> + AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */
> + >;
> + };
> +
> + main_spi0_pins: main-spi0-pins {
> + pinctrl-single,pins = <
> + /* (A14) SPI0_CLK */
> + AM62X_IOPAD(0x1bc, PIN_OUTPUT, 0)
> + /* (A13) SPI0_CS0 */
> + AM62X_IOPAD(0x1b4, PIN_OUTPUT, 0)
> + /* (B13) SPI0_D0 */
> + AM62X_IOPAD(0x1c0, PIN_OUTPUT, 0)
> + /* (B14) SPI0_D1 */
> + AM62X_IOPAD(0x1c4, PIN_INPUT, 0)
> + >;
> + };
> +
> + main_spi0_adc_pins: main-spi0-adc-pins {
> + pinctrl-single,pins = <
> + /* (G21) OSPI0_CSn1.GPIO0_12 - ADC_SYNC */
> + AM62X_IOPAD(0x030, PIN_INPUT, 7)
> + /* (H21) OSPI0_CSn2.GPIO0_13 - ADC_RST# */
> + AM62X_IOPAD(0x034, PIN_OUTPUT, 7)
> + /* (E24) OSPI0_CSn3.GPIO0_14 - ADC_DATA_RDY */
> + AM62X_IOPAD(0x038, PIN_INPUT, 7)
> + /* (B23) MMC2_SDWP.GPIO0_72 - ADC_INT# */
> + AM62X_IOPAD(0x128, PIN_INPUT, 7)
> + >;
> + };
> +
> + main_uart0_pins: main-uart0-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
> + AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
> + >;
> + bootph-all;
> + };
> +
> + main_uart1_pins: main-uart1-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x1ac, PIN_INPUT, 2) /* (E19) MCASP0_AFSR.UART1_RXD */
> + AM62X_IOPAD(0x1b0, PIN_OUTPUT, 2) /* (A20) MCASP0_ACLKR.UART1_TXD */
> + >;
> + };
> +
> + main_uart2_pins: main-uart2-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x0b8, PIN_INPUT, 4) /* (U22) VOUT0_DATA0.UART2_RXD */
> + AM62X_IOPAD(0x0bc, PIN_OUTPUT, 4) /* (V24) VOUT0_DATA1.UART2_TXD */
> + AM62X_IOPAD(0x104, PIN_INPUT, 4) /* (AC24) VOUT0_PCLK.UART2_CTS# */
> + AM62X_IOPAD(0x100, PIN_OUTPUT, 4) /* (AC25) VOUT0_VSYNC.UART2_RTS# */
> + >;
> + };
> +
> + main_uart5_pins: main-uart5-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x0d0, PIN_INPUT, 4) /* (Y23) VOUT0_DATA6.UART5_RXD */
> + AM62X_IOPAD(0x0d4, PIN_OUTPUT, 4) /* (AA25) VOUT0_DATA7.UART5_TXD */
> + >;
> + };
> +
> + main_usb0_pins: main-usb0-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x254, PIN_OUTPUT, 0) /* (C20) USB0_DRVVBUS */
> + AM62X_IOPAD(0x124, PIN_INPUT, 7) /* (A23) MMC2_SDCD.GPIO0_71 */
> + >;
> + };
> +
> + main_usb1_hub_pins: main-usb1-hub-pins {
> + pinctrl-single,pins = <
> + /* (B15) UART0_RTSn.GPIO1_23 - USB_HUB_RESET */
> + AM62X_IOPAD(0x01d4, PIN_OUTPUT, 7)
> + >;
> + };
> +
> + pwm_fan_pins: pwm-fan-pins {
> + pinctrl-single,pins = <
> + /* (C13) SPI0_CS1.EHRPWM0_B - FAN_PWM */
> + AM62X_IOPAD(0x01b8, PIN_OUTPUT, 2)
> + /* (A18) EXT_REFCLK1.GPIO1_30 - FAN_RPM */
> + AM62X_IOPAD(0x01f0, PIN_INPUT, 7)
> + >;
> + };
> +
> + reg_3v3_sd_pins: reg-3v3-sd-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x198, PIN_OUTPUT, 7) /* (A19) MCASP0_AXR2.GPIO1_8 */
> + >;
> + bootph-all;
> + };
> +
> + reg_lvds_pwr_pins: reg-lvds-pwr-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x00f8, PIN_OUTPUT, 7) /* (AB24) VOUT0_HSYNC.GPIO0_61 */
> + >;
> + };
> +
> + reg_pwm_fan_pins: reg-pwm-fan-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x00fc, PIN_OUTPUT, 7) /* (Y20) VOUT0_DE.GPIO0_62 */
> + >;
> + };
> +
> + reg_sd_pins: reg-sd-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 */
> + >;
> + bootph-all;
> + };
> +};
> +
> +&mcu_pmx0 {
> + mcu_gpio0_pins: mcu-gpio0-pins {
> + pinctrl-single,pins = <
> + /* (E8) MCU_SPI0_CS0.MCU_GPIO0_0 - EN_DIG_OUT1 */
> + AM62X_MCU_IOPAD(0x000, PIN_OUTPUT, 7)
> + /* (B8) MCU_SPI0_CS1.MCU_GPIO0_1 - EN_DIG_OUT2 */
> + AM62X_MCU_IOPAD(0x004, PIN_OUTPUT, 7)
> + /* (A7) MCU_SPI0_CLK.MCU_GPIO0_2 - STATUS_OUT1 */
> + AM62X_MCU_IOPAD(0x008, PIN_INPUT, 7)
> + /* (D9) MCU_SPI0_D0.MCU_GPIO0_3 - STATUS_OUT2 */
> + AM62X_MCU_IOPAD(0x00c, PIN_INPUT, 7)
> + /* (C9) MCU_SPI0_D1.MCU_GPIO0_4 - EN_DIG_OUT3 */
> + AM62X_MCU_IOPAD(0x010, PIN_OUTPUT, 7)
> + /* (C6) WKUP_UART0_CTSn.MCU_GPIO0_11 - EN_DIG_OUT4 */
> + AM62X_MCU_IOPAD(0x02c, PIN_OUTPUT, 7)
> + /* (A4) WKUP_UART0_RTSn.MCU_GPIO0_12 - STATUS_OUT3 */
> + AM62X_MCU_IOPAD(0x030, PIN_INPUT, 7)
> + /* (A8) MCU_I2C0_SCL.MCU_GPIO0_17 - STATUS_OUT4 */
> + AM62X_MCU_IOPAD(0x044, PIN_INPUT, 7)
> + /* (D10) MCU_I2C0_SDA.MCU_GPIO0_18 - DIG_IN_1 */
> + AM62X_MCU_IOPAD(0x048, PIN_INPUT, 7)
> + /* (B9) WKUP_I2C0_SCL.MCU_GPIO0_19 - DIG_IN_2 */
> + AM62X_MCU_IOPAD(0x04c, PIN_INPUT, 7)
> + /* (A9) WKUP_I2C0_SDA.MCU_GPIO0_20 - DIG_IN_3 */
> + AM62X_MCU_IOPAD(0x050, PIN_INPUT, 7)
> + /* (A12) WKUP_CLKOUT0.MCU_GPIO0_23 - DIG_IN_4 */
> + AM62X_MCU_IOPAD(0x084, PIN_INPUT, 7)
> + /* (A6) MCU_UART0_CTSn.MCU_GPIO0_7 - V_VPP_EN */
> + AM62X_MCU_IOPAD(0x01c, PIN_OUTPUT, 7)
> + >;
> + };
> + mcu_mcan0_pins: mcu-mcan0-pins {
> + pinctrl-single,pins = <
> + AM62X_MCU_IOPAD(0x038, PIN_INPUT, 0) /* (B3) MCU_MCAN0_RX */
> + AM62X_MCU_IOPAD(0x034, PIN_OUTPUT, 0) /* (D6) MCU_MCAN0_TX */
> + >;
> + };
> +
> + mcu_mcan1_pins: mcu-mcan1-pins {
> + pinctrl-single,pins = <
> + AM62X_MCU_IOPAD(0x040, PIN_INPUT, 0) /* (D4) MCU_MCAN1_RX */
> + AM62X_MCU_IOPAD(0x03c, PIN_OUTPUT, 0) /* (E5) MCU_MCAN1_TX */
> + >;
> + };
> +
> + mcu_uart0_pins: mcu-uart0-pins {
> + pinctrl-single,pins = <
> + AM62X_MCU_IOPAD(0x014, PIN_INPUT, 0) /* (B5) MCU_UART0_RXD */
> + AM62X_MCU_IOPAD(0x018, PIN_OUTPUT, 0) /* (A5) MCU_UART0_TXD */
> + AM62X_MCU_IOPAD(0x020, PIN_OUTPUT, 0) /* (B6) MCU_UART0_RTS# */
> + >;
> + };
> +};
> diff --git a/arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi
> new file mode 100644
> index 0000000000000..1b7d58cb7b936
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am625-tqma62xx.dtsi
> @@ -0,0 +1,331 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*
> + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
> + * Copyright (c) 2023-2025 TQ-Systems GmbH <linux@ew.tq-group.com>, D-82229 Seefeld, Germany.
> + * Author: Matthias Schiffer
> + */
> +
> +#include "k3-am625.dtsi"
> +
> +/ {
> + aliases {
> + i2c0 = &main_i2c0;
> + mmc0 = &sdhci0;
> + spi0 = &ospi0;
> + };
> +
> + memory@80000000 {
> + device_type = "memory";
> + /* 1G RAM */
> + reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
> + bootph-pre-ram;
> + };
> +
> + reserved_memory: reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + ramoops@9c700000 {
> + compatible = "ramoops";
> + reg = <0x00 0x9c700000 0x00 0x00100000>;
> + record-size = <0x8000>;
> + console-size = <0x8000>;
> + ftrace-size = <0x00>;
> + pmsg-size = <0x8000>;
> + };
> +
> + /* global cma region */
> + linux,cma {
> + compatible = "shared-dma-pool";
> + reusable;
> + size = <0x00 0x8000000>;
> + linux,cma-default;
> + };
> +
> + rtos_ipc_memory_region: memory@9c800000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x9c800000 0x00 0x00300000>;
> + no-map;
> + };
> +
> + wkup_r5fss0_core0_dma_memory_region: memory@9da00000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x9da00000 0x00 0x100000>;
> + no-map;
> + };
> +
> + wkup_r5fss0_core0_memory_region: memory@9db00000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x9db00000 0x00 0xc00000>;
> + no-map;
> + };
> +
> + secure_tfa_ddr: tfa@9e780000 {
> + reg = <0x00 0x9e780000 0x00 0x80000>;
> + alignment = <0x1000>;
> + no-map;
> + };
> +
> + secure_ddr: optee@9e800000 {
> + reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
> + alignment = <0x1000>;
> + no-map;
> + };
> + };
> +
> + reg_3v3: regulator-3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "V_3V3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + reg_sd: regulator-sd {
> + /* Output of TPS6521902RSM */
> + compatible = "regulator-gpio";
> + regulator-name = "V_VDDSHV5";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + vin-supply = <®_ldo1>;
> + states = <1800000 0x0>,
> + <3300000 0x1>;
> + /* Controlling GPIO set by base board */
> + status = "disabled";
> + };
> +};
> +
> +&main_i2c0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_i2c0_pins>;
> + clock-frequency = <400000>;
> + bootph-pre-ram;
> + status = "okay";
> +
> + tps65219: pmic@30 {
> + compatible = "ti,tps65219";
> + reg = <0x30>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pmic_irq_pins>;
> + interrupt-parent = <&gic500>;
> + interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-controller;
> + #interrupt-cells = <1>;
> + buck1-supply = <®_3v3>;
> + buck2-supply = <®_3v3>;
> + buck3-supply = <®_3v3>;
> + ldo1-supply = <®_3v3>;
> + ldo2-supply = <®_buck2>;
> + ldo3-supply = <®_3v3>;
> + ldo4-supply = <®_3v3>;
> + system-power-controller;
> + ti,power-button;
> +
> + regulators {
> + reg_buck1: buck1 {
> + regulator-name = "V_VDD_CORE";
> + regulator-min-microvolt = <750000>;
> + regulator-max-microvolt = <750000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + reg_buck2: buck2 {
> + regulator-name = "V_1V8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + reg_buck3: buck3 {
> + regulator-name = "V_1V1";
> + regulator-min-microvolt = <1100000>;
> + regulator-max-microvolt = <1100000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + reg_ldo1: ldo1 {
> + /* Actual voltage of LDO1 is controlled by GPIO, see reg_sd */
> + regulator-name = "V_VDDSHV5_3V3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-allow-bypass;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + reg_ldo2: ldo2 {
> + regulator-name = "V_0V85";
> + regulator-min-microvolt = <850000>;
> + regulator-max-microvolt = <850000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + reg_ldo3: ldo3 {
> + regulator-name = "V_1V8A";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + reg_ldo4: ldo4 {
> + /* Unused */
> + regulator-name = "V_VLDO4";
> + regulator-boot-on;
> + };
> + };
> + };
> +
> + tmp1075: temperature-sensor@4a {
> + compatible = "ti,tmp1075";
> + reg = <0x4a>;
> + vs-supply = <®_buck2>;
> + };
> +
> + eeprom0: eeprom@50 {
> + compatible = "st,24c02", "atmel,24c02";
> + reg = <0x50>;
> + vcc-supply = <®_buck2>;
> + pagesize = <16>;
> + read-only;
> + bootph-pre-ram;
> + };
> +
> + pcf85063: rtc@51 {
> + compatible = "nxp,pcf85063a";
> + reg = <0x51>;
> + quartz-load-femtofarads = <12500>;
> + };
> +
> + eeprom1: eeprom@54 {
> + compatible = "st,24c64", "atmel,24c64";
> + reg = <0x54>;
> + vcc-supply = <®_buck2>;
> + pagesize = <32>;
> + };
> +};
> +
> +&a53_opp_table {
> + opp-1400000000 {
> + opp-hz = /bits/ 64 <1400000000>;
> + opp-supported-hw = <0x01 0x0004>;
> + opp-suspend;
> + clock-latency-ns = <6000000>;
> + /* Enabled by bootloader if supported */
> + status = "disabled";
> + };
> +};
> +
> +&ospi0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&ospi0_pins>;
> + bootph-all;
> + status = "okay";
> +
> + flash@0 {
> + compatible = "jedec,spi-nor";
> + reg = <0x0>;
> + vcc-supply = <®_buck2>;
> + spi-tx-bus-width = <8>;
> + spi-rx-bus-width = <8>;
> + spi-max-frequency = <84000000>;
> + bootph-all;
> + cdns,tshsl-ns = <60>;
> + cdns,tsd2d-ns = <60>;
> + cdns,tchsh-ns = <60>;
> + cdns,tslch-ns = <60>;
> + cdns,read-delay = <2>;
> +
> + partitions {
> + compatible = "fixed-partitions";
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + /* Filled by bootloader */
> + };
> + };
> +};
> +
> +&sdhci0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mmc0_pins>;
> + non-removable;
> + disable-wp;
> + no-sd;
> + no-sdio;
> + bootph-all;
> + ti,driver-strength-ohm = <50>;
> + status = "okay";
> +};
> +
> +&wkup_rtc0 {
> + /*
> + * Erratum i2327: We can't guarantee that the TQMa62xx will boot fast
> + * enough for U-Boot to apply the workaround within one second after
> + * power-on. Keep the RTC disabled to avoid RTC interrupt issues.
> + *
> + * The external RTC of the TQMa62xx should be used instead.
> + *
> + * If needed, the RTC can be enabled in a baseboard DTS, as long as
> + * boot is fast enough on all relevant boot media.
> + */
> + status = "disabled";
> +};
> +
> +&main_pmx0 {
> + main_i2c0_pins: main-i2c0-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x1e0, PIN_INPUT, 0) /* (B16) I2C0_SCL */
> + AM62X_IOPAD(0x1e4, PIN_INPUT, 0) /* (A16) I2C0_SDA */
> + >;
> + bootph-pre-ram;
> + };
> +
> + main_mmc0_pins: main-mmc0-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */
> + AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1) MMC0_CLK */
> + AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */
> + AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (AA1) MMC0_DAT1 */
> + AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (AA3) MMC0_DAT2 */
> + AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (Y4) MMC0_DAT3 */
> + AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (AB2) MMC0_DAT4 */
> + AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (AC1) MMC0_DAT5 */
> + AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (AD2) MMC0_DAT6 */
> + AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (AC2) MMC0_DAT7 */
> + >;
> + bootph-all;
> + };
> +
> + ospi0_pins: ospi0-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x000, PIN_OUTPUT, 0) /* (H24) OSPI0_CLK */
> + AM62X_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F23) OSPI0_CSn0 */
> + AM62X_IOPAD(0x00c, PIN_INPUT, 0) /* (E25) OSPI0_D0 */
> + AM62X_IOPAD(0x010, PIN_INPUT, 0) /* (G24) OSPI0_D1 */
> + AM62X_IOPAD(0x014, PIN_INPUT, 0) /* (F25) OSPI0_D2 */
> + AM62X_IOPAD(0x018, PIN_INPUT, 0) /* (F24) OSPI0_D3 */
> + AM62X_IOPAD(0x01c, PIN_INPUT, 0) /* (J23) OSPI0_D4 */
> + AM62X_IOPAD(0x020, PIN_INPUT, 0) /* (J25) OSPI0_D5 */
> + AM62X_IOPAD(0x024, PIN_INPUT, 0) /* (H25) OSPI0_D6 */
> + AM62X_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
> + AM62X_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
> + AM62X_IOPAD(0x004, PIN_INPUT, 0) /* (G25) OSPI0_LBCLKO */
> + >;
> + };
> +
> + pmic_irq_pins: pmic-irq-pins {
> + pinctrl-single,pins = <
> + AM62X_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (D16) EXTINTn */
> + >;
> + };
> +};
> +
> +#include "k3-am62-ti-ipc-firmware.dtsi"
--
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
https://www.tq-group.com/
Hi Matthias, On 25/11/25 15:32, Matthias Schiffer wrote: > On Mon, 2025-11-10 at 12:49 +0100, Matthias Schiffer wrote: >> The TQMa62xx is a SoM family with a pluggable board connector based on the >> TI AM62x SoCs. Add DTS(I) for the AM625 (2x Cortex-A53) variant and its >> combination with our MBa62xx carrier board. > > Hi Vignesh, > > do you have any further comments? Can we get this in for 6.19? > Oops, this somehow fell through the crack, my apologies! I have already sent out the PRs for v6.19. Sorry, this would need to wait for v6.20 cycle. [...] -- Regards Vignesh https://ti.com/opensource
On Wed, 2025-11-26 at 10:47 +0530, Vignesh Raghavendra wrote: > Hi Matthias, > > On 25/11/25 15:32, Matthias Schiffer wrote: > > On Mon, 2025-11-10 at 12:49 +0100, Matthias Schiffer wrote: > > > The TQMa62xx is a SoM family with a pluggable board connector based on the > > > TI AM62x SoCs. Add DTS(I) for the AM625 (2x Cortex-A53) variant and its > > > combination with our MBa62xx carrier board. > > > > Hi Vignesh, > > > > do you have any further comments? Can we get this in for 6.19? > > > > Oops, this somehow fell through the crack, my apologies! > > I have already sent out the PRs for v6.19. Sorry, this would need to > wait for v6.20 cycle. > > [...] > > Hi Vignesh, will these patches by applied for v6.20 (if there aren't any more review comments)? Should I resend them? Best, Matthias -- TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany Amtsgericht München, HRB 105018 Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider https://www.tq-group.com/
On 10:10-20251217, Matthias Schiffer wrote: > On Wed, 2025-11-26 at 10:47 +0530, Vignesh Raghavendra wrote: > > Hi Matthias, > > > > On 25/11/25 15:32, Matthias Schiffer wrote: > > > On Mon, 2025-11-10 at 12:49 +0100, Matthias Schiffer wrote: > > > > The TQMa62xx is a SoM family with a pluggable board connector based on the > > > > TI AM62x SoCs. Add DTS(I) for the AM625 (2x Cortex-A53) variant and its > > > > combination with our MBa62xx carrier board. > > > > > > Hi Vignesh, > > > > > > do you have any further comments? Can we get this in for 6.19? > > > > > > > Oops, this somehow fell through the crack, my apologies! > > > > I have already sent out the PRs for v6.19. Sorry, this would need to > > wait for v6.20 cycle. > > > > [...] > > > > > > Hi Vignesh, > > will these patches by applied for v6.20 (if there aren't any more review > comments)? Should I resend them? Yes please, Please resend after rebasing to latest next. Vignesh and I switch picking patches, so the v6.20 window, i am picking them up, will be good to repost them so they appear in my private patchworks for me to track. Please note that there are additional checks in place so, will be good to rerun dtbs_check prior to posting. -- Regards, Nishanth Menon Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D https://ti.com/opensource
© 2016 - 2026 Red Hat, Inc.