Add initial mach-k3 files needed to support boards based on the AM62L
family of SoCs

Signed-off-by: Bryan Brattlof <[email protected]>
---
Changes in v2:
Coalesced boot parameter table Kconfig address
Link to v1: https://lore.kernel.org/r/[email protected]
---
 arch/arm/mach-k3/Kconfig                       |  16 +-
 arch/arm/mach-k3/Makefile                      |   2 +
 arch/arm/mach-k3/am62lx/Kconfig                |  23 ++
 arch/arm/mach-k3/am62lx/Makefile               |   7 +
 arch/arm/mach-k3/am62lx/am62l3_fdt.c           |  12 +
 arch/arm/mach-k3/am62lx/am62l3_init.c          |  58 ++++
 arch/arm/mach-k3/am62lx/boot.c                 |  82 +++++
 arch/arm/mach-k3/am62lx/schema.yaml            | 427 +++++++++++++++++++++++++
 arch/arm/mach-k3/include/mach/am62l_hardware.h |  48 +++
 arch/arm/mach-k3/include/mach/am62l_spl.h      |  41 +++
 arch/arm/mach-k3/include/mach/hardware.h       |   4 +
 arch/arm/mach-k3/include/mach/spl.h            |   4 +
 include/configs/am62l3_evm.h                   |  14 +
 13 files changed, 734 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig
index a32ed3a9683f..351ff3c19f1c 100644
--- a/arch/arm/mach-k3/Kconfig
+++ b/arch/arm/mach-k3/Kconfig
@@ -10,6 +10,15 @@ config SOC_K3_AM625
 config SOC_K3_AM62A7
        bool "TI's K3 based AM62A7 SoC Family Support"
 
+config SOC_K3_AM62L3
+       bool "TI's K3 based AM62L3 SoC Family Support"
+       select CLK_SCMI
+       select SPL_CLK_SCMI
+       select SCMI_FIRMWARE
+       select SCMI_POWER_DOMAIN
+       select SPL_SCMI_POWER_DOMAIN
+       select SYSRESET_PSCI
+
 config SOC_K3_AM62P5
        bool "TI's K3 based AM62P5 SoC Family Support"
 
@@ -81,11 +90,9 @@ config SYS_K3_BOOT_PARAM_TABLE_INDEX
        default 0x41cffbfc if SOC_K3_J721E || SOC_K3_J7200
        default 0x41cfdbfc if SOC_K3_J721S2 || SOC_K3_J784S4
        default 0x701bebfc if SOC_K3_AM642
-       default 0x43c3f290 if SOC_K3_AM625
+       default 0x43c3f290 if SOC_K3_AM625 || SOC_K3_AM62L3 || SOC_K3_AM62P5 || 
SOC_K3_J722S
        default 0x43c3f290 if SOC_K3_AM62A7 && CPU_V7R
        default 0x7000f290 if SOC_K3_AM62A7 && ARM64
-       default 0x43c4f290 if SOC_K3_AM62P5
-       default 0x43c7f290 if SOC_K3_J722S
        help
          Address at which ROM stores the value which determines if SPL
          is booted up by primary boot media or secondary boot media.
@@ -124,7 +131,7 @@ config K3_EARLY_CONS_IDX
 
 config K3_ATF_LOAD_ADDR
        hex "Load address of ATF image"
-       default 0x80000000 if (SOC_K3_AM625 || SOC_K3_AM62A7 || SOC_K3_AM62P5 
|| SOC_K3_J722S)
+       default 0x80000000 if (SOC_K3_AM625 || SOC_K3_AM62A7 || SOC_K3_AM62P5 
|| SOC_K3_J722S || SOC_K3_AM62L3)
        default 0x70000000
        help
          The load address for the ATF image. This value is used to build the
@@ -206,6 +213,7 @@ source "arch/arm/mach-k3/am65x/Kconfig"
 source "arch/arm/mach-k3/am64x/Kconfig"
 source "arch/arm/mach-k3/am62x/Kconfig"
 source "arch/arm/mach-k3/am62ax/Kconfig"
+source "arch/arm/mach-k3/am62lx/Kconfig"
 source "arch/arm/mach-k3/am62px/Kconfig"
 source "arch/arm/mach-k3/j721e/Kconfig"
 source "arch/arm/mach-k3/j7200/Kconfig"
diff --git a/arch/arm/mach-k3/Makefile b/arch/arm/mach-k3/Makefile
index b2fd5810b67c..66ae20143b6f 100644
--- a/arch/arm/mach-k3/Makefile
+++ b/arch/arm/mach-k3/Makefile
@@ -6,9 +6,11 @@
 obj-$(CONFIG_ARM64) += arm64/
 obj-$(CONFIG_CPU_V7R) += r5/
 obj-$(CONFIG_OF_LIBFDT) += common_fdt.o
+
 obj-y += common.o security.o k3-ddr.o
 obj-$(CONFIG_SOC_K3_AM62A7) += am62ax/
 obj-$(CONFIG_SOC_K3_AM62P5) += am62px/
+obj-$(CONFIG_SOC_K3_AM62L3) += am62lx/
 obj-$(CONFIG_SOC_K3_AM625) += am62x/
 obj-$(CONFIG_SOC_K3_AM642) += am64x/
 obj-$(CONFIG_SOC_K3_AM654) += am65x/
diff --git a/arch/arm/mach-k3/am62lx/Kconfig b/arch/arm/mach-k3/am62lx/Kconfig
new file mode 100644
index 000000000000..d9609a91993a
--- /dev/null
+++ b/arch/arm/mach-k3/am62lx/Kconfig
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+#
+
+if SOC_K3_AM62L3
+
+choice
+       prompt "TI K3 AM62Lx based boards"
+       optional
+
+config TARGET_AM62L3_EVM
+       bool "TI K3 based AM62L5 EVM"
+       select ARM64
+       select BINMAN
+       select OF_UPSTREAM
+       select OF_SYSTEM_SETUP
+
+endchoice
+
+source "board/ti/am62lx/Kconfig"
+
+endif
diff --git a/arch/arm/mach-k3/am62lx/Makefile b/arch/arm/mach-k3/am62lx/Makefile
new file mode 100644
index 000000000000..c97ffe27492f
--- /dev/null
+++ b/arch/arm/mach-k3/am62lx/Makefile
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+#
+obj-$(CONFIG_OF_SYSTEM_SETUP) += am62l3_fdt.o
+obj-$(CONFIG_SPL_BUILD) += am62l3_init.o
+obj-y += boot.o
diff --git a/arch/arm/mach-k3/am62lx/am62l3_fdt.c 
b/arch/arm/mach-k3/am62lx/am62l3_fdt.c
new file mode 100644
index 000000000000..da8c2d18ba86
--- /dev/null
+++ b/arch/arm/mach-k3/am62lx/am62l3_fdt.c
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+#include <asm/arch/k3-common-fdt.h>
+#include <fdt_support.h>
+
+int ft_system_setup(void *blob, struct bd_info *bd)
+{
+       return fdt_fixup_reserved(blob);
+}
diff --git a/arch/arm/mach-k3/am62lx/am62l3_init.c 
b/arch/arm/mach-k3/am62lx/am62l3_init.c
new file mode 100644
index 000000000000..ee2a50f808d0
--- /dev/null
+++ b/arch/arm/mach-k3/am62lx/am62l3_init.c
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * AM62Lx: SoC specific initialization
+ *
+ * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+#include <asm/arch/hardware.h>
+#include <asm/io.h>
+#include <dm.h>
+#include <dm/uclass-internal.h>
+#include <hang.h>
+#include <spl.h>
+
+#include "../common.h"
+
+void board_init_f(ulong dummy)
+{
+       int ret;
+
+       ret = spl_early_init();
+       if (ret) {
+               debug("spl_early_init() failed: %d\n", ret);
+               hang();
+       }
+
+       preloader_console_init();
+       debug("am62lx_init: %s done\n", __func__);
+}
+
+u32 spl_boot_device(void)
+{
+       return get_boot_device();
+}
+
+u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
+{
+       u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT);
+       u32 bootmode = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_MASK) >>
+               MAIN_DEVSTAT_PRIMARY_BOOTMODE_SHIFT;
+       u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
+               MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
+
+       switch (bootmode) {
+       case BOOT_DEVICE_EMMC:
+               if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))
+                       return MMCSD_MODE_EMMCBOOT;
+               if (IS_ENABLED(CONFIG_SPL_FS_FAT) || 
IS_ENABLED(CONFIG_SPL_FS_EXT4))
+                       return MMCSD_MODE_FS;
+               return MMCSD_MODE_EMMCBOOT;
+       case BOOT_DEVICE_MMC:
+               if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK)
+                       return MMCSD_MODE_RAW;
+       default:
+               return MMCSD_MODE_FS;
+       }
+}
+
diff --git a/arch/arm/mach-k3/am62lx/boot.c b/arch/arm/mach-k3/am62lx/boot.c
new file mode 100644
index 000000000000..a0d3387cb40d
--- /dev/null
+++ b/arch/arm/mach-k3/am62lx/boot.c
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: GPL-2.0+
+#include <asm/io.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/am62l_spl.h>
+
+static u32 get_backup_bootmedia(u32 devstat)
+{
+       u32 bootmode = (devstat & MAIN_DEVSTAT_BACKUP_BOOTMODE_MASK) >>
+                               MAIN_DEVSTAT_BACKUP_BOOTMODE_SHIFT;
+       u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_MASK) >>
+                               MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_SHIFT;
+
+       switch (bootmode) {
+       case BACKUP_BOOT_DEVICE_UART:
+               return BOOT_DEVICE_UART;
+
+       case BACKUP_BOOT_DEVICE_MMC:
+               if (bootmode_cfg)
+                       return BOOT_DEVICE_MMC2;
+               return BOOT_DEVICE_MMC1;
+
+       case BACKUP_BOOT_DEVICE_SPI:
+               return BOOT_DEVICE_SPI;
+
+       case BACKUP_BOOT_DEVICE_DFU:
+               if (bootmode_cfg & MAIN_DEVSTAT_BACKUP_USB_MODE_MASK)
+                       return BOOT_DEVICE_USB;
+               return BOOT_DEVICE_DFU;
+       };
+
+       return BOOT_DEVICE_RAM;
+}
+
+static u32 get_primary_bootmedia(u32 devstat)
+{
+       u32 bootmode = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_MASK) >>
+                               MAIN_DEVSTAT_PRIMARY_BOOTMODE_SHIFT;
+       u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
+                               MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
+
+       switch (bootmode) {
+       case BOOT_DEVICE_XSPI_FAST:
+       case BOOT_DEVICE_XSPI:
+       case BOOT_DEVICE_OSPI:
+       case BOOT_DEVICE_QSPI:
+       case BOOT_DEVICE_SPI:
+               return BOOT_DEVICE_SPI;
+
+       case BOOT_DEVICE_EMMC:
+               return BOOT_DEVICE_MMC1;
+
+       case BOOT_DEVICE_SPI_NAND:
+               return BOOT_DEVICE_SPI_NAND;
+
+       case BOOT_DEVICE_MMC:
+               if ((bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_PORT_MASK) >>
+                               MAIN_DEVSTAT_PRIMARY_MMC_PORT_SHIFT)
+                       return BOOT_DEVICE_MMC2;
+               return BOOT_DEVICE_MMC1;
+
+       case BOOT_DEVICE_DFU:
+               if ((bootmode_cfg & MAIN_DEVSTAT_PRIMARY_USB_MODE_MASK) >>
+                   MAIN_DEVSTAT_PRIMARY_USB_MODE_SHIFT)
+                       return BOOT_DEVICE_USB;
+               return BOOT_DEVICE_DFU;
+
+       case BOOT_DEVICE_NOBOOT:
+               return BOOT_DEVICE_RAM;
+       }
+
+       return bootmode;
+}
+
+u32 get_boot_device(void)
+{
+       u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT);
+       u32 bootmode = *(u32 *)(K3_BOOT_PARAM_TABLE_INDEX_OCRAM);
+
+       if (bootmode == K3_PRIMARY_BOOTMODE)
+               return get_primary_bootmedia(devstat);
+       return get_backup_bootmedia(devstat);
+}
diff --git a/arch/arm/mach-k3/am62lx/schema.yaml 
b/arch/arm/mach-k3/am62lx/schema.yaml
new file mode 100644
index 000000000000..c1dcd9ced403
--- /dev/null
+++ b/arch/arm/mach-k3/am62lx/schema.yaml
@@ -0,0 +1,427 @@
+# SPDX-License-Identifier: GPL-2.0-only OR MIT
+#
+# Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+#
+# Config schema for TI AM62L devices
+#
+
+---
+
+definitions:
+    u8:
+        type: integer
+        minimum: 0
+        maximum: 0xff
+    u16:
+        type: integer
+        minimum: 0
+        maximum: 0xffff
+    u32:
+        type: integer
+        minimum: 0
+        maximum: 0xffffffff
+
+
+
+type: object
+properties:
+    pm-cfg:
+        type: object
+        properties:
+            rev:
+                type: object
+                properties:
+                    boardcfg_abi_maj:
+                        $ref: "#/definitions/u8"
+                    boardcfg_abi_min:
+                        $ref: "#/definitions/u8"
+    board-cfg:
+        type: object
+        properties:
+            rev:
+                type: object
+                properties:
+                    boardcfg_abi_maj:
+                        $ref: "#/definitions/u8"
+                    boardcfg_abi_min:
+                        $ref: "#/definitions/u8"
+            control:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    main_isolation_enable:
+                        $ref: "#/definitions/u8"
+                    main_isolation_hostid:
+                        $ref: "#/definitions/u16"
+
+            bm_writer_cfg:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    allowed_host:
+                        $ref : "#/definitions/u8"
+
+            reserved:
+                type: array
+                minItems: 7
+                maxItems: 7
+                items:
+                    $ref: "#/definitions/u8"
+
+            debug_cfg:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    trace_dst_enables:
+                        $ref: "#/definitions/u16"
+                    trace_src_enables:
+                        $ref: "#/definitions/u16"
+
+    sec-cfg:
+        type: object
+        properties:
+            rev:
+                type: object
+                properties:
+                    boardcfg_abi_maj:
+                        $ref: "#/definitions/u8"
+                    boardcfg_abi_min:
+                        $ref: "#/definitions/u8"
+
+            processor_acl_list:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    proc_acl_entries:
+                        type: array
+                        minItems: 32
+                        maxItems: 32
+                        items:
+                            type: object
+                            properties:
+                                processor_id:
+                                    $ref: "#/definitions/u8"
+                                proc_access_master:
+                                    $ref: "#/definitions/u8"
+                                proc_access_secondary:
+                                    type: array
+                                    minItems: 3
+                                    maxItems: 3
+                                    items:
+                                        $ref: "#/definitions/u8"
+            host_hierarchy:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    host_hierarchy_entries:
+                        type: array
+                        minItems: 32
+                        maxItems: 32
+                        items:
+                            type: object
+                            properties:
+                                host_id:
+                                    $ref: "#/definitions/u8"
+                                supervisor_host_id:
+                                    $ref: "#/definitions/u8"
+
+            otp_config:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    otp_entry:
+                        type: array
+                        minItems: 32
+                        maxItems: 32
+                        items:
+                            type: object
+                            properties:
+                                host_id:
+                                    $ref: "#/definitions/u8"
+                                host_perms:
+                                    $ref: "#/definitions/u8"
+                    write_host_id:
+                        $ref: "#/definitions/u8"
+
+            dkek_config:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    allowed_hosts:
+                        type: array
+                        minItems: 4
+                        maxItems: 4
+                        items:
+                            $ref: "#/definitions/u8"
+                    allow_dkek_export_tisci:
+                        $ref: "#/definitions/u8"
+                    rsvd:
+                        type: array
+                        minItems: 3
+                        maxItems: 3
+                        items:
+                            $ref: "#/definitions/u8"
+
+            sa2ul_cfg:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    rsvd:
+                        type: array
+                        minItems: 2
+                        maxItems: 4
+                        items:
+                            $ref: "#/definitions/u8"
+                    enable_saul_psil_global_config_writes:
+                        $ref: "#/definitions/u8"
+                    auth_resource_owner:
+                        $ref: "#/definitions/u8"
+
+            sec_dbg_config:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    allow_jtag_unlock:
+                        $ref: "#/definitions/u8"
+                    allow_wildcard_unlock:
+                        $ref: "#/definitions/u8"
+                    allowed_debug_level_rsvd:
+                        $ref: "#/definitions/u8"
+                    rsvd:
+                        $ref: "#/definitions/u8"
+                    min_cert_rev:
+                        $ref: "#/definitions/u32"
+                    jtag_unlock_hosts:
+                        type: array
+                        minItems: 4
+                        maxItems: 4
+                        items:
+                            $ref: "#/definitions/u8"
+
+
+            sec_handover_cfg:
+                type: object
+                properties:
+                    subhdr:
+                        type: object
+                        properties:
+                            magic:
+                                $ref: "#/definitions/u16"
+                            size:
+                                $ref: "#/definitions/u16"
+                    handover_msg_sender:
+                        $ref: "#/definitions/u8"
+                    handover_to_host_id:
+                        $ref: "#/definitions/u8"
+                    rsvd:
+                        type: array
+                        minItems: 4
+                        maxItems: 4
+                        items:
+                            $ref: "#/definitions/u8"
+
+    rm-cfg:
+        type: object
+        properties:
+            rm_boardcfg:
+                type: object
+                properties:
+                    rev:
+                        type: object
+                        properties:
+                            boardcfg_abi_maj:
+                                $ref: "#/definitions/u8"
+                            boardcfg_abi_min:
+                                $ref: "#/definitions/u8"
+
+                    host_cfg:
+                        type: object
+                        properties:
+                            subhdr:
+                                type: object
+                                properties:
+                                    magic:
+                                        $ref: "#/definitions/u16"
+                                    size:
+                                        $ref: "#/definitions/u16"
+                            host_cfg_entries:
+                                type: array
+                                minItems: 0
+                                maxItems: 32
+                                items:
+                                    type: object
+                                    properties:
+                                        host_id:
+                                            $ref: "#/definitions/u8"
+                                        allowed_atype:
+                                            $ref: "#/definitions/u8"
+                                        allowed_qos:
+                                            $ref: "#/definitions/u16"
+                                        allowed_orderid:
+                                            $ref: "#/definitions/u32"
+                                        allowed_priority:
+                                            $ref: "#/definitions/u16"
+                                        allowed_sched_priority:
+                                            $ref: "#/definitions/u8"
+                    resasg:
+                        type: object
+                        properties:
+                            subhdr:
+                                type: object
+                                properties:
+                                    magic:
+                                        $ref: "#/definitions/u16"
+                                    size:
+                                        $ref: "#/definitions/u16"
+                            resasg_entries_size:
+                                        $ref: "#/definitions/u16"
+                            reserved:
+                                        $ref: "#/definitions/u16"
+
+            resasg_entries:
+                type: array
+                minItems: 0
+                maxItems: 468
+                items:
+                    type: object
+                    properties:
+                        start_resource:
+                            $ref: "#/definitions/u16"
+                        num_resource:
+                            $ref: "#/definitions/u16"
+                        type:
+                            $ref: "#/definitions/u16"
+                        host_id:
+                            $ref: "#/definitions/u8"
+                        reserved:
+                            $ref: "#/definitions/u8"
+
+    tifs-rm-cfg:
+        type: object
+        properties:
+            rm_boardcfg:
+                type: object
+                properties:
+                    rev:
+                        type: object
+                        properties:
+                            boardcfg_abi_maj:
+                                $ref: "#/definitions/u8"
+                            boardcfg_abi_min:
+                                $ref: "#/definitions/u8"
+
+                    host_cfg:
+                        type: object
+                        properties:
+                            subhdr:
+                                type: object
+                                properties:
+                                    magic:
+                                        $ref: "#/definitions/u16"
+                                    size:
+                                        $ref: "#/definitions/u16"
+                            host_cfg_entries:
+                                type: array
+                                minItems: 0
+                                maxItems: 32
+                                items:
+                                    type: object
+                                    properties:
+                                        host_id:
+                                            $ref: "#/definitions/u8"
+                                        allowed_atype:
+                                            $ref: "#/definitions/u8"
+                                        allowed_qos:
+                                            $ref: "#/definitions/u16"
+                                        allowed_orderid:
+                                            $ref: "#/definitions/u32"
+                                        allowed_priority:
+                                            $ref: "#/definitions/u16"
+                                        allowed_sched_priority:
+                                            $ref: "#/definitions/u8"
+                    resasg:
+                        type: object
+                        properties:
+                            subhdr:
+                                type: object
+                                properties:
+                                    magic:
+                                        $ref: "#/definitions/u16"
+                                    size:
+                                        $ref: "#/definitions/u16"
+                            resasg_entries_size:
+                                        $ref: "#/definitions/u16"
+                            reserved:
+                                        $ref: "#/definitions/u16"
+
+            resasg_entries:
+                type: array
+                minItems: 0
+                maxItems: 468
+                items:
+                    type: object
+                    properties:
+                        start_resource:
+                            $ref: "#/definitions/u16"
+                        num_resource:
+                            $ref: "#/definitions/u16"
+                        type:
+                            $ref: "#/definitions/u16"
+                        host_id:
+                            $ref: "#/definitions/u8"
+                        reserved:
+                            $ref: "#/definitions/u8"
diff --git a/arch/arm/mach-k3/include/mach/am62l_hardware.h 
b/arch/arm/mach-k3/include/mach/am62l_hardware.h
new file mode 100644
index 000000000000..7791511ff2a2
--- /dev/null
+++ b/arch/arm/mach-k3/include/mach/am62l_hardware.h
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * AM62Lx SoC definitions, structures etc.
+ *
+ * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+#ifndef __ASM_ARCH_AM62L_HARDWARE_H
+#define __ASM_ARCH_AM62L_HARDWARE_H
+
+#include <config.h>
+#ifndef __ASSEMBLY__
+#include <linux/bitops.h>
+#endif
+
+#define CTRL_MMR0_BASE                         0x00100000
+#define WKUP_CTRL_MMR0_BASE                    0x43000000
+#define WKUP_CTRL_MMR1_BASE                    0x43010000
+
+#define CTRLMMR_MAIN_DEVSTAT                   (WKUP_CTRL_MMR1_BASE + 0x30)
+#define MAIN_DEVSTAT_PRIMARY_BOOTMODE_MASK     GENMASK(6, 3)
+#define MAIN_DEVSTAT_PRIMARY_BOOTMODE_SHIFT    3
+#define MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK GENMASK(9, 7)
+#define MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT        7
+#define MAIN_DEVSTAT_BACKUP_BOOTMODE_MASK      GENMASK(12, 10)
+#define MAIN_DEVSTAT_BACKUP_BOOTMODE_SHIFT     10
+#define MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_MASK  BIT(13)
+#define MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_SHIFT 13
+
+/* Primary Bootmode MMC Config macros */
+#define MAIN_DEVSTAT_PRIMARY_MMC_PORT_MASK     BIT(2)
+#define MAIN_DEVSTAT_PRIMARY_MMC_PORT_SHIFT    2
+#define MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK   BIT(0)
+#define MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_SHIFT  0
+
+/* Primary Bootmode USB Config macros */
+#define MAIN_DEVSTAT_PRIMARY_USB_MODE_SHIFT    1
+#define MAIN_DEVSTAT_PRIMARY_USB_MODE_MASK     BIT(1)
+
+/* Backup Bootmode USB Config macros */
+#define MAIN_DEVSTAT_BACKUP_USB_MODE_MASK      BIT(0)
+
+/* address boot rom leaves its boot structure */
+#define K3_BOOT_PARAM_TABLE_INDEX_OCRAM                0x70816e70
+
+static const u32 put_core_ids[] = {};
+
+#endif /* __ASM_ARCH_AM62L_HARDWARE_H */
diff --git a/arch/arm/mach-k3/include/mach/am62l_spl.h 
b/arch/arm/mach-k3/include/mach/am62l_spl.h
new file mode 100644
index 000000000000..52d702d179c6
--- /dev/null
+++ b/arch/arm/mach-k3/include/mach/am62l_spl.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+#ifndef _ASM_ARCH_AM62L_SPL_H_
+#define _ASM_ARCH_AM62L_SPL_H_
+
+/* Primary BootMode devices */
+#define BOOT_DEVICE_SPI_NAND           0x00
+#define BOOT_DEVICE_RAM                        0xFF
+#define BOOT_DEVICE_OSPI               0x01
+#define BOOT_DEVICE_QSPI               0x02
+#define BOOT_DEVICE_SPI                        0x03
+#define BOOT_DEVICE_UART               0x07
+#define BOOT_DEVICE_MMC                        0x08
+#define BOOT_DEVICE_EMMC               0x09
+#define BOOT_DEVICE_USB                        0x0A
+#define BOOT_DEVICE_DFU                        0x0A
+#define BOOT_DEVICE_GPMC_NAND          0x0B
+#define BOOT_DEVICE_XSPI_FAST          0x0D
+#define BOOT_DEVICE_XSPI               0x0E
+#define BOOT_DEVICE_NOBOOT             0x0F
+
+/* U-Boot used aliases */
+#define BOOT_DEVICE_MMC2               BOOT_DEVICE_MMC
+#define BOOT_DEVICE_MMC1               BOOT_DEVICE_EMMC
+/* Invalid Choices for the AM62Lx */
+#define BOOT_DEVICE_MMC2_2             0x1F
+#define BOOT_DEVICE_ETHERNET           0x1F
+
+/* Backup BootMode devices */
+#define BACKUP_BOOT_DEVICE_USB         0x01
+#define BACKUP_BOOT_DEVICE_DFU         0x01
+#define BACKUP_BOOT_DEVICE_UART                0x03
+#define BACKUP_BOOT_DEVICE_MMC         0x05
+#define BACKUP_BOOT_DEVICE_SPI         0x06
+
+#define K3_PRIMARY_BOOTMODE            0x0
+
+#endif /* _ASM_ARCH_AM62L_SPL_H_ */
diff --git a/arch/arm/mach-k3/include/mach/hardware.h 
b/arch/arm/mach-k3/include/mach/hardware.h
index 6b86f6ed12e6..cbf43deaa3fc 100644
--- a/arch/arm/mach-k3/include/mach/hardware.h
+++ b/arch/arm/mach-k3/include/mach/hardware.h
@@ -16,6 +16,10 @@
 #include "am62a_hardware.h"
 #endif
 
+#ifdef CONFIG_SOC_K3_AM62L3
+#include "am62l_hardware.h"
+#endif
+
 #ifdef CONFIG_SOC_K3_AM62P5
 #include "am62p_hardware.h"
 #endif
diff --git a/arch/arm/mach-k3/include/mach/spl.h 
b/arch/arm/mach-k3/include/mach/spl.h
index a47441ae6a59..ff0b5d41b9f1 100644
--- a/arch/arm/mach-k3/include/mach/spl.h
+++ b/arch/arm/mach-k3/include/mach/spl.h
@@ -46,4 +46,8 @@
 #include "j722s_spl.h"
 #endif
 
+#ifdef CONFIG_SOC_K3_AM62L3
+#include "am62l_spl.h"
+#endif
+
 #endif /* _ASM_ARCH_SPL_H_ */
diff --git a/include/configs/am62l3_evm.h b/include/configs/am62l3_evm.h
new file mode 100644
index 000000000000..181d450daf10
--- /dev/null
+++ b/include/configs/am62l3_evm.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Configuration header file for K3 AM62L SoC family
+ *
+ * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+ *
+ */
+
+#ifndef __CONFIG_AM62L3_EVM_H
+#define __CONFIG_AM62L3_EVM_H
+
+#include <configs/ti_armv7_common.h>
+
+#endif /* __CONFIG_AM62L3_EVM_H */

-- 
2.54.0


Reply via email to