mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-23 11:33:32 +00:00
56717a1388
Currently, in case of arm64 bootloader and U-Boot the stack pointer is initialized at an offset of NON_SECURE_MSRAM_SIZE from arm64 SPL's text base address. After jumping to arm64, execution is done out of DDR. Therefore, having an offset corresponding to the size of MSRAM does not have any significance. Instead, initialize the stack pointer after an offset of 4MB from the SPL text base address. This helps in allocating larger memory for stack. ┌────────────────────┐0x80080000 │ │ │ arm64 SPL │ ├────────────────────┤ │ ▲ │ │ │ │ │ STACK │ ├────────────────────┤0x80480000 │ Memory for Load │ │ Buffer Allocation │ ├────────────────────┤0x80800000 │ │ │ U-Boot Image │ │ │ └────────────────────┘ Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
151 lines
4.7 KiB
C
151 lines
4.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Configuration header file for K3 AM654 EVM
|
|
*
|
|
* Copyright (C) 2017-2018 Texas Instruments Incorporated - http://www.ti.com/
|
|
* Lokesh Vutla <lokeshvutla@ti.com>
|
|
*/
|
|
|
|
#ifndef __CONFIG_AM654_EVM_H
|
|
#define __CONFIG_AM654_EVM_H
|
|
|
|
#include <linux/sizes.h>
|
|
#include <environment/ti/mmc.h>
|
|
#include <environment/ti/k3_rproc.h>
|
|
#include <environment/ti/k3_dfu.h>
|
|
|
|
/* DDR Configuration */
|
|
#define CONFIG_SYS_SDRAM_BASE1 0x880000000
|
|
|
|
/* SPL Loader Configuration */
|
|
#ifdef CONFIG_TARGET_AM654_A53_EVM
|
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SPL_TEXT_BASE + SZ_4M)
|
|
#else
|
|
/*
|
|
* 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 0xc00
|
|
/*
|
|
* 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)
|
|
/* Set the stack right below the SPL BSS section */
|
|
#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SPL_BSS_START_ADDR
|
|
/* Configure R5 SPL post-relocation malloc pool in DDR */
|
|
#define CONFIG_SYS_SPL_MALLOC_START 0x84000000
|
|
#define CONFIG_SYS_SPL_MALLOC_SIZE SZ_16M
|
|
#endif
|
|
|
|
#ifdef CONFIG_SYS_K3_SPL_ATF
|
|
#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "tispl.bin"
|
|
#endif
|
|
|
|
#define CONFIG_SPL_MAX_SIZE CONFIG_SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE
|
|
|
|
#define CONFIG_SYS_BOOTM_LEN SZ_64M
|
|
|
|
#define PARTS_DEFAULT \
|
|
/* Linux partitions */ \
|
|
"name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}\0"
|
|
|
|
/* U-Boot general configuration */
|
|
#define EXTRA_ENV_AM65X_BOARD_SETTINGS \
|
|
"findfdt=" \
|
|
"setenv name_fdt k3-am654-base-board.dtb;" \
|
|
"setenv fdtfile ${name_fdt}\0" \
|
|
"name_kern=Image\0" \
|
|
"console=ttyS2,115200n8\0" \
|
|
"stdin=serial,usbkbd\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_AM65X_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
|
|
|
|
#ifdef DEFAULT_RPROCS
|
|
#undef DEFAULT_RPROCS
|
|
#endif
|
|
#define DEFAULT_RPROCS "" \
|
|
"0 /lib/firmware/am65x-mcu-r5f0_0-fw " \
|
|
"1 /lib/firmware/am65x-mcu-r5f0_1-fw "
|
|
|
|
#ifdef CONFIG_TARGET_AM654_A53_EVM
|
|
#define EXTRA_ENV_AM65X_BOARD_SETTINGS_MTD \
|
|
"mtdids=" CONFIG_MTDIDS_DEFAULT "\0" \
|
|
"mtdparts=" CONFIG_MTDPARTS_DEFAULT "\0"
|
|
#else
|
|
#define EXTRA_ENV_AM65X_BOARD_SETTINGS_MTD
|
|
#endif
|
|
|
|
#define EXTRA_ENV_AM65X_BOARD_SETTINGS_UBI \
|
|
"init_ubi=run args_all args_ubi; sf probe; " \
|
|
"ubi part ospi.rootfs; ubifsmount ubi:rootfs;\0" \
|
|
"get_kern_ubi=ubifsload ${loadaddr} ${bootdir}/${name_kern}\0" \
|
|
"get_fdt_ubi=ubifsload ${fdtaddr} ${bootdir}/${name_fdt}\0" \
|
|
"args_ubi=setenv bootargs console=${console} ${optargs} " \
|
|
"rootfstype=ubifs root=ubi0:rootfs rw ubi.mtd=ospi.rootfs\0"
|
|
|
|
#define EXTRA_ENV_DFUARGS \
|
|
DFU_ALT_INFO_MMC \
|
|
DFU_ALT_INFO_RAM \
|
|
DFU_ALT_INFO_EMMC \
|
|
DFU_ALT_INFO_OSPI
|
|
|
|
#ifdef CONFIG_TARGET_AM654_A53_EVM
|
|
#define BOOT_TARGET_DEVICES(func) \
|
|
func(MMC, mmc, 1) \
|
|
func(MMC, mmc, 0)
|
|
|
|
#include <config_distro_bootcmd.h>
|
|
#else
|
|
#define BOOTENV
|
|
#endif
|
|
|
|
/* Incorporate settings into the U-Boot environment */
|
|
#define CONFIG_EXTRA_ENV_SETTINGS \
|
|
DEFAULT_LINUX_BOOT_ENV \
|
|
DEFAULT_MMC_TI_ARGS \
|
|
DEFAULT_FIT_TI_ARGS \
|
|
EXTRA_ENV_AM65X_BOARD_SETTINGS \
|
|
EXTRA_ENV_AM65X_BOARD_SETTINGS_MMC \
|
|
EXTRA_ENV_AM65X_BOARD_SETTINGS_MTD \
|
|
EXTRA_ENV_AM65X_BOARD_SETTINGS_UBI \
|
|
EXTRA_ENV_RPROC_SETTINGS \
|
|
EXTRA_ENV_DFUARGS \
|
|
BOOTENV
|
|
|
|
#define CONFIG_SYS_USB_FAT_BOOT_PARTITION 1
|
|
|
|
/* Now for the remaining common defines */
|
|
#include <configs/ti_armv7_common.h>
|
|
|
|
#endif /* __CONFIG_AM654_EVM_H */
|