* [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
* 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
* [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
* 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
* [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 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
* 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
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®