Add board specific initialization for am64x based boards.

Signed-off-by: Dave Gerlach <d-gerl...@ti.com>
---
 arch/arm/mach-k3/Kconfig    |   1 +
 board/ti/am64x/Kconfig      |  53 ++++++++++++++++++
 board/ti/am64x/Makefile     |   8 +++
 board/ti/am64x/evm.c        |  48 +++++++++++++++++
 include/configs/am64x_evm.h | 105 ++++++++++++++++++++++++++++++++++++
 5 files changed, 215 insertions(+)
 create mode 100644 board/ti/am64x/Kconfig
 create mode 100644 board/ti/am64x/Makefile
 create mode 100644 board/ti/am64x/evm.c
 create mode 100644 include/configs/am64x_evm.h

diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig
index 35edc6d8eeb8..bfbce44bfa59 100644
--- a/arch/arm/mach-k3/Kconfig
+++ b/arch/arm/mach-k3/Kconfig
@@ -148,5 +148,6 @@ config SYS_K3_SPL_ATF
          after SPL from R5.
 
 source "board/ti/am65x/Kconfig"
+source "board/ti/am64x/Kconfig"
 source "board/ti/j721e/Kconfig"
 endif
diff --git a/board/ti/am64x/Kconfig b/board/ti/am64x/Kconfig
new file mode 100644
index 000000000000..a49e22266983
--- /dev/null
+++ b/board/ti/am64x/Kconfig
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
+
+choice
+       prompt "K3 AM64 based boards"
+       optional
+
+config TARGET_AM642_A53_EVM
+       bool "TI K3 based AM642 EVM running on A53"
+       select ARM64
+       select SOC_K3_AM642
+       imply BOARD
+       imply SPL_BOARD
+
+config TARGET_AM642_R5_EVM
+       bool "TI K3 based AM642 EVM running on R5"
+       select CPU_V7R
+       select SYS_THUMB_BUILD
+       select K3_LOAD_SYSFW
+       select SOC_K3_AM642
+       imply SYS_K3_SPL_ATF
+
+endchoice
+
+if TARGET_AM642_A53_EVM
+
+config SYS_BOARD
+       default "am64x"
+
+config SYS_VENDOR
+       default "ti"
+
+config SYS_CONFIG_NAME
+       default "am64x_evm"
+
+endif
+
+if TARGET_AM642_R5_EVM
+
+config SYS_BOARD
+       default "am64x"
+
+config SYS_VENDOR
+       default "ti"
+
+config SYS_CONFIG_NAME
+       default "am64x_evm"
+
+config SPL_LDSCRIPT
+       default "arch/arm/mach-omap2/u-boot-spl.lds"
+
+endif
diff --git a/board/ti/am64x/Makefile b/board/ti/am64x/Makefile
new file mode 100644
index 000000000000..71bdca7d9592
--- /dev/null
+++ b/board/ti/am64x/Makefile
@@ -0,0 +1,8 @@
+#
+# Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
+#      Keerthy <j-keer...@ti.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += evm.o
diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c
new file mode 100644
index 000000000000..147fe5488a63
--- /dev/null
+++ b/board/ti/am64x/evm.c
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Board specific initialization for AM642 EVM
+ *
+ * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
+ *     Keerthy <j-keer...@ti.com>
+ *
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <spl.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_init(void)
+{
+       return 0;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = 0x80000000;
+
+       return 0;
+}
+
+int dram_init_banksize(void)
+{
+       /* Bank 0 declares the memory available in the DDR low region */
+       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
+       gd->bd->bi_dram[0].size = 0x80000000;
+       gd->ram_size = 0x80000000;
+
+       return 0;
+}
+
+#if defined(CONFIG_SPL_LOAD_FIT)
+int board_fit_config_name_match(const char *name)
+{
+#if defined(CONFIG_TARGET_AM642_A53_EVM)
+       if (!strcmp(name, "k3-am642-evm"))
+               return 0;
+#endif
+
+       return -1;
+}
+#endif
diff --git a/include/configs/am64x_evm.h b/include/configs/am64x_evm.h
new file mode 100644
index 000000000000..4f710181b31b
--- /dev/null
+++ b/include/configs/am64x_evm.h
@@ -0,0 +1,105 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Configuration header file for K3 AM642 SoC family
+ *
+ * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
+ *     Keerthy <j-keer...@ti.com>
+ */
+
+#ifndef __CONFIG_AM642_EVM_H
+#define __CONFIG_AM642_EVM_H
+
+#include <linux/sizes.h>
+#include <config_distro_bootcmd.h>
+#include <environment/ti/mmc.h>
+
+/* DDR Configuration */
+#define CONFIG_SYS_SDRAM_BASE1         0x880000000
+
+#ifdef CONFIG_SYS_K3_SPL_ATF
+#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "tispl.bin"
+#endif
+
+#ifndef CONFIG_CPU_V7R
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#endif
+
+#define CONFIG_SPL_MAX_SIZE            CONFIG_SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE
+#define CONFIG_SYS_INIT_SP_ADDR         (CONFIG_SPL_TEXT_BASE +        \
+                                       CONFIG_SYS_K3_NON_SECURE_MSRAM_SIZE - 4)
+/*
+ * Maximum size in memory allocated to the SPL BSS. Keep it as tight as
+ * possible (to allow the build to go through), as this directly affects
+ * our memory footprint. The less we use for BSS the more we have available
+ * for everything else.
+ */
+#define CONFIG_SPL_BSS_MAX_SIZE                0x5000
+/*
+ * Link BSS to be within SPL in a dedicated region located near the top of
+ * the MCU SRAM, this way making it available also before relocation. Note
+ * that we are not using the actual top of the MCU SRAM as there is a memory
+ * location filled in by the boot ROM that we want to read out without any
+ * interference from the C context.
+ */
+#define CONFIG_SPL_BSS_START_ADDR      (CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX -\
+                                        CONFIG_SPL_BSS_MAX_SIZE)
+/* Configure R5 SPL post-relocation malloc pool in DDR */
+#define CONFIG_SYS_SPL_MALLOC_START    0x84000000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     SZ_16M
+
+#define PARTS_DEFAULT \
+       /* Linux partitions */ \
+       "name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}\0"
+
+/* U-Boot general configuration */
+#define EXTRA_ENV_AM642_BOARD_SETTINGS                                 \
+       "default_device_tree=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0"      \
+       "findfdt="                                                      \
+               "setenv name_fdt ${default_device_tree};"               \
+               "setenv fdtfile ${name_fdt}\0"                          \
+       "name_kern=Image\0"                                             \
+       "console=ttyS2,115200n8\0"                                      \
+       "args_all=setenv optargs earlycon=ns16550a,mmio32,0x02800000 "  \
+               "${mtdparts}\0"                                         \
+       "run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}\0"
+
+/* U-Boot MMC-specific configuration */
+#define EXTRA_ENV_AM642_BOARD_SETTINGS_MMC                             \
+       "boot=mmc\0"                                                    \
+       "mmcdev=1\0"                                                    \
+       "bootpart=1:2\0"                                                \
+       "bootdir=/boot\0"                                               \
+       "rd_spec=-\0"                                                   \
+       "init_mmc=run args_all args_mmc\0"                              \
+       "get_fdt_mmc=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${name_fdt}\0" \
+       "get_overlay_mmc="                                              \
+               "fdt address ${fdtaddr};"                               \
+               "fdt resize 0x100000;"                                  \
+               "for overlay in $name_overlays;"                        \
+               "do;"                                                   \
+               "load mmc ${bootpart} ${dtboaddr} ${bootdir}/${overlay} && "    
\
+               "fdt apply ${dtboaddr};"                                \
+               "done;\0"                                               \
+       "get_kern_mmc=load mmc ${bootpart} ${loadaddr} "                \
+               "${bootdir}/${name_kern}\0"                             \
+       "get_fit_mmc=load mmc ${bootpart} ${addr_fit} "                 \
+               "${bootdir}/${name_fit}\0"                              \
+       "partitions=" PARTS_DEFAULT
+
+/* Incorporate settings into the U-Boot environment */
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       DEFAULT_LINUX_BOOT_ENV                                          \
+       DEFAULT_MMC_TI_ARGS                                             \
+       EXTRA_ENV_AM642_BOARD_SETTINGS                                  \
+       EXTRA_ENV_AM642_BOARD_SETTINGS_MMC
+
+/* Now for the remaining common defines */
+#include <configs/ti_armv7_common.h>
+
+/* MMC ENV related defines */
+#ifdef CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_SYS_MMC_ENV_PART        1
+#endif
+
+#endif /* __CONFIG_AM642_EVM_H */
-- 
2.28.0

Reply via email to