diff options
Diffstat (limited to 'arch/arm/mach-k3')
-rw-r--r-- | arch/arm/mach-k3/Kconfig | 43 | ||||
-rw-r--r-- | arch/arm/mach-k3/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-k3/am65x/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mach-k3/common_fdt.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-k3/include/mach/hardware.h | 10 | ||||
-rw-r--r-- | arch/arm/mach-k3/include/mach/k3-ddr.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-k3/include/mach/spl.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-k3/j7200/Kconfig | 36 | ||||
-rw-r--r-- | arch/arm/mach-k3/j7200/Makefile | 7 | ||||
-rw-r--r-- | arch/arm/mach-k3/j721e/Kconfig | 21 | ||||
-rw-r--r-- | arch/arm/mach-k3/j721e/j721e_init.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-k3/j722s/Kconfig | 18 | ||||
-rw-r--r-- | arch/arm/mach-k3/j722s/j722s_init.c | 32 | ||||
-rw-r--r-- | arch/arm/mach-k3/j784s4/Kconfig | 18 | ||||
-rw-r--r-- | arch/arm/mach-k3/r5/Makefile | 2 |
15 files changed, 170 insertions, 39 deletions
diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig index a3ac490f677..1b8c0b1eb96 100644 --- a/arch/arm/mach-k3/Kconfig +++ b/arch/arm/mach-k3/Kconfig @@ -22,6 +22,9 @@ config SOC_K3_AM654 config SOC_K3_J721E bool "TI's K3 based J721E SoC Family Support" +config SOC_K3_J7200 + bool "TI's K3 based J7200 SoC Family Support" + config SOC_K3_J721S2 bool "TI's K3 based J721S2 SoC Family Support" @@ -33,18 +36,13 @@ config SOC_K3_J784S4 endchoice -if SOC_K3_J721E -config SOC_K3_J721E_J7200 - bool "TI's K3 based J7200 SoC variant Family Support" -endif - config SYS_SOC default "k3" config SYS_K3_NON_SECURE_MSRAM_SIZE hex default 0x80000 if SOC_K3_AM654 - default 0x100000 if SOC_K3_J721E || SOC_K3_J721S2 || SOC_K3_J784S4 + default 0x100000 if SOC_K3_J721E || SOC_K3_J7200 || SOC_K3_J721S2 || SOC_K3_J784S4 default 0x1c0000 if SOC_K3_AM642 default 0x3c000 if SOC_K3_AM625 || SOC_K3_AM62A7 help @@ -56,7 +54,7 @@ config SYS_K3_NON_SECURE_MSRAM_SIZE config SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE hex default 0x58000 if SOC_K3_AM654 - default 0xc0000 if SOC_K3_J721E || SOC_K3_J721S2 || SOC_K3_J784S4 + default 0xc0000 if SOC_K3_J721E || SOC_K3_J7200 || SOC_K3_J721S2 || SOC_K3_J784S4 default 0x180000 if SOC_K3_AM642 default 0x38000 if SOC_K3_AM625 || SOC_K3_AM62A7 help @@ -66,21 +64,21 @@ config SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE config SYS_K3_MCU_SCRATCHPAD_BASE hex default 0x40280000 if SOC_K3_AM654 - default 0x41cff9fc if SOC_K3_J721E || SOC_K3_J721S2 || SOC_K3_J784S4 + default 0x41cff9fc if SOC_K3_J721E || SOC_K3_J7200 || SOC_K3_J721S2 || SOC_K3_J784S4 help Describes the base address of MCU Scratchpad RAM. config SYS_K3_MCU_SCRATCHPAD_SIZE hex default 0x200 if SOC_K3_AM654 - default 0x200 if SOC_K3_J721E || SOC_K3_J721S2 || SOC_K3_J784S4 + default 0x200 if SOC_K3_J721E || SOC_K3_J7200 || SOC_K3_J721S2 || SOC_K3_J784S4 help Describes the size of MCU Scratchpad RAM. config SYS_K3_BOOT_PARAM_TABLE_INDEX hex default 0x41c7fbfc if SOC_K3_AM654 - default 0x41cffbfc if SOC_K3_J721E + 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 @@ -159,6 +157,30 @@ config K3_X509_SWRV config NR_DRAM_BANKS default 2 +config K3_REMOTEPROC_R5F + bool "Enable K3 Remoteproc driver for R5F" + depends on ARM64 + imply REMOTEPROC_TI_K3_R5F + default y if (SOC_K3_AM62A7 || SOC_K3_AM654 || SOC_K3_J721E || SOC_K3_J784S4 || SOC_K3_J721S2 || SOC_K3_J722S || SOC_K3_AM62P5 || SOC_K3_AM642) + +config K3_REMOTEPROC_DSP + bool "Enable K3 Remoteproc driver for DSP" + depends on ARM64 + imply REMOTEPROC_TI_K3_DSP + default y if (SOC_K3_AM62A7 || SOC_K3_J721E || SOC_K3_J784S4 || SOC_K3_J721S2 || SOC_K3_J722S) + +config K3_REMOTEPROC_M4F + bool "Enable K3 Remoteproc driver for M4F" + depends on ARM64 + imply REMOTEPROC_TI_K3_M4F + default y if (SOC_K3_AM625 || SOC_K3_AM642) + +config K3_REMOTEPROC_PRU + bool "Enable K3 Remoteproc driver for PRU" + depends on ARM64 + imply REMOTEPROC_TI_PRU + default y if (SOC_K3_AM642 || SOC_K3_AM654) + if CPU_V7R source "arch/arm/mach-k3/r5/Kconfig" endif @@ -169,6 +191,7 @@ source "arch/arm/mach-k3/am62x/Kconfig" source "arch/arm/mach-k3/am62ax/Kconfig" source "arch/arm/mach-k3/am62px/Kconfig" source "arch/arm/mach-k3/j721e/Kconfig" +source "arch/arm/mach-k3/j7200/Kconfig" source "arch/arm/mach-k3/j721s2/Kconfig" source "arch/arm/mach-k3/j722s/Kconfig" source "arch/arm/mach-k3/j784s4/Kconfig" diff --git a/arch/arm/mach-k3/Makefile b/arch/arm/mach-k3/Makefile index 5ce7fc62d80..b2fd5810b67 100644 --- a/arch/arm/mach-k3/Makefile +++ b/arch/arm/mach-k3/Makefile @@ -13,6 +13,7 @@ obj-$(CONFIG_SOC_K3_AM625) += am62x/ obj-$(CONFIG_SOC_K3_AM642) += am64x/ obj-$(CONFIG_SOC_K3_AM654) += am65x/ obj-$(CONFIG_SOC_K3_J721E) += j721e/ +obj-$(CONFIG_SOC_K3_J7200) += j7200/ obj-$(CONFIG_SOC_K3_J721S2) += j721s2/ obj-$(CONFIG_SOC_K3_J722S) += j722s/ obj-$(CONFIG_SOC_K3_J784S4) += j784s4/ diff --git a/arch/arm/mach-k3/am65x/Kconfig b/arch/arm/mach-k3/am65x/Kconfig index 72a8298aebf..056ae118c9e 100644 --- a/arch/arm/mach-k3/am65x/Kconfig +++ b/arch/arm/mach-k3/am65x/Kconfig @@ -35,6 +35,8 @@ config TARGET_IOT2050_A53 select BOARD_LATE_INIT select SYS_DISABLE_DCACHE_OPS select BINMAN + select SYSINFO + select SPL_SYSINFO if SPL help This builds U-Boot for the IOT2050 devices. diff --git a/arch/arm/mach-k3/common_fdt.c b/arch/arm/mach-k3/common_fdt.c index 4a016711566..361b0c0b31b 100644 --- a/arch/arm/mach-k3/common_fdt.c +++ b/arch/arm/mach-k3/common_fdt.c @@ -122,10 +122,8 @@ int fdt_fixup_reserved(void *blob, const char *name, /* Find reserved-memory */ nodeoffset = fdt_subnode_offset(blob, 0, "reserved-memory"); - if (nodeoffset < 0) { - debug("Could not find reserved-memory node\n"); - return 0; - } + if (nodeoffset < 0) + goto add_carveout; /* Find existing matching subnode and remove it */ fdt_for_each_subnode(subnode, blob, nodeoffset) { @@ -154,6 +152,7 @@ int fdt_fixup_reserved(void *blob, const char *name, } } +add_carveout: struct fdt_memory carveout = { .start = new_address, .end = new_address + new_size - 1, diff --git a/arch/arm/mach-k3/include/mach/hardware.h b/arch/arm/mach-k3/include/mach/hardware.h index b191d53a0f5..fc7bee4d00b 100644 --- a/arch/arm/mach-k3/include/mach/hardware.h +++ b/arch/arm/mach-k3/include/mach/hardware.h @@ -32,6 +32,10 @@ #include "j721e_hardware.h" #endif +#ifdef CONFIG_SOC_K3_J7200 +#include "j721e_hardware.h" +#endif + #ifdef CONFIG_SOC_K3_J721S2 #include "j721s2_hardware.h" #endif @@ -62,6 +66,12 @@ #define JTAG_ID_PARTNO_J722S 0xbba0 #define JTAG_ID_PARTNO_J784S4 0xbb80 +#define CTRLMMR_WKUP_JTAG_DEVICE_ID (WKUP_CTRL_MMR0_BASE + 0x18) +#define JTAG_DEV_J742S2_PKG_MASK GENMASK(2, 0) +#define JTAG_DEV_J742S2_PKG_SHIFT 0 + +#define JTAG_ID_PKG_J742S2 0x7 + #define K3_SOC_ID(id, ID) \ static inline bool soc_is_##id(void) \ { \ diff --git a/arch/arm/mach-k3/include/mach/k3-ddr.h b/arch/arm/mach-k3/include/mach/k3-ddr.h index 95496e1c59d..39e6725bb9b 100644 --- a/arch/arm/mach-k3/include/mach/k3-ddr.h +++ b/arch/arm/mach-k3/include/mach/k3-ddr.h @@ -6,6 +6,8 @@ #ifndef _K3_DDR_H_ #define _K3_DDR_H_ +#include <spl.h> + int dram_init(void); int dram_init_banksize(void); diff --git a/arch/arm/mach-k3/include/mach/spl.h b/arch/arm/mach-k3/include/mach/spl.h index ac1a34502ed..a47441ae6a5 100644 --- a/arch/arm/mach-k3/include/mach/spl.h +++ b/arch/arm/mach-k3/include/mach/spl.h @@ -14,6 +14,10 @@ #include "j721e_spl.h" #endif +#ifdef CONFIG_SOC_K3_J7200 +#include "j721e_spl.h" +#endif + #ifdef CONFIG_SOC_K3_J721S2 #include "j721s2_spl.h" #endif diff --git a/arch/arm/mach-k3/j7200/Kconfig b/arch/arm/mach-k3/j7200/Kconfig new file mode 100644 index 00000000000..399daad8767 --- /dev/null +++ b/arch/arm/mach-k3/j7200/Kconfig @@ -0,0 +1,36 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/ +# Andrew Davis <afd@ti.com> + +if SOC_K3_J7200 + +choice + prompt "K3 J7200 based boards" + optional + +config TARGET_J7200_A72_EVM + bool "TI K3 based J7200 EVM running on A72" + select ARM64 + select BOARD_LATE_INIT + imply TI_I2C_BOARD_DETECT + select SYS_DISABLE_DCACHE_OPS + select BINMAN + +config TARGET_J7200_R5_EVM + bool "TI K3 based J7200 EVM running on R5" + select CPU_V7R + select SYS_THUMB_BUILD + select K3_LOAD_SYSFW + select RAM + select SPL_RAM + select K3_DDRSS + select BINMAN + imply SYS_K3_SPL_ATF + imply TI_I2C_BOARD_DETECT + +endchoice + +source "board/ti/j7200/Kconfig" + +endif diff --git a/arch/arm/mach-k3/j7200/Makefile b/arch/arm/mach-k3/j7200/Makefile new file mode 100644 index 00000000000..6d3ff36e363 --- /dev/null +++ b/arch/arm/mach-k3/j7200/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/ +# Andrew Davis <afd@ti.com> + +obj-$(CONFIG_OF_SYSTEM_SETUP) += ../j721e/j721e_fdt.o +obj-$(CONFIG_XPL_BUILD) += ../j721e/j721e_init.o diff --git a/arch/arm/mach-k3/j721e/Kconfig b/arch/arm/mach-k3/j721e/Kconfig index 0761b82b15a..4d01f2c8af2 100644 --- a/arch/arm/mach-k3/j721e/Kconfig +++ b/arch/arm/mach-k3/j721e/Kconfig @@ -29,27 +29,6 @@ config TARGET_J721E_R5_EVM imply SYS_K3_SPL_ATF imply TI_I2C_BOARD_DETECT -config TARGET_J7200_A72_EVM - bool "TI K3 based J7200 EVM running on A72" - select ARM64 - select SOC_K3_J721E_J7200 - select BOARD_LATE_INIT - imply TI_I2C_BOARD_DETECT - select SYS_DISABLE_DCACHE_OPS - select BINMAN - -config TARGET_J7200_R5_EVM - bool "TI K3 based J7200 EVM running on R5" - select CPU_V7R - select SYS_THUMB_BUILD - select K3_LOAD_SYSFW - select RAM - select SPL_RAM - select K3_DDRSS - select BINMAN - imply SYS_K3_SPL_ATF - imply TI_I2C_BOARD_DETECT - endchoice source "board/beagle/beagleboneai64/Kconfig" diff --git a/arch/arm/mach-k3/j721e/j721e_init.c b/arch/arm/mach-k3/j721e/j721e_init.c index 7e2d2c16b45..f31c20f7ed6 100644 --- a/arch/arm/mach-k3/j721e/j721e_init.c +++ b/arch/arm/mach-k3/j721e/j721e_init.c @@ -48,7 +48,7 @@ #ifdef CONFIG_K3_LOAD_SYSFW struct fwl_data cbass_hc_cfg0_fwls[] = { -#if defined(CONFIG_TARGET_J721E_R5_EVM) +#if defined(CONFIG_SOC_K3_J721E) { "PCIE0_CFG", 2560, 8 }, { "PCIE1_CFG", 2561, 8 }, { "USB3SS0_CORE", 2568, 4 }, @@ -57,11 +57,11 @@ struct fwl_data cbass_hc_cfg0_fwls[] = { { "UFS_HCI0_CFG", 2580, 4 }, { "SERDES0", 2584, 1 }, { "SERDES1", 2585, 1 }, -#elif defined(CONFIG_TARGET_J7200_R5_EVM) +#elif defined(CONFIG_SOC_K3_J7200) { "PCIE1_CFG", 2561, 7 }, #endif }, cbass_hc0_fwls[] = { -#if defined(CONFIG_TARGET_J721E_R5_EVM) +#if defined(CONFIG_SOC_K3_J721E) { "PCIE0_HP", 2528, 24 }, { "PCIE0_LP", 2529, 24 }, { "PCIE1_HP", 2530, 24 }, diff --git a/arch/arm/mach-k3/j722s/Kconfig b/arch/arm/mach-k3/j722s/Kconfig index 39d38ea5cf5..fe76d77e58a 100644 --- a/arch/arm/mach-k3/j722s/Kconfig +++ b/arch/arm/mach-k3/j722s/Kconfig @@ -26,8 +26,26 @@ config TARGET_J722S_R5_EVM select BINMAN imply SYS_K3_SPL_ATF +config TARGET_J722S_A53_BEAGLEY_AI + bool "BeagleBoard.org BeagleY-AI running on A53" + select ARM64 + select BINMAN + select OF_SYSTEM_SETUP + +config TARGET_J722S_R5_BEAGLEY_AI + bool "BeagleBoard.org BeagleY-AI running on R5" + select CPU_V7R + select SYS_THUMB_BUILD + select K3_LOAD_SYSFW + select RAM + select SPL_RAM + select K3_DDRSS + select BINMAN + imply SYS_K3_SPL_ATF + endchoice source "board/ti/j722s/Kconfig" +source "board/beagle/beagley-ai/Kconfig" endif diff --git a/arch/arm/mach-k3/j722s/j722s_init.c b/arch/arm/mach-k3/j722s/j722s_init.c index f8c5c2a5edc..af211377e7c 100644 --- a/arch/arm/mach-k3/j722s/j722s_init.c +++ b/arch/arm/mach-k3/j722s/j722s_init.c @@ -27,6 +27,9 @@ struct fwl_data cbass_main_fwls[] = { u32 bootindex __section(".data"); static struct rom_extended_boot_data bootdata __section(".data"); +#define CTRLMMR_MCU_RST_CTRL (MCU_CTRL_MMR0_BASE + 0x18170) +#define RST_CTRL_ESM_ERROR_RST_EN_Z_MASK (~BIT(17)) + static void store_boot_info_from_rom(void) { bootindex = *(u32 *)(CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX); @@ -161,11 +164,40 @@ static void k3_mem_init(void) } } +static __maybe_unused void enable_mcu_esm_reset(void) +{ + /* Set CTRLMMR_MCU_RST_CTRL:MCU_ESM_ERROR_RST_EN_Z to '0' (low active) */ + u32 stat = readl(CTRLMMR_MCU_RST_CTRL); + + stat &= RST_CTRL_ESM_ERROR_RST_EN_Z_MASK; + writel(stat, CTRLMMR_MCU_RST_CTRL); +} + void board_init_f(ulong dummy) { + int ret; + struct udevice *dev; + k3_spl_init(); k3_mem_init(); setup_qos(); + + if (IS_ENABLED(CONFIG_ESM_K3)) { + /* Probe/configure ESM0 */ + ret = uclass_get_device_by_name(UCLASS_MISC, "esm@420000", &dev); + if (ret) { + printf("esm main init failed: %d\n", ret); + return; + } + + /* Probe/configure MCUESM */ + ret = uclass_get_device_by_name(UCLASS_MISC, "esm@4100000", &dev); + if (ret) { + printf("esm mcu init failed: %d\n", ret); + return; + } + enable_mcu_esm_reset(); + } } static u32 __get_backup_bootmedia(u32 devstat) diff --git a/arch/arm/mach-k3/j784s4/Kconfig b/arch/arm/mach-k3/j784s4/Kconfig index 1eadfb346a3..84194f6efa8 100644 --- a/arch/arm/mach-k3/j784s4/Kconfig +++ b/arch/arm/mach-k3/j784s4/Kconfig @@ -27,6 +27,24 @@ config TARGET_J784S4_R5_EVM select BINMAN imply SYS_K3_SPL_ATF +config TARGET_J742S2_A72_EVM + bool "TI K3 based J742S2 EVM running on A72" + select ARM64 + select BOARD_LATE_INIT + select SYS_DISABLE_DCACHE_OPS + select BINMAN + +config TARGET_J742S2_R5_EVM + bool "TI K3 based J742S2 EVM running on R5" + select CPU_V7R + select SYS_THUMB_BUILD + select K3_LOAD_SYSFW + select RAM + select SPL_RAM + select K3_DDRSS + select BINMAN + imply SYS_K3_SPL_ATF + endchoice source "board/ti/j784s4/Kconfig" diff --git a/arch/arm/mach-k3/r5/Makefile b/arch/arm/mach-k3/r5/Makefile index f533c5e7743..074e3b61a26 100644 --- a/arch/arm/mach-k3/r5/Makefile +++ b/arch/arm/mach-k3/r5/Makefile @@ -7,7 +7,7 @@ obj-$(CONFIG_SOC_K3_AM625) += am62x/ obj-$(CONFIG_SOC_K3_AM62A7) += am62ax/ obj-$(CONFIG_SOC_K3_AM62P5) += am62px/ obj-$(CONFIG_SOC_K3_J721E) += j721e/ -obj-$(CONFIG_SOC_K3_J721E) += j7200/ +obj-$(CONFIG_SOC_K3_J7200) += j7200/ obj-$(CONFIG_SOC_K3_J721S2) += j721s2/ obj-$(CONFIG_SOC_K3_J722S) += j722s/ obj-$(CONFIG_SOC_K3_J784S4) += j784s4/ |