* [PATCH v6 0/4] Add support for AM62D2 SoC and EVM
@ 2025-07-04 10:09 Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 1/4] arm64: dts: ti: Add bootph property to nodes at source for am62a Paresh Bhagat
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Paresh Bhagat @ 2025-07-04 10:09 UTC (permalink / raw)
To: nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, afd, bb, devarsht, s-vadapalli,
andrew
This patch series adds support for the AM62D SoC and its evaluation
module (EVM) board, enable eMMC and firmware-name update for
AM62D2-EVM board.
The AM62D SoC is a high-performance Digital Signal Processing (DSP)
device with a quad-core Cortex-A53 cluster, dual Cortex-R5F cores,
and a Cx7 DSP core with Matrix Multiplication Accelerator (MMA).
It features a range of peripherals, including multichannel audio
serial ports, Ethernet, UARTs, SPI, I2C, USB, and more.
The EVM board is a low-cost, expandable platform designed for the AM62D2
SoC, having 4GB LPDDR4 RAM, Gigabit Ethernet expansion connectors, audio
jacks, USB ports, and more.
This SoC is part K3 AM62x family, which includes the AM62A and AM62P
variants. While the AM62A and AM62D are largely similar, the AM62D is
specifically targeted for general-purpose DSP applications, whereas the
AM62A focuses on edge AI workloads. A key distinction is that the AM62D
does not include multimedia components such as the video encoder/decoder,
MJPEG encoder, Vision Processing Accelerator (VPAC) for image signal
processing, or the display subsystem. Additionally, the AM62D has a
different pin configuration compared to the AM62A, which impacts embedded
software development.
This patch series includes updates to the dts and dtsi files, device tree
bindings, and pin control header files to support the AM62D SoC and EVM
board.
Bootlog-
SD Card
https://gist.github.com/paresh-bhagat12/1757cc54a39f1baf883341af2a383db6
eMMC
https://gist.github.com/paresh-bhagat12/36c756422ff71fa9568c45e9b44332f0
Tech Ref Manual-https://www.ti.com/lit/pdf/sprujd4
Schematics Link-https://www.ti.com/lit/zip/sprcal5
Change Log:
V5 -> V6:
- Deleted vpu and codec node instead of disable.
- Enabled heartbeat LED.
- Removed bootph-all property from parent nodes.
- Misc dts changes/correction as suggested.
V4 -> V5:
- Added bootph-all property only in leaf node.
- Added a new dtsi file for am62d2 SOC.
- Updated commit msg and description for dt bindings patch.
- Updated cpsw_port node for rx internal delays. This change also
depends on this series for functionality (networking)
https://lore.kernel.org/r/cover.1750756583.git.matthias.schiffer@ew.tq-group.com/
- Updated device tree to follow ordering of properties and
schematic.
https://www.kernel.org/doc/html/latest/devicetree/bindings/dts-coding-style.html#order-of-properties-in-device-node
V3 -> V4:
- Added bootph-all property at source nodes.
- Reuse dtsi files of am62a (instead of common files).
- Added eMMC support.
- Updated firmware name for am62d.
V2 -> V3:
- Added bootph-all property to essential device nodes.
- Updated reserved memory for ATF.
- Introduce common dtsi files for AM62A and AM62D.
V1 -> V2: Fixed indentation and build errors.
Paresh Bhagat (4):
arm64: dts: ti: Add bootph property to nodes at source for am62a
dt-bindings: arm: ti: Add AM62D2 SoC and Boards
arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs
arm64: dts: ti: Add support for AM62D2-EVM
.../devicetree/bindings/arm/ti/k3.yaml | 6 +
arch/arm64/boot/dts/ti/Makefile | 3 +
arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 13 +
arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi | 2 +
arch/arm64/boot/dts/ti/k3-am62d2-evm.dts | 617 ++++++++++++++++++
arch/arm64/boot/dts/ti/k3-am62d2.dtsi | 20 +
arch/arm64/boot/dts/ti/k3-pinctrl.h | 3 +
7 files changed, 664 insertions(+)
create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2.dtsi
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v6 1/4] arm64: dts: ti: Add bootph property to nodes at source for am62a
2025-07-04 10:09 [PATCH v6 0/4] Add support for AM62D2 SoC and EVM Paresh Bhagat
@ 2025-07-04 10:09 ` Paresh Bhagat
2025-07-07 16:35 ` Bryan Brattlof
2025-07-04 10:09 ` [PATCH v6 2/4] dt-bindings: arm: ti: Add AM62D2 SoC and Boards Paresh Bhagat
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Paresh Bhagat @ 2025-07-04 10:09 UTC (permalink / raw)
To: nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, afd, bb, devarsht, s-vadapalli,
andrew
Add bootph property directly into the original definitions of relevant
nodes (e.g., power domains, USB controllers, and other peripherals)
within their respective DTSI files (ex. main, mcu, and wakeup) for
am62a.
By defining bootph in the nodes source definitions instead of appending
it later in final DTS files, this change ensures that the property is
inherently present wherever the nodes are reused across derived device
trees.
Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 13 +++++++++++++
arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi | 2 ++
2 files changed, 15 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
index 63e097ddf988..44e7e459f176 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
@@ -51,6 +51,7 @@ phy_gmii_sel: phy@4044 {
compatible = "ti,am654-phy-gmii-sel";
reg = <0x4044 0x8>;
#phy-cells = <1>;
+ bootph-all;
};
epwm_tbclk: clock-controller@4130 {
@@ -96,6 +97,7 @@ secure_proxy_main: mailbox@4d000000 {
#mbox-cells = <1>;
interrupt-names = "rx_012";
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+ bootph-all;
};
inta_main_dmss: interrupt-controller@48000000 {
@@ -131,6 +133,7 @@ main_bcdma: dma-controller@485c0100 {
ti,sci-rm-range-bchan = <0x20>; /* BLOCK_COPY_CHAN */
ti,sci-rm-range-rchan = <0x21>; /* SPLIT_TR_RX_CHAN */
ti,sci-rm-range-tchan = <0x22>; /* SPLIT_TR_TX_CHAN */
+ bootph-all;
};
main_pktdma: dma-controller@485c0000 {
@@ -147,6 +150,8 @@ main_pktdma: dma-controller@485c0000 {
"ring", "tchan", "rchan", "rflow";
msi-parent = <&inta_main_dmss>;
#dma-cells = <2>;
+ bootph-all;
+
ti,sci = <&dmsc>;
ti,sci-dev-id = <30>;
ti,sci-rm-range-tchan = <0x23>, /* UNMAPPED_TX_CHAN */
@@ -220,16 +225,19 @@ dmsc: system-controller@44043000 {
k3_pds: power-controller {
compatible = "ti,sci-pm-domain";
#power-domain-cells = <2>;
+ bootph-all;
};
k3_clks: clock-controller {
compatible = "ti,k2g-sci-clk";
#clock-cells = <2>;
+ bootph-all;
};
k3_reset: reset-controller {
compatible = "ti,sci-reset";
#reset-cells = <2>;
+ bootph-all;
};
};
@@ -254,6 +262,7 @@ secure_proxy_sa3: mailbox@43600000 {
* firmware on non-MPU processors
*/
status = "disabled";
+ bootph-all;
};
main_pmx0: pinctrl@f4000 {
@@ -282,6 +291,7 @@ main_timer0: timer@2400000 {
assigned-clock-parents = <&k3_clks 36 3>;
power-domains = <&k3_pds 36 TI_SCI_PD_EXCLUSIVE>;
ti,timer-pwm;
+ bootph-all;
};
main_timer1: timer@2410000 {
@@ -651,6 +661,7 @@ usb0: usb@31000000 {
interrupt-names = "host", "peripheral";
maximum-speed = "high-speed";
dr_mode = "otg";
+ bootph-all;
snps,usb2-gadget-lpm-disable;
snps,usb2-lpm-disable;
};
@@ -745,6 +756,7 @@ cpsw_port1: port@1 {
phys = <&phy_gmii_sel 1>;
mac-address = [00 00 00 00 00 00];
ti,syscon-efuse = <&cpsw_mac_syscon 0x0>;
+ bootph-all;
};
cpsw_port2: port@2 {
@@ -764,6 +776,7 @@ cpsw3g_mdio: mdio@f00 {
clocks = <&k3_clks 13 0>;
clock-names = "fck";
bus_freq = <1000000>;
+ bootph-all;
};
cpts@3d000 {
diff --git a/arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi
index 259ae6ebbfb5..9ef1c829a9df 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi
@@ -17,6 +17,7 @@ wkup_conf: bus@43000000 {
chipid: chipid@14 {
compatible = "ti,am654-chipid";
reg = <0x14 0x4>;
+ bootph-all;
};
opp_efuse_table: syscon@18 {
@@ -67,6 +68,7 @@ wkup_uart0: serial@0 {
reg = <0 0x100>;
interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
+ bootph-pre-ram;
};
};
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v6 2/4] dt-bindings: arm: ti: Add AM62D2 SoC and Boards
2025-07-04 10:09 [PATCH v6 0/4] Add support for AM62D2 SoC and EVM Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 1/4] arm64: dts: ti: Add bootph property to nodes at source for am62a Paresh Bhagat
@ 2025-07-04 10:09 ` Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 3/4] arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM Paresh Bhagat
3 siblings, 0 replies; 10+ messages in thread
From: Paresh Bhagat @ 2025-07-04 10:09 UTC (permalink / raw)
To: nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, afd, bb, devarsht, s-vadapalli,
andrew
The AM62D2 SoC, part of the K3 architecture, is built for high-performance
DSP tasks in automotive audio, pro audio, radar, sonar, and medical
imaging. It features up to four Cortex-A53 cores (1.4GHz), two Cortex-R5F
cores, and a C7x DSP with 2 TOPS MMA. Key interfaces include multi-channel
McASP audio, TSN-capable Gigabit Ethernet, and a range of peripherals
(UART, SPI, I2C, CAN, USB, eMMC/SD, OSPI, CSI). It supports LPDDR4/DDR4,
secure boot with hardware security, and low-power modes with
CAN/GPIO/UART wakeup.
This SoC is of part K3 AM62x family, which includes the AM62A and AM62P
variants. A key distinction is that the AM62D does not include multimedia
components such as the video encoder/decoder, MJPEG encoder, Vision
Processing Accelerator (VPAC) for image signal processing, or the display
subsystem. Additionally, the AM62D has a different pin configuration
compared to the AM62A, which impacts embedded software development.
This adds dt bindings for TI's AM62D2 family of devices.
More details about the SoCs can be found in the Technical Reference Manual:
https://www.ti.com/lit/pdf/sprujd4
Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
---
Documentation/devicetree/bindings/arm/ti/k3.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/ti/k3.yaml b/Documentation/devicetree/bindings/arm/ti/k3.yaml
index bf6003d8fb76..e80c653fa438 100644
--- a/Documentation/devicetree/bindings/arm/ti/k3.yaml
+++ b/Documentation/devicetree/bindings/arm/ti/k3.yaml
@@ -25,6 +25,12 @@ properties:
- ti,am62a7-sk
- const: ti,am62a7
+ - description: K3 AM62D2 SoC and Boards
+ items:
+ - enum:
+ - ti,am62d2-evm
+ - const: ti,am62d2
+
- description: K3 AM62A7 SoC PHYTEC phyBOARD-Lyra
items:
- const: phytec,am62a7-phyboard-lyra-rdk
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v6 3/4] arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs
2025-07-04 10:09 [PATCH v6 0/4] Add support for AM62D2 SoC and EVM Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 1/4] arm64: dts: ti: Add bootph property to nodes at source for am62a Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 2/4] dt-bindings: arm: ti: Add AM62D2 SoC and Boards Paresh Bhagat
@ 2025-07-04 10:09 ` Paresh Bhagat
2025-07-08 6:13 ` Devarsh Thakkar
2025-07-04 10:09 ` [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM Paresh Bhagat
3 siblings, 1 reply; 10+ messages in thread
From: Paresh Bhagat @ 2025-07-04 10:09 UTC (permalink / raw)
To: nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, afd, bb, devarsht, s-vadapalli,
andrew
Update k3-pinctrl file to include pin definitions for AM62D2 family of
SoCs.
Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
---
arch/arm64/boot/dts/ti/k3-pinctrl.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-pinctrl.h b/arch/arm64/boot/dts/ti/k3-pinctrl.h
index cac7cccc1112..0cf57179c974 100644
--- a/arch/arm64/boot/dts/ti/k3-pinctrl.h
+++ b/arch/arm64/boot/dts/ti/k3-pinctrl.h
@@ -63,6 +63,9 @@
#define AM62AX_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
#define AM62AX_MCU_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM62DX_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM62DX_MCU_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
+
#define AM62PX_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
#define AM62PX_MCU_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM
2025-07-04 10:09 [PATCH v6 0/4] Add support for AM62D2 SoC and EVM Paresh Bhagat
` (2 preceding siblings ...)
2025-07-04 10:09 ` [PATCH v6 3/4] arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs Paresh Bhagat
@ 2025-07-04 10:09 ` Paresh Bhagat
2025-07-07 16:05 ` Andrew Davis
2025-07-07 16:37 ` Bryan Brattlof
3 siblings, 2 replies; 10+ messages in thread
From: Paresh Bhagat @ 2025-07-04 10:09 UTC (permalink / raw)
To: nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, afd, bb, devarsht, s-vadapalli,
andrew
AM62D-EVM evaluation module (EVM) is a low-cost expandable platform board
designed for AM62D2 SoC from TI. It supports the following interfaces:
* 4 GB LPDDR4 RAM
* x2 Gigabit Ethernet expansion connectors
* x4 3.5mm TRS Audio Jack Line In
* x4 3.5mm TRS Audio Jack Line Out
* x2 Audio expansion connectors
* x1 Type-A USB 2.0, x1 Type-C dual-role device (DRD) USB 2.0
* x1 UHS-1 capable micro SD card slot
* 32 GB eMMC Flash
* 512 Mb OSPI NOR flash
* x4 UARTs via USB 2.0-B
* XDS110 for onboard JTAG debug using USB
* Temperature sensors, user push buttons and LEDs
Although AM62D2 and AM62A7 differ in peripheral capabilities example
multimedia, VPAC, and display subsystems, the core architecture remains
same. To reduce duplication, AM62D support reuses the AM62A dtsi and the
necessary overrides will be handled in SOC specific dtsi file and a
board specific dts.
Add basic support for AM62D2-EVM.
Schematics Link - https://www.ti.com/lit/zip/sprcal5
Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
---
arch/arm64/boot/dts/ti/Makefile | 3 +
arch/arm64/boot/dts/ti/k3-am62d2-evm.dts | 617 +++++++++++++++++++++++
arch/arm64/boot/dts/ti/k3-am62d2.dtsi | 20 +
3 files changed, 640 insertions(+)
create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2.dtsi
diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index c6171de9fe88..3da3a1d1dc33 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -33,6 +33,9 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62-pocketbeagle2.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am62a7-sk.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am62a7-phyboard-lyra-rdk.dtb
+# Boards with AM62Dx SoC
+dtb-$(CONFIG_ARCH_K3) += k3-am62d2-evm.dtb
+
# Boards with AM62Px SoC
dtb-$(CONFIG_ARCH_K3) += k3-am62p5-sk.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am62p5-verdin-nonwifi-dahlia.dtb
diff --git a/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts b/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
new file mode 100644
index 000000000000..715a407bddd8
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
@@ -0,0 +1,617 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * AM62D2 EVM: https://www.ti.com/lit/zip/sprcal5
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include "k3-am62d2.dtsi"
+
+/ {
+ compatible = "ti,am62d2-evm", "ti,am62d2";
+ model = "Texas Instruments AM62D2 EVM";
+
+ aliases {
+ serial0 = &wkup_uart0;
+ serial1 = &mcu_uart0;
+ serial2 = &main_uart0;
+ mmc0 = &sdhci0;
+ mmc1 = &sdhci1;
+ rtc0 = &wkup_rtc0;
+ ethernet0 = &cpsw_port1;
+ ethernet1 = &cpsw_port2;
+ };
+
+ chosen {
+ stdout-path = &main_uart0;
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ /* 4G RAM */
+ reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
+ <0x00000008 0x80000000 0x00000000 0x80000000>;
+ bootph-all;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ /* global cma region */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x00 0x2000000>;
+ alloc-ranges = <0x00 0xc0000000 0x00 0x2000000>;
+ linux,cma-default;
+ };
+
+ secure_tfa_ddr: tfa@80000000 {
+ reg = <0x00 0x80000000 0x00 0x80000>;
+ alignment = <0x1000>;
+ no-map;
+ };
+
+ c7x_0_dma_memory_region: c7x-dma-memory@99800000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x99800000 0x00 0x100000>;
+ no-map;
+ };
+
+ c7x_0_memory_region: c7x-memory@99900000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x99900000 0x00 0xf00000>;
+ no-map;
+ };
+
+ mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@9b800000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x9b800000 0x00 0x100000>;
+ no-map;
+ };
+
+ mcu_r5fss0_core0_memory_region: r5f-dma-memory@9b900000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x9b900000 0x00 0xf00000>;
+ no-map;
+ };
+
+ wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x9c800000 0x00 0x100000>;
+ no-map;
+ };
+
+ wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0x9c900000 0x00 0xf00000>;
+ no-map;
+ bootph-pre-ram;
+ };
+
+ secure_ddr: optee@9e800000 {
+ reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
+ alignment = <0x1000>;
+ no-map;
+ };
+
+ rtos_ipc_memory_region: ipc-memories@a0000000 {
+ compatible = "shared-dma-pool";
+ reg = <0x00 0xa0000000 0x00 0x01000000>;
+ no-map;
+ };
+ };
+
+ opp-table {
+ /* Requires VDD_CORE at 0v85 */
+ opp-1400000000 {
+ opp-hz = /bits/ 64 <1400000000>;
+ opp-supported-hw = <0x01 0x0004>;
+ clock-latency-ns = <6000000>;
+ };
+ };
+
+ vout_pd: regulator-0 {
+ /* TPS65988 PD CONTROLLER OUTPUT */
+ compatible = "regulator-fixed";
+ regulator-name = "vout_pd";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-always-on;
+ regulator-boot-on;
+ bootph-all;
+ };
+
+ vmain_pd: regulator-1 {
+ /* Output of TPS22811 */
+ compatible = "regulator-fixed";
+ regulator-name = "vmain_pd";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vout_pd>;
+ regulator-always-on;
+ regulator-boot-on;
+ bootph-all;
+ };
+
+ vcc_5v0: regulator-2 {
+ /* Output of TPS630702RNMR */
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_5v0";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vmain_pd>;
+ regulator-always-on;
+ regulator-boot-on;
+ bootph-all;
+ };
+
+ vcc_3v3_main: regulator-3 {
+ /* output of LM5141-Q1 */
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_3v3_main";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vmain_pd>;
+ regulator-always-on;
+ regulator-boot-on;
+ bootph-all;
+ };
+
+ vdd_mmc1: regulator-4 {
+ /* TPS22918DBVR */
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_mmc1";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ enable-active-high;
+ gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
+ bootph-all;
+ };
+
+ vcc_3v3_sys: regulator-5 {
+ /* output of TPS222965DSGT */
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_3v3_sys";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vcc_3v3_main>;
+ regulator-always-on;
+ regulator-boot-on;
+ bootph-all;
+ };
+
+ vddshv_sdio: regulator-6 {
+ compatible = "regulator-gpio";
+ regulator-name = "vddshv_sdio";
+ pinctrl-names = "default";
+ pinctrl-0 = <&vddshv_sdio_pins_default>;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ gpios = <&main_gpio1 31 GPIO_ACTIVE_HIGH>;
+ states = <1800000 0x0>,
+ <3300000 0x1>;
+ bootph-all;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&usr_led_pins_default>;
+
+ led-0 {
+ label = "am62d-evm:green:heartbeat";
+ gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "heartbeat";
+ function = LED_FUNCTION_HEARTBEAT;
+ default-state = "off";
+ };
+ };
+};
+
+&mcu_pmx0 {
+ status = "okay";
+
+ pmic_irq_pins_default: pmic-irq-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_MCU_IOPAD(0x000, PIN_INPUT, 7) /* (E11) MCU_GPIO0_0 */
+ >;
+ };
+
+ wkup_uart0_pins_default: wkup-uart0-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_MCU_IOPAD(0x0024, PIN_INPUT, 0) /* (C9) WKUP_UART0_RXD */
+ AM62DX_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (E9) WKUP_UART0_TXD */
+ AM62DX_MCU_IOPAD(0x002c, PIN_INPUT, 0) /* (C10) WKUP_UART0_CTSn */
+ AM62DX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8) WKUP_UART0_RTSn */
+ >;
+ bootph-all;
+ };
+};
+
+/* WKUP UART0 is used for DM firmware logs */
+&wkup_uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&wkup_uart0_pins_default>;
+ bootph-all;
+ status = "reserved";
+};
+
+&main_pmx0 {
+ main_uart0_pins_default: main-uart0-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x01c8, PIN_INPUT, 0) /* (E14) UART0_RXD */
+ AM62DX_IOPAD(0x01cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
+ >;
+ bootph-all;
+ };
+
+ main_i2c0_pins_default: main-i2c0-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D17) I2C0_SCL */
+ AM62DX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (E16) I2C0_SDA */
+ >;
+ bootph-all;
+ };
+
+ main_i2c1_pins_default: main-i2c1-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C17) I2C1_SCL */
+ AM62DX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (E17) I2C1_SDA */
+ >;
+ bootph-all;
+ };
+
+ main_i2c2_pins_default: main-i2c2-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (M22) GPMC0_CSn2.I2C2_SCL */
+ AM62DX_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (M20) GPMC0_CSn3.I2C2_SDA */
+ >;
+ };
+
+ main_mmc0_pins_default: main-mmc0-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x0220, PIN_INPUT_PULLUP, 0) /* (Y6) MMC0_CMD */
+ AM62DX_IOPAD(0x0218, PIN_OUTPUT, 0) /* (AB7) MMC0_CLK */
+ AM62DX_IOPAD(0x0214, PIN_INPUT_PULLUP, 0) /* (AA6) MMC0_DAT0 */
+ AM62DX_IOPAD(0x0210, PIN_INPUT_PULLUP, 0) /* (AB6) MMC0_DAT1 */
+ AM62DX_IOPAD(0x020c, PIN_INPUT_PULLUP, 0) /* (Y7) MMC0_DAT2 */
+ AM62DX_IOPAD(0x0208, PIN_INPUT_PULLUP, 0) /* (AA7) MMC0_DAT3 */
+ AM62DX_IOPAD(0x0204, PIN_INPUT_PULLUP, 0) /* (Y8) MMC0_DAT4 */
+ AM62DX_IOPAD(0x0200, PIN_INPUT_PULLUP, 0) /* (W7) MMC0_DAT5 */
+ AM62DX_IOPAD(0x01fc, PIN_INPUT_PULLUP, 0) /* (W9) MMC0_DAT6 */
+ AM62DX_IOPAD(0x01f8, PIN_INPUT_PULLUP, 0) /* (AB8) MMC0_DAT7 */
+ >;
+ bootph-all;
+ };
+
+ main_mmc1_pins_default: main-mmc1-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x023c, PIN_INPUT, 0) /* (C21) MMC1_CMD */
+ AM62DX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (E22) MMC1_CLK */
+ AM62DX_IOPAD(0x0230, PIN_INPUT, 0) /* (B22) MMC1_DAT0 */
+ AM62DX_IOPAD(0x022c, PIN_INPUT, 0) /* (D21) MMC1_DAT1 */
+ AM62DX_IOPAD(0x0228, PIN_INPUT, 0) /* (C22) MMC1_DAT2 */
+ AM62DX_IOPAD(0x0224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
+ AM62DX_IOPAD(0x0240, PIN_INPUT, 0) /* (E18) MMC1_SDCD */
+ >;
+ bootph-all;
+ };
+
+ main_mdio0_pins_default: main-mdio0-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
+ AM62DX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
+ >;
+ bootph-all;
+ };
+
+ main_rgmii1_pins_default: main-rgmii1-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */
+ AM62DX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */
+ AM62DX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */
+ AM62DX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */
+ AM62DX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */
+ AM62DX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15) RGMII1_RX_CTL */
+ AM62DX_IOPAD(0x134, PIN_INPUT, 0) /* (Y17) RGMII1_TD0 */
+ AM62DX_IOPAD(0x138, PIN_INPUT, 0) /* (V16) RGMII1_TD1 */
+ AM62DX_IOPAD(0x13c, PIN_INPUT, 0) /* (Y16) RGMII1_TD2 */
+ AM62DX_IOPAD(0x140, PIN_INPUT, 0) /* (AA17) RGMII1_TD3 */
+ AM62DX_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AB17) RGMII1_TXC */
+ AM62DX_IOPAD(0x012c, PIN_OUTPUT, 0) /* (W16) RGMII1_TX_CTL */
+ >;
+ bootph-all;
+ };
+
+ main_rgmii2_pins_default: main-rgmii2-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x0184, PIN_INPUT, 0) /* (AA21) RGMII2_RD0 */
+ AM62DX_IOPAD(0x0188, PIN_INPUT, 0) /* (Y20) RGMII2_RD1 */
+ AM62DX_IOPAD(0x018c, PIN_INPUT, 0) /* (AB21) RGMII2_RD2 */
+ AM62DX_IOPAD(0x0190, PIN_INPUT, 0) /* (AB20) RGMII2_RD3 */
+ AM62DX_IOPAD(0x0180, PIN_INPUT, 0) /* (AA20) RGMII2_RXC */
+ AM62DX_IOPAD(0x017c, PIN_INPUT, 0) /* (W18) RGMII2_RX_CTL */
+ AM62DX_IOPAD(0x016c, PIN_INPUT, 0) /* (AA19) RGMII2_TD0 */
+ AM62DX_IOPAD(0x0170, PIN_INPUT, 0) /* (Y18) RGMII2_TD1 */
+ AM62DX_IOPAD(0x0174, PIN_INPUT, 0) /* (AA18) RGMII2_TD2 */
+ AM62DX_IOPAD(0x0178, PIN_INPUT, 0) /* (W17) RGMII2_TD3 */
+ AM62DX_IOPAD(0x0168, PIN_OUTPUT, 0) /* (AB19) RGMII2_TXC */
+ AM62DX_IOPAD(0x0164, PIN_OUTPUT, 0) /* (Y19) RGMII2_TX_CTL */
+ >;
+ bootph-all;
+ };
+
+ main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x01d4, PIN_INPUT, 7) /* (C15) UART0_RTSn.GPIO1_23 */
+ >;
+ };
+
+ vddshv_sdio_pins_default: vddshv-sdio-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x1f4, PIN_OUTPUT, 7) /* (M19) GPMC0_CLK.GPIO1_31 */
+ >;
+ bootph-all;
+ };
+
+ usr_led_pins_default: usr-led-default-pins {
+ pinctrl-single,pins = <
+ AM62DX_IOPAD(0x0244, PIN_INPUT, 7) /* (D18) MMC1_SDWP.GPIO1_49 */
+ >;
+ };
+};
+
+&mcu_gpio0 {
+ status = "okay";
+};
+
+&main_i2c0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_i2c0_pins_default>;
+ clock-frequency = <400000>;
+ bootph-all;
+ status = "okay";
+
+ typec_pd0: usb-power-controller@3f {
+ compatible = "ti,tps6598x";
+ reg = <0x3f>;
+
+ connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ self-powered;
+ data-role = "dual";
+ power-role = "sink";
+ port {
+ usb_con_hs: endpoint {
+ remote-endpoint = <&usb0_hs_ep>;
+ };
+ };
+ };
+ };
+
+ exp1: gpio@22 {
+ compatible = "ti,tca6424";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-parent = <&main_gpio1>;
+ interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
+ bootph-all;
+
+ gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
+ "","MMC1_SD_EN",
+ "VPP_EN", "GPIO_DIX_RST",
+ "IO_EXP_OPT_EN", "DIX_INT",
+ "GPIO_eMMC_RSTn", "CPLD2_DONE",
+ "CPLD2_INTN", "CPLD1_DONE",
+ "CPLD1_INTN", "USB_TYPEA_OC_INDICATION",
+ "PCM1_INT", "PCM2_INT",
+ "GPIO_PCM1_RST", "TEST_GPIO2",
+ "GPIO_PCM2_RST", "",
+ "IO_MCAN0_STB", "IO_MCAN1_STB",
+ "PD_I2C_IRQ", "IO_EXP_TEST_LED";
+ };
+
+ exp2: gpio@20 {
+ compatible = "ti,tca6416";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names = "PCM6240_BUF_IO_EN", "",
+ "CPLD1_JTAGENB", "CPLD1_PROGRAMN",
+ "CPLD2_JTAGENB", "CPLD2_PROGRAMN",
+ "", "",
+ "", "CPLD1_TCK",
+ "CPLD1_TMS", "CPLD1_TDI",
+ "CPLD1_TDO", "CPLD2_TCK",
+ "CPLD2_TMS", "CPLD2_TDI",
+ "CPLD2_TDO", "ADDR1_IO_EXP",
+ "SoC_I2C0_SCL", "SoC_I2C0_SDA";
+ };
+};
+
+&main_i2c1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_i2c1_pins_default>;
+ clock-frequency = <100000>;
+ status = "okay";
+};
+
+&main_i2c2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_i2c2_pins_default>;
+ clock-frequency = <400000>;
+ status = "okay";
+};
+
+&sdhci0 {
+ /* eMMC */
+ non-removable;
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mmc0_pins_default>;
+ bootph-all;
+ status = "okay";
+};
+
+&sdhci1 {
+ /* SD/MMC */
+ vmmc-supply = <&vdd_mmc1>;
+ vqmmc-supply = <&vddshv_sdio>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mmc1_pins_default>;
+ disable-wp;
+ bootph-all;
+ status = "okay";
+};
+
+&main_gpio0 {
+ bootph-all;
+ status = "okay";
+};
+
+&main_gpio1 {
+ bootph-all;
+ status = "okay";
+};
+
+&main_gpio_intr {
+ status = "okay";
+};
+
+&main_uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_uart0_pins_default>;
+ bootph-all;
+ status = "okay";
+};
+
+&usb0 {
+ usb-role-switch;
+
+ port {
+ usb0_hs_ep: endpoint {
+ remote-endpoint = <&usb_con_hs>;
+ };
+ };
+};
+
+&cpsw3g {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_rgmii1_pins_default>,
+ <&main_rgmii2_pins_default>;
+ status = "okay";
+
+ cpts@3d000 {
+ /* MAP HW3_TS_PUSH to GENF1 */
+ ti,pps = <2 1>;
+ };
+};
+
+&cpsw_port1 {
+ phy-mode = "rgmii-id";
+ phy-handle = <&cpsw3g_phy0>;
+ status = "okay";
+};
+
+&cpsw_port2 {
+ phy-mode = "rgmii-id";
+ phy-handle = <&cpsw3g_phy1>;
+ status = "okay";
+};
+
+&cpsw3g_mdio {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mdio0_pins_default>;
+ status = "okay";
+
+ cpsw3g_phy0: ethernet-phy@0 {
+ reg = <0>;
+ ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+ ti,min-output-impedance;
+ };
+
+ cpsw3g_phy1: ethernet-phy@3 {
+ reg = <3>;
+ ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+ ti,min-output-impedance;
+ };
+};
+
+&mailbox0_cluster0 {
+ status = "okay";
+
+ mbox_r5_0: mbox-r5-0 {
+ ti,mbox-rx = <0 0 0>;
+ ti,mbox-tx = <1 0 0>;
+ };
+};
+
+&mailbox0_cluster1 {
+ status = "okay";
+
+ mbox_c7x_0: mbox-c7x-0 {
+ ti,mbox-rx = <0 0 0>;
+ ti,mbox-tx = <1 0 0>;
+ };
+};
+
+&mailbox0_cluster2 {
+ status = "okay";
+
+ mbox_mcu_r5_0: mbox-mcu-r5-0 {
+ ti,mbox-rx = <0 0 0>;
+ ti,mbox-tx = <1 0 0>;
+ };
+};
+
+&wkup_r5fss0 {
+ status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+ mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
+ memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+ <&wkup_r5fss0_core0_memory_region>;
+ bootph-pre-ram;
+};
+
+&mcu_r5fss0 {
+ status = "okay";
+};
+
+&mcu_r5fss0_core0 {
+ mboxes = <&mailbox0_cluster2 &mbox_mcu_r5_0>;
+ memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+ <&mcu_r5fss0_core0_memory_region>;
+ firmware-name = "am62d-mcu-r5f0_0-fw";
+ status = "okay";
+};
+
+&c7x_0 {
+ mboxes = <&mailbox0_cluster1 &mbox_c7x_0>;
+ memory-region = <&c7x_0_dma_memory_region>,
+ <&c7x_0_memory_region>;
+ firmware-name = "am62d-c71_0-fw";
+ status = "okay";
+};
+
+/* main_rti4 is used by C7x DSP */
+&main_rti4 {
+ status = "reserved";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am62d2.dtsi b/arch/arm64/boot/dts/ti/k3-am62d2.dtsi
new file mode 100644
index 000000000000..1095515d3780
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am62d2.dtsi
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Device Tree Source for AM62D2 SoC family in Quad core configuration
+ *
+ * TRM: https://www.ti.com/lit/pdf/sprujd4
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+
+#include "k3-am62a7.dtsi"
+
+/ {
+ model = "Texas Instruments K3 AM62D SoC";
+ compatible = "ti,am62d2";
+};
+
+/delete-node/ &vpu; /* Delete video codec node */
+/delete-node/ &e5010; /* Delete jpeg encoder node */
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM
2025-07-04 10:09 ` [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM Paresh Bhagat
@ 2025-07-07 16:05 ` Andrew Davis
2025-07-08 8:43 ` Paresh Bhagat
2025-07-07 16:37 ` Bryan Brattlof
1 sibling, 1 reply; 10+ messages in thread
From: Andrew Davis @ 2025-07-07 16:05 UTC (permalink / raw)
To: Paresh Bhagat, nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, bb, devarsht, s-vadapalli,
andrew
On 7/4/25 5:09 AM, Paresh Bhagat wrote:
> AM62D-EVM evaluation module (EVM) is a low-cost expandable platform board
> designed for AM62D2 SoC from TI. It supports the following interfaces:
>
> * 4 GB LPDDR4 RAM
> * x2 Gigabit Ethernet expansion connectors
> * x4 3.5mm TRS Audio Jack Line In
> * x4 3.5mm TRS Audio Jack Line Out
> * x2 Audio expansion connectors
> * x1 Type-A USB 2.0, x1 Type-C dual-role device (DRD) USB 2.0
> * x1 UHS-1 capable micro SD card slot
> * 32 GB eMMC Flash
> * 512 Mb OSPI NOR flash
> * x4 UARTs via USB 2.0-B
> * XDS110 for onboard JTAG debug using USB
> * Temperature sensors, user push buttons and LEDs
>
> Although AM62D2 and AM62A7 differ in peripheral capabilities example
> multimedia, VPAC, and display subsystems, the core architecture remains
> same. To reduce duplication, AM62D support reuses the AM62A dtsi and the
> necessary overrides will be handled in SOC specific dtsi file and a
> board specific dts.
>
> Add basic support for AM62D2-EVM.
>
> Schematics Link - https://www.ti.com/lit/zip/sprcal5
>
> Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
> Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
> ---
> arch/arm64/boot/dts/ti/Makefile | 3 +
> arch/arm64/boot/dts/ti/k3-am62d2-evm.dts | 617 +++++++++++++++++++++++
> arch/arm64/boot/dts/ti/k3-am62d2.dtsi | 20 +
> 3 files changed, 640 insertions(+)
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2.dtsi
>
> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
> index c6171de9fe88..3da3a1d1dc33 100644
> --- a/arch/arm64/boot/dts/ti/Makefile
> +++ b/arch/arm64/boot/dts/ti/Makefile
> @@ -33,6 +33,9 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62-pocketbeagle2.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am62a7-sk.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am62a7-phyboard-lyra-rdk.dtb
>
> +# Boards with AM62Dx SoC
> +dtb-$(CONFIG_ARCH_K3) += k3-am62d2-evm.dtb
> +
> # Boards with AM62Px SoC
> dtb-$(CONFIG_ARCH_K3) += k3-am62p5-sk.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am62p5-verdin-nonwifi-dahlia.dtb
> diff --git a/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts b/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
> new file mode 100644
> index 000000000000..715a407bddd8
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
> @@ -0,0 +1,617 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*
> + * AM62D2 EVM: https://www.ti.com/lit/zip/sprcal5
> + *
> + * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/net/ti-dp83867.h>
> +#include "k3-am62d2.dtsi"
> +
> +/ {
> + compatible = "ti,am62d2-evm", "ti,am62d2";
> + model = "Texas Instruments AM62D2 EVM";
> +
> + aliases {
> + serial0 = &wkup_uart0;
> + serial1 = &mcu_uart0;
> + serial2 = &main_uart0;
> + mmc0 = &sdhci0;
> + mmc1 = &sdhci1;
> + rtc0 = &wkup_rtc0;
> + ethernet0 = &cpsw_port1;
> + ethernet1 = &cpsw_port2;
> + };
> +
> + chosen {
> + stdout-path = &main_uart0;
> + };
> +
> + memory@80000000 {
> + device_type = "memory";
> + /* 4G RAM */
> + reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
> + <0x00000008 0x80000000 0x00000000 0x80000000>;
> + bootph-all;
> + };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + /* global cma region */
> + linux,cma {
> + compatible = "shared-dma-pool";
> + reusable;
> + size = <0x00 0x2000000>;
> + alloc-ranges = <0x00 0xc0000000 0x00 0x2000000>;
> + linux,cma-default;
> + };
> +
> + secure_tfa_ddr: tfa@80000000 {
> + reg = <0x00 0x80000000 0x00 0x80000>;
> + alignment = <0x1000>;
"alignment" doesn't matter for "no-map" regions, Linux cannot allocate
from these in the first place. Same for "secure_ddr" region below.
> + no-map;
> + };
> +
> + c7x_0_dma_memory_region: c7x-dma-memory@99800000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x99800000 0x00 0x100000>;
> + no-map;
> + };
> +
> + c7x_0_memory_region: c7x-memory@99900000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x99900000 0x00 0xf00000>;
> + no-map;
> + };
> +
> + mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@9b800000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x9b800000 0x00 0x100000>;
> + no-map;
> + };
> +
> + mcu_r5fss0_core0_memory_region: r5f-dma-memory@9b900000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x9b900000 0x00 0xf00000>;
> + no-map;
> + };
> +
> + wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x9c800000 0x00 0x100000>;
> + no-map;
> + };
> +
> + wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0x9c900000 0x00 0xf00000>;
> + no-map;
> + bootph-pre-ram;
> + };
> +
> + secure_ddr: optee@9e800000 {
> + reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
> + alignment = <0x1000>;
> + no-map;
> + };
> +
> + rtos_ipc_memory_region: ipc-memories@a0000000 {
> + compatible = "shared-dma-pool";
> + reg = <0x00 0xa0000000 0x00 0x01000000>;
> + no-map;
> + };
> + };
> +
> + opp-table {
> + /* Requires VDD_CORE at 0v85 */
> + opp-1400000000 {
> + opp-hz = /bits/ 64 <1400000000>;
> + opp-supported-hw = <0x01 0x0004>;
> + clock-latency-ns = <6000000>;
> + };
> + };
> +
> + vout_pd: regulator-0 {
> + /* TPS65988 PD CONTROLLER OUTPUT */
> + compatible = "regulator-fixed";
> + regulator-name = "vout_pd";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-always-on;
> + regulator-boot-on;
> + bootph-all;
> + };
> +
> + vmain_pd: regulator-1 {
> + /* Output of TPS22811 */
> + compatible = "regulator-fixed";
> + regulator-name = "vmain_pd";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + vin-supply = <&vout_pd>;
> + regulator-always-on;
> + regulator-boot-on;
> + bootph-all;
> + };
> +
> + vcc_5v0: regulator-2 {
> + /* Output of TPS630702RNMR */
> + compatible = "regulator-fixed";
> + regulator-name = "vcc_5v0";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + vin-supply = <&vmain_pd>;
> + regulator-always-on;
> + regulator-boot-on;
> + bootph-all;
> + };
> +
> + vcc_3v3_main: regulator-3 {
> + /* output of LM5141-Q1 */
> + compatible = "regulator-fixed";
> + regulator-name = "vcc_3v3_main";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <&vmain_pd>;
> + regulator-always-on;
> + regulator-boot-on;
> + bootph-all;
> + };
> +
> + vdd_mmc1: regulator-4 {
> + /* TPS22918DBVR */
> + compatible = "regulator-fixed";
> + regulator-name = "vdd_mmc1";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + enable-active-high;
> + gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
> + bootph-all;
> + };
> +
> + vcc_3v3_sys: regulator-5 {
> + /* output of TPS222965DSGT */
> + compatible = "regulator-fixed";
> + regulator-name = "vcc_3v3_sys";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <&vcc_3v3_main>;
> + regulator-always-on;
> + regulator-boot-on;
> + bootph-all;
> + };
> +
> + vddshv_sdio: regulator-6 {
> + compatible = "regulator-gpio";
> + regulator-name = "vddshv_sdio";
> + pinctrl-names = "default";
> + pinctrl-0 = <&vddshv_sdio_pins_default>;
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + gpios = <&main_gpio1 31 GPIO_ACTIVE_HIGH>;
> + states = <1800000 0x0>,
> + <3300000 0x1>;
> + bootph-all;
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> + pinctrl-names = "default";
> + pinctrl-0 = <&usr_led_pins_default>;
> +
> + led-0 {
> + label = "am62d-evm:green:heartbeat";
> + gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "heartbeat";
> + function = LED_FUNCTION_HEARTBEAT;
> + default-state = "off";
> + };
> + };
> +};
> +
> +&mcu_pmx0 {
> + status = "okay";
> +
> + pmic_irq_pins_default: pmic-irq-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_MCU_IOPAD(0x000, PIN_INPUT, 7) /* (E11) MCU_GPIO0_0 */
> + >;
> + };
> +
> + wkup_uart0_pins_default: wkup-uart0-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_MCU_IOPAD(0x0024, PIN_INPUT, 0) /* (C9) WKUP_UART0_RXD */
> + AM62DX_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (E9) WKUP_UART0_TXD */
> + AM62DX_MCU_IOPAD(0x002c, PIN_INPUT, 0) /* (C10) WKUP_UART0_CTSn */
> + AM62DX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8) WKUP_UART0_RTSn */
> + >;
> + bootph-all;
> + };
> +};
> +
> +/* WKUP UART0 is used for DM firmware logs */
> +&wkup_uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&wkup_uart0_pins_default>;
> + bootph-all;
> + status = "reserved";
> +};
> +
> +&main_pmx0 {
> + main_uart0_pins_default: main-uart0-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x01c8, PIN_INPUT, 0) /* (E14) UART0_RXD */
> + AM62DX_IOPAD(0x01cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
> + >;
> + bootph-all;
> + };
> +
> + main_i2c0_pins_default: main-i2c0-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D17) I2C0_SCL */
> + AM62DX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (E16) I2C0_SDA */
> + >;
> + bootph-all;
> + };
> +
> + main_i2c1_pins_default: main-i2c1-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C17) I2C1_SCL */
> + AM62DX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (E17) I2C1_SDA */
> + >;
> + bootph-all;
> + };
> +
> + main_i2c2_pins_default: main-i2c2-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (M22) GPMC0_CSn2.I2C2_SCL */
> + AM62DX_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (M20) GPMC0_CSn3.I2C2_SDA */
> + >;
> + };
> +
> + main_mmc0_pins_default: main-mmc0-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x0220, PIN_INPUT_PULLUP, 0) /* (Y6) MMC0_CMD */
> + AM62DX_IOPAD(0x0218, PIN_OUTPUT, 0) /* (AB7) MMC0_CLK */
> + AM62DX_IOPAD(0x0214, PIN_INPUT_PULLUP, 0) /* (AA6) MMC0_DAT0 */
> + AM62DX_IOPAD(0x0210, PIN_INPUT_PULLUP, 0) /* (AB6) MMC0_DAT1 */
> + AM62DX_IOPAD(0x020c, PIN_INPUT_PULLUP, 0) /* (Y7) MMC0_DAT2 */
> + AM62DX_IOPAD(0x0208, PIN_INPUT_PULLUP, 0) /* (AA7) MMC0_DAT3 */
> + AM62DX_IOPAD(0x0204, PIN_INPUT_PULLUP, 0) /* (Y8) MMC0_DAT4 */
> + AM62DX_IOPAD(0x0200, PIN_INPUT_PULLUP, 0) /* (W7) MMC0_DAT5 */
> + AM62DX_IOPAD(0x01fc, PIN_INPUT_PULLUP, 0) /* (W9) MMC0_DAT6 */
> + AM62DX_IOPAD(0x01f8, PIN_INPUT_PULLUP, 0) /* (AB8) MMC0_DAT7 */
> + >;
> + bootph-all;
> + };
> +
> + main_mmc1_pins_default: main-mmc1-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x023c, PIN_INPUT, 0) /* (C21) MMC1_CMD */
> + AM62DX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (E22) MMC1_CLK */
> + AM62DX_IOPAD(0x0230, PIN_INPUT, 0) /* (B22) MMC1_DAT0 */
> + AM62DX_IOPAD(0x022c, PIN_INPUT, 0) /* (D21) MMC1_DAT1 */
> + AM62DX_IOPAD(0x0228, PIN_INPUT, 0) /* (C22) MMC1_DAT2 */
> + AM62DX_IOPAD(0x0224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
> + AM62DX_IOPAD(0x0240, PIN_INPUT, 0) /* (E18) MMC1_SDCD */
> + >;
> + bootph-all;
> + };
> +
> + main_mdio0_pins_default: main-mdio0-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
> + AM62DX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
> + >;
> + bootph-all;
> + };
> +
> + main_rgmii1_pins_default: main-rgmii1-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */
> + AM62DX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */
> + AM62DX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */
> + AM62DX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */
> + AM62DX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */
> + AM62DX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15) RGMII1_RX_CTL */
> + AM62DX_IOPAD(0x134, PIN_INPUT, 0) /* (Y17) RGMII1_TD0 */
> + AM62DX_IOPAD(0x138, PIN_INPUT, 0) /* (V16) RGMII1_TD1 */
> + AM62DX_IOPAD(0x13c, PIN_INPUT, 0) /* (Y16) RGMII1_TD2 */
> + AM62DX_IOPAD(0x140, PIN_INPUT, 0) /* (AA17) RGMII1_TD3 */
> + AM62DX_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AB17) RGMII1_TXC */
> + AM62DX_IOPAD(0x012c, PIN_OUTPUT, 0) /* (W16) RGMII1_TX_CTL */
> + >;
> + bootph-all;
> + };
> +
> + main_rgmii2_pins_default: main-rgmii2-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x0184, PIN_INPUT, 0) /* (AA21) RGMII2_RD0 */
> + AM62DX_IOPAD(0x0188, PIN_INPUT, 0) /* (Y20) RGMII2_RD1 */
> + AM62DX_IOPAD(0x018c, PIN_INPUT, 0) /* (AB21) RGMII2_RD2 */
> + AM62DX_IOPAD(0x0190, PIN_INPUT, 0) /* (AB20) RGMII2_RD3 */
> + AM62DX_IOPAD(0x0180, PIN_INPUT, 0) /* (AA20) RGMII2_RXC */
> + AM62DX_IOPAD(0x017c, PIN_INPUT, 0) /* (W18) RGMII2_RX_CTL */
> + AM62DX_IOPAD(0x016c, PIN_INPUT, 0) /* (AA19) RGMII2_TD0 */
> + AM62DX_IOPAD(0x0170, PIN_INPUT, 0) /* (Y18) RGMII2_TD1 */
> + AM62DX_IOPAD(0x0174, PIN_INPUT, 0) /* (AA18) RGMII2_TD2 */
> + AM62DX_IOPAD(0x0178, PIN_INPUT, 0) /* (W17) RGMII2_TD3 */
> + AM62DX_IOPAD(0x0168, PIN_OUTPUT, 0) /* (AB19) RGMII2_TXC */
> + AM62DX_IOPAD(0x0164, PIN_OUTPUT, 0) /* (Y19) RGMII2_TX_CTL */
> + >;
> + bootph-all;
> + };
> +
> + main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x01d4, PIN_INPUT, 7) /* (C15) UART0_RTSn.GPIO1_23 */
> + >;
> + };
> +
> + vddshv_sdio_pins_default: vddshv-sdio-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x1f4, PIN_OUTPUT, 7) /* (M19) GPMC0_CLK.GPIO1_31 */
> + >;
> + bootph-all;
> + };
> +
> + usr_led_pins_default: usr-led-default-pins {
> + pinctrl-single,pins = <
> + AM62DX_IOPAD(0x0244, PIN_INPUT, 7) /* (D18) MMC1_SDWP.GPIO1_49 */
> + >;
> + };
> +};
> +
> +&mcu_gpio0 {
> + status = "okay";
> +};
> +
> +&main_i2c0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_i2c0_pins_default>;
> + clock-frequency = <400000>;
> + bootph-all;
> + status = "okay";
> +
> + typec_pd0: usb-power-controller@3f {
> + compatible = "ti,tps6598x";
> + reg = <0x3f>;
> +
> + connector {
> + compatible = "usb-c-connector";
> + label = "USB-C";
> + self-powered;
> + data-role = "dual";
> + power-role = "sink";
> + port {
> + usb_con_hs: endpoint {
> + remote-endpoint = <&usb0_hs_ep>;
> + };
> + };
> + };
> + };
> +
> + exp1: gpio@22 {
> + compatible = "ti,tca6424";
> + reg = <0x22>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + interrupt-parent = <&main_gpio1>;
> + interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
> + bootph-all;
> +
> + gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
> + "","MMC1_SD_EN",
> + "VPP_EN", "GPIO_DIX_RST",
> + "IO_EXP_OPT_EN", "DIX_INT",
> + "GPIO_eMMC_RSTn", "CPLD2_DONE",
> + "CPLD2_INTN", "CPLD1_DONE",
> + "CPLD1_INTN", "USB_TYPEA_OC_INDICATION",
> + "PCM1_INT", "PCM2_INT",
> + "GPIO_PCM1_RST", "TEST_GPIO2",
> + "GPIO_PCM2_RST", "",
> + "IO_MCAN0_STB", "IO_MCAN1_STB",
> + "PD_I2C_IRQ", "IO_EXP_TEST_LED";
> + };
> +
> + exp2: gpio@20 {
> + compatible = "ti,tca6416";
> + reg = <0x20>;
> + gpio-controller;
> + #gpio-cells = <2>;
> +
> + gpio-line-names = "PCM6240_BUF_IO_EN", "",
> + "CPLD1_JTAGENB", "CPLD1_PROGRAMN",
> + "CPLD2_JTAGENB", "CPLD2_PROGRAMN",
> + "", "",
> + "", "CPLD1_TCK",
> + "CPLD1_TMS", "CPLD1_TDI",
> + "CPLD1_TDO", "CPLD2_TCK",
> + "CPLD2_TMS", "CPLD2_TDI",
> + "CPLD2_TDO", "ADDR1_IO_EXP",
> + "SoC_I2C0_SCL", "SoC_I2C0_SDA";
> + };
> +};
> +
> +&main_i2c1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_i2c1_pins_default>;
> + clock-frequency = <100000>;
> + status = "okay";
> +};
> +
> +&main_i2c2 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_i2c2_pins_default>;
> + clock-frequency = <400000>;
> + status = "okay";
> +};
> +
> +&sdhci0 {
> + /* eMMC */
> + non-removable;
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mmc0_pins_default>;
> + bootph-all;
> + status = "okay";
> +};
> +
> +&sdhci1 {
> + /* SD/MMC */
> + vmmc-supply = <&vdd_mmc1>;
> + vqmmc-supply = <&vddshv_sdio>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mmc1_pins_default>;
> + disable-wp;
> + bootph-all;
> + status = "okay";
> +};
> +
> +&main_gpio0 {
> + bootph-all;
> + status = "okay";
> +};
> +
> +&main_gpio1 {
> + bootph-all;
> + status = "okay";
> +};
> +
> +&main_gpio_intr {
> + status = "okay";
> +};
> +
> +&main_uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_uart0_pins_default>;
> + bootph-all;
> + status = "okay";
> +};
> +
> +&usb0 {
> + usb-role-switch;
> +
> + port {
> + usb0_hs_ep: endpoint {
> + remote-endpoint = <&usb_con_hs>;
> + };
> + };
> +};
> +
> +&cpsw3g {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_rgmii1_pins_default>,
> + <&main_rgmii2_pins_default>;
> + status = "okay";
> +
> + cpts@3d000 {
> + /* MAP HW3_TS_PUSH to GENF1 */
> + ti,pps = <2 1>;
> + };
> +};
> +
> +&cpsw_port1 {
> + phy-mode = "rgmii-id";
> + phy-handle = <&cpsw3g_phy0>;
> + status = "okay";
> +};
> +
> +&cpsw_port2 {
> + phy-mode = "rgmii-id";
> + phy-handle = <&cpsw3g_phy1>;
> + status = "okay";
> +};
> +
> +&cpsw3g_mdio {
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_mdio0_pins_default>;
> + status = "okay";
> +
> + cpsw3g_phy0: ethernet-phy@0 {
> + reg = <0>;
> + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> + ti,min-output-impedance;
> + };
> +
> + cpsw3g_phy1: ethernet-phy@3 {
> + reg = <3>;
> + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> + ti,min-output-impedance;
> + };
> +};
> +
> +&mailbox0_cluster0 {
> + status = "okay";
> +
> + mbox_r5_0: mbox-r5-0 {
> + ti,mbox-rx = <0 0 0>;
> + ti,mbox-tx = <1 0 0>;
> + };
> +};
> +
> +&mailbox0_cluster1 {
> + status = "okay";
> +
> + mbox_c7x_0: mbox-c7x-0 {
> + ti,mbox-rx = <0 0 0>;
> + ti,mbox-tx = <1 0 0>;
> + };
> +};
> +
> +&mailbox0_cluster2 {
> + status = "okay";
> +
> + mbox_mcu_r5_0: mbox-mcu-r5-0 {
> + ti,mbox-rx = <0 0 0>;
> + ti,mbox-tx = <1 0 0>;
> + };
> +};
> +
> +&wkup_r5fss0 {
> + status = "okay";
> +};
> +
> +&wkup_r5fss0_core0 {
> + mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
> + memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
> + <&wkup_r5fss0_core0_memory_region>;
> + bootph-pre-ram;
> +};
> +
> +&mcu_r5fss0 {
> + status = "okay";
> +};
> +
> +&mcu_r5fss0_core0 {
> + mboxes = <&mailbox0_cluster2 &mbox_mcu_r5_0>;
> + memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
> + <&mcu_r5fss0_core0_memory_region>;
> + firmware-name = "am62d-mcu-r5f0_0-fw";
> + status = "okay";
> +};
> +
> +&c7x_0 {
> + mboxes = <&mailbox0_cluster1 &mbox_c7x_0>;
> + memory-region = <&c7x_0_dma_memory_region>,
> + <&c7x_0_memory_region>;
> + firmware-name = "am62d-c71_0-fw";
> + status = "okay";
> +};
> +
> +/* main_rti4 is used by C7x DSP */
> +&main_rti4 {
> + status = "reserved";
> +};
> diff --git a/arch/arm64/boot/dts/ti/k3-am62d2.dtsi b/arch/arm64/boot/dts/ti/k3-am62d2.dtsi
> new file mode 100644
> index 000000000000..1095515d3780
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am62d2.dtsi
> @@ -0,0 +1,20 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*
> + * Device Tree Source for AM62D2 SoC family in Quad core configuration
> + *
> + * TRM: https://www.ti.com/lit/pdf/sprujd4
> + *
> + * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
> + */
> +
> +/dts-v1/;
> +
> +#include "k3-am62a7.dtsi"
> +
> +/ {
> + model = "Texas Instruments K3 AM62D SoC";
> + compatible = "ti,am62d2";
> +};
> +
> +/delete-node/ &vpu; /* Delete video codec node */
> +/delete-node/ &e5010; /* Delete jpeg encoder node */
No need for comments that repeat the code, we can read the
code, comments should explain the "why". In this case something
like "/* The xxx is disabled in the AM62D2 SoC */
Otherwise looks good enough for basic support,
Reviewed-by: Andrew Davis <afd@ti.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 1/4] arm64: dts: ti: Add bootph property to nodes at source for am62a
2025-07-04 10:09 ` [PATCH v6 1/4] arm64: dts: ti: Add bootph property to nodes at source for am62a Paresh Bhagat
@ 2025-07-07 16:35 ` Bryan Brattlof
0 siblings, 0 replies; 10+ messages in thread
From: Bryan Brattlof @ 2025-07-07 16:35 UTC (permalink / raw)
To: Paresh Bhagat
Cc: nm, vigneshr, praneeth, kristo, robh, krzk+dt, conor+dt,
linux-arm-kernel, devicetree, linux-kernel, khasim, v-singh1,
afd, devarsht, s-vadapalli, andrew
On July 4, 2025 thus sayeth Paresh Bhagat:
> Add bootph property directly into the original definitions of relevant
> nodes (e.g., power domains, USB controllers, and other peripherals)
> within their respective DTSI files (ex. main, mcu, and wakeup) for
> am62a.
>
> By defining bootph in the nodes source definitions instead of appending
> it later in final DTS files, this change ensures that the property is
> inherently present wherever the nodes are reused across derived device
> trees.
>
> Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
> ---
> arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 13 +++++++++++++
> arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi | 2 ++
> 2 files changed, 15 insertions(+)
>
Reviewed-by: Bryan Brattlof <bb@ti.com>
~Bryan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM
2025-07-04 10:09 ` [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM Paresh Bhagat
2025-07-07 16:05 ` Andrew Davis
@ 2025-07-07 16:37 ` Bryan Brattlof
1 sibling, 0 replies; 10+ messages in thread
From: Bryan Brattlof @ 2025-07-07 16:37 UTC (permalink / raw)
To: Paresh Bhagat
Cc: nm, vigneshr, praneeth, kristo, robh, krzk+dt, conor+dt,
linux-arm-kernel, devicetree, linux-kernel, khasim, v-singh1,
afd, devarsht, s-vadapalli, andrew
On July 4, 2025 thus sayeth Paresh Bhagat:
> AM62D-EVM evaluation module (EVM) is a low-cost expandable platform board
> designed for AM62D2 SoC from TI. It supports the following interfaces:
>
> * 4 GB LPDDR4 RAM
> * x2 Gigabit Ethernet expansion connectors
> * x4 3.5mm TRS Audio Jack Line In
> * x4 3.5mm TRS Audio Jack Line Out
> * x2 Audio expansion connectors
> * x1 Type-A USB 2.0, x1 Type-C dual-role device (DRD) USB 2.0
> * x1 UHS-1 capable micro SD card slot
> * 32 GB eMMC Flash
> * 512 Mb OSPI NOR flash
> * x4 UARTs via USB 2.0-B
> * XDS110 for onboard JTAG debug using USB
> * Temperature sensors, user push buttons and LEDs
>
> Although AM62D2 and AM62A7 differ in peripheral capabilities example
> multimedia, VPAC, and display subsystems, the core architecture remains
> same. To reduce duplication, AM62D support reuses the AM62A dtsi and the
> necessary overrides will be handled in SOC specific dtsi file and a
> board specific dts.
>
> Add basic support for AM62D2-EVM.
>
> Schematics Link - https://www.ti.com/lit/zip/sprcal5
>
> Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
> Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
> ---
> arch/arm64/boot/dts/ti/Makefile | 3 +
> arch/arm64/boot/dts/ti/k3-am62d2-evm.dts | 617 +++++++++++++++++++++++
> arch/arm64/boot/dts/ti/k3-am62d2.dtsi | 20 +
> 3 files changed, 640 insertions(+)
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2.dtsi
>
Reviewed-by: Bryan Brattlof <bb@ti.com>
~Bryan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 3/4] arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs
2025-07-04 10:09 ` [PATCH v6 3/4] arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs Paresh Bhagat
@ 2025-07-08 6:13 ` Devarsh Thakkar
0 siblings, 0 replies; 10+ messages in thread
From: Devarsh Thakkar @ 2025-07-08 6:13 UTC (permalink / raw)
To: Paresh Bhagat, nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, afd, bb, s-vadapalli, andrew
On 04/07/25 15:39, Paresh Bhagat wrote:
> Update k3-pinctrl file to include pin definitions for AM62D2 family of
> SoCs.
>
> Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
Reviewed-by: Devarsh Thakkar <devarsht@ti.com>
Regards
Devarsh
> ---
> arch/arm64/boot/dts/ti/k3-pinctrl.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-pinctrl.h b/arch/arm64/boot/dts/ti/k3-pinctrl.h
> index cac7cccc1112..0cf57179c974 100644
> --- a/arch/arm64/boot/dts/ti/k3-pinctrl.h
> +++ b/arch/arm64/boot/dts/ti/k3-pinctrl.h
> @@ -63,6 +63,9 @@
> #define AM62AX_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
> #define AM62AX_MCU_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
>
> +#define AM62DX_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
> +#define AM62DX_MCU_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
> +
> #define AM62PX_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
> #define AM62PX_MCU_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM
2025-07-07 16:05 ` Andrew Davis
@ 2025-07-08 8:43 ` Paresh Bhagat
0 siblings, 0 replies; 10+ messages in thread
From: Paresh Bhagat @ 2025-07-08 8:43 UTC (permalink / raw)
To: Andrew Davis, nm, vigneshr, praneeth
Cc: kristo, robh, krzk+dt, conor+dt, linux-arm-kernel, devicetree,
linux-kernel, khasim, v-singh1, bb, devarsht, s-vadapalli,
andrew
Hi Andrew,
On 07/07/25 21:35, Andrew Davis wrote:
> On 7/4/25 5:09 AM, Paresh Bhagat wrote:
>> AM62D-EVM evaluation module (EVM) is a low-cost expandable platform
>> board
>> designed for AM62D2 SoC from TI. It supports the following interfaces:
>>
>> * 4 GB LPDDR4 RAM
>> * x2 Gigabit Ethernet expansion connectors
>> * x4 3.5mm TRS Audio Jack Line In
>> * x4 3.5mm TRS Audio Jack Line Out
>> * x2 Audio expansion connectors
>> * x1 Type-A USB 2.0, x1 Type-C dual-role device (DRD) USB 2.0
>> * x1 UHS-1 capable micro SD card slot
>> * 32 GB eMMC Flash
>> * 512 Mb OSPI NOR flash
>> * x4 UARTs via USB 2.0-B
>> * XDS110 for onboard JTAG debug using USB
>> * Temperature sensors, user push buttons and LEDs
>>
>> Although AM62D2 and AM62A7 differ in peripheral capabilities example
>> multimedia, VPAC, and display subsystems, the core architecture remains
>> same. To reduce duplication, AM62D support reuses the AM62A dtsi and the
>> necessary overrides will be handled in SOC specific dtsi file and a
>> board specific dts.
>>
>> Add basic support for AM62D2-EVM.
>>
>> Schematics Link - https://www.ti.com/lit/zip/sprcal5
>>
>> Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
>> Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
>> ---
>> arch/arm64/boot/dts/ti/Makefile | 3 +
>> arch/arm64/boot/dts/ti/k3-am62d2-evm.dts | 617 +++++++++++++++++++++++
>> arch/arm64/boot/dts/ti/k3-am62d2.dtsi | 20 +
>> 3 files changed, 640 insertions(+)
>> create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
>> create mode 100644 arch/arm64/boot/dts/ti/k3-am62d2.dtsi
>>
>> diff --git a/arch/arm64/boot/dts/ti/Makefile
>> b/arch/arm64/boot/dts/ti/Makefile
>> index c6171de9fe88..3da3a1d1dc33 100644
>> --- a/arch/arm64/boot/dts/ti/Makefile
>> +++ b/arch/arm64/boot/dts/ti/Makefile
>> @@ -33,6 +33,9 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62-pocketbeagle2.dtb
>> dtb-$(CONFIG_ARCH_K3) += k3-am62a7-sk.dtb
>> dtb-$(CONFIG_ARCH_K3) += k3-am62a7-phyboard-lyra-rdk.dtb
>> +# Boards with AM62Dx SoC
>> +dtb-$(CONFIG_ARCH_K3) += k3-am62d2-evm.dtb
>> +
>> # Boards with AM62Px SoC
>> dtb-$(CONFIG_ARCH_K3) += k3-am62p5-sk.dtb
>> dtb-$(CONFIG_ARCH_K3) += k3-am62p5-verdin-nonwifi-dahlia.dtb
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
>> b/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
>> new file mode 100644
>> index 000000000000..715a407bddd8
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/ti/k3-am62d2-evm.dts
>> @@ -0,0 +1,617 @@
>> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
>> +/*
>> + * AM62D2 EVM: https://www.ti.com/lit/zip/sprcal5
>> + *
>> + * Copyright (C) 2025 Texas Instruments Incorporated -
>> https://www.ti.com/
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include <dt-bindings/leds/common.h>
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/net/ti-dp83867.h>
>> +#include "k3-am62d2.dtsi"
>> +
>> +/ {
>> + compatible = "ti,am62d2-evm", "ti,am62d2";
>> + model = "Texas Instruments AM62D2 EVM";
>> +
>> + aliases {
>> + serial0 = &wkup_uart0;
>> + serial1 = &mcu_uart0;
>> + serial2 = &main_uart0;
>> + mmc0 = &sdhci0;
>> + mmc1 = &sdhci1;
>> + rtc0 = &wkup_rtc0;
>> + ethernet0 = &cpsw_port1;
>> + ethernet1 = &cpsw_port2;
>> + };
>> +
>> + chosen {
>> + stdout-path = &main_uart0;
>> + };
>> +
>> + memory@80000000 {
>> + device_type = "memory";
>> + /* 4G RAM */
>> + reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
>> + <0x00000008 0x80000000 0x00000000 0x80000000>;
>> + bootph-all;
>> + };
>> +
>> + reserved-memory {
>> + #address-cells = <2>;
>> + #size-cells = <2>;
>> + ranges;
>> +
>> + /* global cma region */
>> + linux,cma {
>> + compatible = "shared-dma-pool";
>> + reusable;
>> + size = <0x00 0x2000000>;
>> + alloc-ranges = <0x00 0xc0000000 0x00 0x2000000>;
>> + linux,cma-default;
>> + };
>> +
>> + secure_tfa_ddr: tfa@80000000 {
>> + reg = <0x00 0x80000000 0x00 0x80000>;
>> + alignment = <0x1000>;
>
> "alignment" doesn't matter for "no-map" regions, Linux cannot allocate
> from these in the first place. Same for "secure_ddr" region below.
>
>> + no-map;
>> + };
>> +
>> + c7x_0_dma_memory_region: c7x-dma-memory@99800000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0x00 0x99800000 0x00 0x100000>;
>> + no-map;
>> + };
>> +
>> + c7x_0_memory_region: c7x-memory@99900000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0x00 0x99900000 0x00 0xf00000>;
>> + no-map;
>> + };
>> +
>> + mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@9b800000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0x00 0x9b800000 0x00 0x100000>;
>> + no-map;
>> + };
>> +
>> + mcu_r5fss0_core0_memory_region: r5f-dma-memory@9b900000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0x00 0x9b900000 0x00 0xf00000>;
>> + no-map;
>> + };
>> +
>> + wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0x00 0x9c800000 0x00 0x100000>;
>> + no-map;
>> + };
>> +
>> + wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0x00 0x9c900000 0x00 0xf00000>;
>> + no-map;
>> + bootph-pre-ram;
>> + };
>> +
>> + secure_ddr: optee@9e800000 {
>> + reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
>> + alignment = <0x1000>;
>> + no-map;
>> + };
>> +
>> + rtos_ipc_memory_region: ipc-memories@a0000000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0x00 0xa0000000 0x00 0x01000000>;
>> + no-map;
>> + };
>> + };
>> +
>> + opp-table {
>> + /* Requires VDD_CORE at 0v85 */
>> + opp-1400000000 {
>> + opp-hz = /bits/ 64 <1400000000>;
>> + opp-supported-hw = <0x01 0x0004>;
>> + clock-latency-ns = <6000000>;
>> + };
>> + };
>> +
>> + vout_pd: regulator-0 {
>> + /* TPS65988 PD CONTROLLER OUTPUT */
>> + compatible = "regulator-fixed";
>> + regulator-name = "vout_pd";
>> + regulator-min-microvolt = <5000000>;
>> + regulator-max-microvolt = <5000000>;
>> + regulator-always-on;
>> + regulator-boot-on;
>> + bootph-all;
>> + };
>> +
>> + vmain_pd: regulator-1 {
>> + /* Output of TPS22811 */
>> + compatible = "regulator-fixed";
>> + regulator-name = "vmain_pd";
>> + regulator-min-microvolt = <5000000>;
>> + regulator-max-microvolt = <5000000>;
>> + vin-supply = <&vout_pd>;
>> + regulator-always-on;
>> + regulator-boot-on;
>> + bootph-all;
>> + };
>> +
>> + vcc_5v0: regulator-2 {
>> + /* Output of TPS630702RNMR */
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc_5v0";
>> + regulator-min-microvolt = <5000000>;
>> + regulator-max-microvolt = <5000000>;
>> + vin-supply = <&vmain_pd>;
>> + regulator-always-on;
>> + regulator-boot-on;
>> + bootph-all;
>> + };
>> +
>> + vcc_3v3_main: regulator-3 {
>> + /* output of LM5141-Q1 */
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc_3v3_main";
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + vin-supply = <&vmain_pd>;
>> + regulator-always-on;
>> + regulator-boot-on;
>> + bootph-all;
>> + };
>> +
>> + vdd_mmc1: regulator-4 {
>> + /* TPS22918DBVR */
>> + compatible = "regulator-fixed";
>> + regulator-name = "vdd_mmc1";
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + enable-active-high;
>> + gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
>> + bootph-all;
>> + };
>> +
>> + vcc_3v3_sys: regulator-5 {
>> + /* output of TPS222965DSGT */
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc_3v3_sys";
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + vin-supply = <&vcc_3v3_main>;
>> + regulator-always-on;
>> + regulator-boot-on;
>> + bootph-all;
>> + };
>> +
>> + vddshv_sdio: regulator-6 {
>> + compatible = "regulator-gpio";
>> + regulator-name = "vddshv_sdio";
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&vddshv_sdio_pins_default>;
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + gpios = <&main_gpio1 31 GPIO_ACTIVE_HIGH>;
>> + states = <1800000 0x0>,
>> + <3300000 0x1>;
>> + bootph-all;
>> + };
>> +
>> + leds {
>> + compatible = "gpio-leds";
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&usr_led_pins_default>;
>> +
>> + led-0 {
>> + label = "am62d-evm:green:heartbeat";
>> + gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
>> + linux,default-trigger = "heartbeat";
>> + function = LED_FUNCTION_HEARTBEAT;
>> + default-state = "off";
>> + };
>> + };
>> +};
>> +
>> +&mcu_pmx0 {
>> + status = "okay";
>> +
>> + pmic_irq_pins_default: pmic-irq-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_MCU_IOPAD(0x000, PIN_INPUT, 7) /* (E11)
>> MCU_GPIO0_0 */
>> + >;
>> + };
>> +
>> + wkup_uart0_pins_default: wkup-uart0-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_MCU_IOPAD(0x0024, PIN_INPUT, 0) /* (C9)
>> WKUP_UART0_RXD */
>> + AM62DX_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (E9)
>> WKUP_UART0_TXD */
>> + AM62DX_MCU_IOPAD(0x002c, PIN_INPUT, 0) /* (C10)
>> WKUP_UART0_CTSn */
>> + AM62DX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8)
>> WKUP_UART0_RTSn */
>> + >;
>> + bootph-all;
>> + };
>> +};
>> +
>> +/* WKUP UART0 is used for DM firmware logs */
>> +&wkup_uart0 {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&wkup_uart0_pins_default>;
>> + bootph-all;
>> + status = "reserved";
>> +};
>> +
>> +&main_pmx0 {
>> + main_uart0_pins_default: main-uart0-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x01c8, PIN_INPUT, 0) /* (E14) UART0_RXD */
>> + AM62DX_IOPAD(0x01cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_i2c0_pins_default: main-i2c0-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D17)
>> I2C0_SCL */
>> + AM62DX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (E16)
>> I2C0_SDA */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_i2c1_pins_default: main-i2c1-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C17)
>> I2C1_SCL */
>> + AM62DX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (E17)
>> I2C1_SDA */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_i2c2_pins_default: main-i2c2-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (M22)
>> GPMC0_CSn2.I2C2_SCL */
>> + AM62DX_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (M20)
>> GPMC0_CSn3.I2C2_SDA */
>> + >;
>> + };
>> +
>> + main_mmc0_pins_default: main-mmc0-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x0220, PIN_INPUT_PULLUP, 0) /* (Y6)
>> MMC0_CMD */
>> + AM62DX_IOPAD(0x0218, PIN_OUTPUT, 0) /* (AB7) MMC0_CLK */
>> + AM62DX_IOPAD(0x0214, PIN_INPUT_PULLUP, 0) /* (AA6)
>> MMC0_DAT0 */
>> + AM62DX_IOPAD(0x0210, PIN_INPUT_PULLUP, 0) /* (AB6)
>> MMC0_DAT1 */
>> + AM62DX_IOPAD(0x020c, PIN_INPUT_PULLUP, 0) /* (Y7)
>> MMC0_DAT2 */
>> + AM62DX_IOPAD(0x0208, PIN_INPUT_PULLUP, 0) /* (AA7)
>> MMC0_DAT3 */
>> + AM62DX_IOPAD(0x0204, PIN_INPUT_PULLUP, 0) /* (Y8)
>> MMC0_DAT4 */
>> + AM62DX_IOPAD(0x0200, PIN_INPUT_PULLUP, 0) /* (W7)
>> MMC0_DAT5 */
>> + AM62DX_IOPAD(0x01fc, PIN_INPUT_PULLUP, 0) /* (W9)
>> MMC0_DAT6 */
>> + AM62DX_IOPAD(0x01f8, PIN_INPUT_PULLUP, 0) /* (AB8)
>> MMC0_DAT7 */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_mmc1_pins_default: main-mmc1-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x023c, PIN_INPUT, 0) /* (C21) MMC1_CMD */
>> + AM62DX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (E22) MMC1_CLK */
>> + AM62DX_IOPAD(0x0230, PIN_INPUT, 0) /* (B22) MMC1_DAT0 */
>> + AM62DX_IOPAD(0x022c, PIN_INPUT, 0) /* (D21) MMC1_DAT1 */
>> + AM62DX_IOPAD(0x0228, PIN_INPUT, 0) /* (C22) MMC1_DAT2 */
>> + AM62DX_IOPAD(0x0224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
>> + AM62DX_IOPAD(0x0240, PIN_INPUT, 0) /* (E18) MMC1_SDCD */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_mdio0_pins_default: main-mdio0-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
>> + AM62DX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_rgmii1_pins_default: main-rgmii1-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */
>> + AM62DX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */
>> + AM62DX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */
>> + AM62DX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */
>> + AM62DX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */
>> + AM62DX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15)
>> RGMII1_RX_CTL */
>> + AM62DX_IOPAD(0x134, PIN_INPUT, 0) /* (Y17) RGMII1_TD0 */
>> + AM62DX_IOPAD(0x138, PIN_INPUT, 0) /* (V16) RGMII1_TD1 */
>> + AM62DX_IOPAD(0x13c, PIN_INPUT, 0) /* (Y16) RGMII1_TD2 */
>> + AM62DX_IOPAD(0x140, PIN_INPUT, 0) /* (AA17) RGMII1_TD3 */
>> + AM62DX_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AB17) RGMII1_TXC */
>> + AM62DX_IOPAD(0x012c, PIN_OUTPUT, 0) /* (W16)
>> RGMII1_TX_CTL */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_rgmii2_pins_default: main-rgmii2-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x0184, PIN_INPUT, 0) /* (AA21) RGMII2_RD0 */
>> + AM62DX_IOPAD(0x0188, PIN_INPUT, 0) /* (Y20) RGMII2_RD1 */
>> + AM62DX_IOPAD(0x018c, PIN_INPUT, 0) /* (AB21) RGMII2_RD2 */
>> + AM62DX_IOPAD(0x0190, PIN_INPUT, 0) /* (AB20) RGMII2_RD3 */
>> + AM62DX_IOPAD(0x0180, PIN_INPUT, 0) /* (AA20) RGMII2_RXC */
>> + AM62DX_IOPAD(0x017c, PIN_INPUT, 0) /* (W18)
>> RGMII2_RX_CTL */
>> + AM62DX_IOPAD(0x016c, PIN_INPUT, 0) /* (AA19) RGMII2_TD0 */
>> + AM62DX_IOPAD(0x0170, PIN_INPUT, 0) /* (Y18) RGMII2_TD1 */
>> + AM62DX_IOPAD(0x0174, PIN_INPUT, 0) /* (AA18) RGMII2_TD2 */
>> + AM62DX_IOPAD(0x0178, PIN_INPUT, 0) /* (W17) RGMII2_TD3 */
>> + AM62DX_IOPAD(0x0168, PIN_OUTPUT, 0) /* (AB19) RGMII2_TXC */
>> + AM62DX_IOPAD(0x0164, PIN_OUTPUT, 0) /* (Y19)
>> RGMII2_TX_CTL */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_gpio1_ioexp_intr_pins_default:
>> main-gpio1-ioexp-intr-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x01d4, PIN_INPUT, 7) /* (C15)
>> UART0_RTSn.GPIO1_23 */
>> + >;
>> + };
>> +
>> + vddshv_sdio_pins_default: vddshv-sdio-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x1f4, PIN_OUTPUT, 7) /* (M19)
>> GPMC0_CLK.GPIO1_31 */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + usr_led_pins_default: usr-led-default-pins {
>> + pinctrl-single,pins = <
>> + AM62DX_IOPAD(0x0244, PIN_INPUT, 7) /* (D18)
>> MMC1_SDWP.GPIO1_49 */
>> + >;
>> + };
>> +};
>> +
>> +&mcu_gpio0 {
>> + status = "okay";
>> +};
>> +
>> +&main_i2c0 {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_i2c0_pins_default>;
>> + clock-frequency = <400000>;
>> + bootph-all;
>> + status = "okay";
>> +
>> + typec_pd0: usb-power-controller@3f {
>> + compatible = "ti,tps6598x";
>> + reg = <0x3f>;
>> +
>> + connector {
>> + compatible = "usb-c-connector";
>> + label = "USB-C";
>> + self-powered;
>> + data-role = "dual";
>> + power-role = "sink";
>> + port {
>> + usb_con_hs: endpoint {
>> + remote-endpoint = <&usb0_hs_ep>;
>> + };
>> + };
>> + };
>> + };
>> +
>> + exp1: gpio@22 {
>> + compatible = "ti,tca6424";
>> + reg = <0x22>;
>> + gpio-controller;
>> + #gpio-cells = <2>;
>> + interrupt-parent = <&main_gpio1>;
>> + interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
>> + interrupt-controller;
>> + #interrupt-cells = <2>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
>> + bootph-all;
>> +
>> + gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
>> + "","MMC1_SD_EN",
>> + "VPP_EN", "GPIO_DIX_RST",
>> + "IO_EXP_OPT_EN", "DIX_INT",
>> + "GPIO_eMMC_RSTn", "CPLD2_DONE",
>> + "CPLD2_INTN", "CPLD1_DONE",
>> + "CPLD1_INTN", "USB_TYPEA_OC_INDICATION",
>> + "PCM1_INT", "PCM2_INT",
>> + "GPIO_PCM1_RST", "TEST_GPIO2",
>> + "GPIO_PCM2_RST", "",
>> + "IO_MCAN0_STB", "IO_MCAN1_STB",
>> + "PD_I2C_IRQ", "IO_EXP_TEST_LED";
>> + };
>> +
>> + exp2: gpio@20 {
>> + compatible = "ti,tca6416";
>> + reg = <0x20>;
>> + gpio-controller;
>> + #gpio-cells = <2>;
>> +
>> + gpio-line-names = "PCM6240_BUF_IO_EN", "",
>> + "CPLD1_JTAGENB", "CPLD1_PROGRAMN",
>> + "CPLD2_JTAGENB", "CPLD2_PROGRAMN",
>> + "", "",
>> + "", "CPLD1_TCK",
>> + "CPLD1_TMS", "CPLD1_TDI",
>> + "CPLD1_TDO", "CPLD2_TCK",
>> + "CPLD2_TMS", "CPLD2_TDI",
>> + "CPLD2_TDO", "ADDR1_IO_EXP",
>> + "SoC_I2C0_SCL", "SoC_I2C0_SDA";
>> + };
>> +};
>> +
>> +&main_i2c1 {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_i2c1_pins_default>;
>> + clock-frequency = <100000>;
>> + status = "okay";
>> +};
>> +
>> +&main_i2c2 {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_i2c2_pins_default>;
>> + clock-frequency = <400000>;
>> + status = "okay";
>> +};
>> +
>> +&sdhci0 {
>> + /* eMMC */
>> + non-removable;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_mmc0_pins_default>;
>> + bootph-all;
>> + status = "okay";
>> +};
>> +
>> +&sdhci1 {
>> + /* SD/MMC */
>> + vmmc-supply = <&vdd_mmc1>;
>> + vqmmc-supply = <&vddshv_sdio>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_mmc1_pins_default>;
>> + disable-wp;
>> + bootph-all;
>> + status = "okay";
>> +};
>> +
>> +&main_gpio0 {
>> + bootph-all;
>> + status = "okay";
>> +};
>> +
>> +&main_gpio1 {
>> + bootph-all;
>> + status = "okay";
>> +};
>> +
>> +&main_gpio_intr {
>> + status = "okay";
>> +};
>> +
>> +&main_uart0 {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_uart0_pins_default>;
>> + bootph-all;
>> + status = "okay";
>> +};
>> +
>> +&usb0 {
>> + usb-role-switch;
>> +
>> + port {
>> + usb0_hs_ep: endpoint {
>> + remote-endpoint = <&usb_con_hs>;
>> + };
>> + };
>> +};
>> +
>> +&cpsw3g {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_rgmii1_pins_default>,
>> + <&main_rgmii2_pins_default>;
>> + status = "okay";
>> +
>> + cpts@3d000 {
>> + /* MAP HW3_TS_PUSH to GENF1 */
>> + ti,pps = <2 1>;
>> + };
>> +};
>> +
>> +&cpsw_port1 {
>> + phy-mode = "rgmii-id";
>> + phy-handle = <&cpsw3g_phy0>;
>> + status = "okay";
>> +};
>> +
>> +&cpsw_port2 {
>> + phy-mode = "rgmii-id";
>> + phy-handle = <&cpsw3g_phy1>;
>> + status = "okay";
>> +};
>> +
>> +&cpsw3g_mdio {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&main_mdio0_pins_default>;
>> + status = "okay";
>> +
>> + cpsw3g_phy0: ethernet-phy@0 {
>> + reg = <0>;
>> + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
>> + ti,min-output-impedance;
>> + };
>> +
>> + cpsw3g_phy1: ethernet-phy@3 {
>> + reg = <3>;
>> + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
>> + ti,min-output-impedance;
>> + };
>> +};
>> +
>> +&mailbox0_cluster0 {
>> + status = "okay";
>> +
>> + mbox_r5_0: mbox-r5-0 {
>> + ti,mbox-rx = <0 0 0>;
>> + ti,mbox-tx = <1 0 0>;
>> + };
>> +};
>> +
>> +&mailbox0_cluster1 {
>> + status = "okay";
>> +
>> + mbox_c7x_0: mbox-c7x-0 {
>> + ti,mbox-rx = <0 0 0>;
>> + ti,mbox-tx = <1 0 0>;
>> + };
>> +};
>> +
>> +&mailbox0_cluster2 {
>> + status = "okay";
>> +
>> + mbox_mcu_r5_0: mbox-mcu-r5-0 {
>> + ti,mbox-rx = <0 0 0>;
>> + ti,mbox-tx = <1 0 0>;
>> + };
>> +};
>> +
>> +&wkup_r5fss0 {
>> + status = "okay";
>> +};
>> +
>> +&wkup_r5fss0_core0 {
>> + mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
>> + memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
>> + <&wkup_r5fss0_core0_memory_region>;
>> + bootph-pre-ram;
>> +};
>> +
>> +&mcu_r5fss0 {
>> + status = "okay";
>> +};
>> +
>> +&mcu_r5fss0_core0 {
>> + mboxes = <&mailbox0_cluster2 &mbox_mcu_r5_0>;
>> + memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
>> + <&mcu_r5fss0_core0_memory_region>;
>> + firmware-name = "am62d-mcu-r5f0_0-fw";
>> + status = "okay";
>> +};
>> +
>> +&c7x_0 {
>> + mboxes = <&mailbox0_cluster1 &mbox_c7x_0>;
>> + memory-region = <&c7x_0_dma_memory_region>,
>> + <&c7x_0_memory_region>;
>> + firmware-name = "am62d-c71_0-fw";
>> + status = "okay";
>> +};
>> +
>> +/* main_rti4 is used by C7x DSP */
>> +&main_rti4 {
>> + status = "reserved";
>> +};
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62d2.dtsi
>> b/arch/arm64/boot/dts/ti/k3-am62d2.dtsi
>> new file mode 100644
>> index 000000000000..1095515d3780
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/ti/k3-am62d2.dtsi
>> @@ -0,0 +1,20 @@
>> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
>> +/*
>> + * Device Tree Source for AM62D2 SoC family in Quad core configuration
>> + *
>> + * TRM: https://www.ti.com/lit/pdf/sprujd4
>> + *
>> + * Copyright (C) 2025 Texas Instruments Incorporated -
>> https://www.ti.com/
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include "k3-am62a7.dtsi"
>> +
>> +/ {
>> + model = "Texas Instruments K3 AM62D SoC";
>> + compatible = "ti,am62d2";
>> +};
>> +
>> +/delete-node/ &vpu; /* Delete video codec node */
>> +/delete-node/ &e5010; /* Delete jpeg encoder node */
>
> No need for comments that repeat the code, we can read the
> code, comments should explain the "why". In this case something
> like "/* The xxx is disabled in the AM62D2 SoC */
>
> Otherwise looks good enough for basic support,
>
> Reviewed-by: Andrew Davis <afd@ti.com>
Thanks for the review. will update in next version.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-07-08 8:43 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-04 10:09 [PATCH v6 0/4] Add support for AM62D2 SoC and EVM Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 1/4] arm64: dts: ti: Add bootph property to nodes at source for am62a Paresh Bhagat
2025-07-07 16:35 ` Bryan Brattlof
2025-07-04 10:09 ` [PATCH v6 2/4] dt-bindings: arm: ti: Add AM62D2 SoC and Boards Paresh Bhagat
2025-07-04 10:09 ` [PATCH v6 3/4] arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs Paresh Bhagat
2025-07-08 6:13 ` Devarsh Thakkar
2025-07-04 10:09 ` [PATCH v6 4/4] arm64: dts: ti: Add support for AM62D2-EVM Paresh Bhagat
2025-07-07 16:05 ` Andrew Davis
2025-07-08 8:43 ` Paresh Bhagat
2025-07-07 16:37 ` Bryan Brattlof
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®