diff options
author | Ryan Harkin <ryan.harkin@linaro.org> | 2016-12-01 17:25:38 +0000 |
---|---|---|
committer | Ryan Harkin <ryan.harkin@linaro.org> | 2017-01-16 14:22:11 +0000 |
commit | d934e5b6fd9a4ae9afd8c5c63ab102881b5eb715 (patch) | |
tree | e18cf5b567d8504826fb9429ac74fef3e05bffc6 | |
parent | 71a6550c9620aad5ee5de27a902cde156a38fe9e (diff) |
Add vexpress_aemv8a_aarch32 variantarmlt-20170206-001armlt-20170116-001armlt-17.0117.01
The ARM AEMv8 FVP model can be run in Aarch64 or Aarch32 mode. Aarch32
support is enable per-CPU when launching the model, eg:
-C cluster0.cpu0.CONFIG64=0
This patch adds a new defconfig and some variant specific selections in
vexpress_armv8a.h.
This patch is co-authored with Soby Mathew <Soby.Mathew@arm.com>.
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
-rw-r--r-- | arch/arm/Kconfig | 9 | ||||
-rw-r--r-- | board/armltd/vexpress64/Kconfig | 2 | ||||
-rw-r--r-- | board/armltd/vexpress64/vexpress64.c | 4 | ||||
-rw-r--r-- | configs/vexpress_aemv8a_aarch32_defconfig | 31 | ||||
-rw-r--r-- | include/configs/vexpress_aemv8a.h | 32 |
5 files changed, 74 insertions, 4 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 38080c0e50..164f8bebbb 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -655,6 +655,15 @@ config TARGET_VEXPRESS64_BASE_FVP select ARM64 select SEMIHOSTING +config TARGET_VEXPRESS_AEMV8_AARCH32 + bool "Support Versatile Express ARMv8a 32-bit FVP BASE model booting from DRAM" + select CPU_V7 + help + This target is derived from TARGET_VEXPRESS64_BASE_FVP and over-rides + the default config to allow the user to load the images directly into + DRAM using model parameters rather than by using semi-hosting to load + the files from the host filesystem. + config TARGET_VEXPRESS64_BASE_FVP_DRAM bool "Support Versatile Express ARMv8a FVP BASE model booting from DRAM" select ARM64 diff --git a/board/armltd/vexpress64/Kconfig b/board/armltd/vexpress64/Kconfig index e05f353b80..06c1ce1360 100644 --- a/board/armltd/vexpress64/Kconfig +++ b/board/armltd/vexpress64/Kconfig @@ -1,4 +1,4 @@ -if TARGET_VEXPRESS64_BASE_FVP || TARGET_VEXPRESS64_JUNO || TARGET_VEXPRESS64_BASE_FVP_DRAM +if TARGET_VEXPRESS64_BASE_FVP || TARGET_VEXPRESS64_JUNO || TARGET_VEXPRESS64_BASE_FVP_DRAM || TARGET_VEXPRESS_AEMV8_AARCH32 config SYS_BOARD default "vexpress64" diff --git a/board/armltd/vexpress64/vexpress64.c b/board/armltd/vexpress64/vexpress64.c index 4ddbff9fef..c1d608d4f4 100644 --- a/board/armltd/vexpress64/vexpress64.c +++ b/board/armltd/vexpress64/vexpress64.c @@ -14,7 +14,9 @@ #include <dm/platdata.h> #include <dm/platform_data/serial_pl01x.h> #include "pcie.h" +#ifdef CONFIG_ARM64 #include <asm/armv8/mmu.h> +#endif DECLARE_GLOBAL_DATA_PTR; @@ -29,6 +31,7 @@ U_BOOT_DEVICE(vexpress_serials) = { .platdata = &serial_platdata, }; +#ifdef CONFIG_ARM64 static struct mm_region vexpress64_mem_map[] = { { .virt = 0x0UL, @@ -50,6 +53,7 @@ static struct mm_region vexpress64_mem_map[] = { }; struct mm_region *mem_map = vexpress64_mem_map; +#endif /* This function gets replaced by platforms supporting PCIe. * The replacement function, eg. on Juno, initialises the PCIe bus. diff --git a/configs/vexpress_aemv8a_aarch32_defconfig b/configs/vexpress_aemv8a_aarch32_defconfig new file mode 100644 index 0000000000..8eb3c77a52 --- /dev/null +++ b/configs/vexpress_aemv8a_aarch32_defconfig @@ -0,0 +1,31 @@ +CONFIG_ARM=y +CONFIG_TARGET_VEXPRESS_AEMV8_AARCH32=y +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_IDENT_STRING=" vexpress_aemv8a" +CONFIG_BOOTDELAY=1 +# CONFIG_DISPLAY_CPUINFO is not set +# CONFIG_DISPLAY_BOARDINFO is not set +CONFIG_HUSH_PARSER=y +CONFIG_SYS_PROMPT="VExpress32# " +CONFIG_CMD_BOOTZ=y +# CONFIG_CMD_CONSOLE is not set +# CONFIG_CMD_IMLS is not set +# CONFIG_CMD_XIMG is not set +# CONFIG_CMD_EDITENV is not set +# CONFIG_CMD_ENV_EXISTS is not set +CONFIG_CMD_MEMTEST=y +# CONFIG_CMD_LOADS is not set +CONFIG_CMD_ARMFLASH=y +# CONFIG_CMD_FPGA is not set +# CONFIG_CMD_ITEST is not set +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_DHCP=y +# CONFIG_CMD_NFS is not set +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y +CONFIG_CMD_CACHE=y +# CONFIG_CMD_MISC is not set +CONFIG_CMD_FAT=y +CONFIG_DM=y +CONFIG_DM_SERIAL=y +CONFIG_OF_LIBFDT=y diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h index ea7d33a144..a40e529405 100644 --- a/include/configs/vexpress_aemv8a.h +++ b/include/configs/vexpress_aemv8a.h @@ -15,13 +15,19 @@ #define CONFIG_ARMV8_SWITCH_TO_EL1 #endif -#define CONFIG_REMAKE_ELF - #define CONFIG_SUPPORT_RAW_INITRD +#ifdef CONFIG_ARM64 +#define CONFIG_REMAKE_ELF +#else +#define CONFIG_SYS_HZ_CLOCK 24000000 +#define CONFIG_SYS_ARCH_TIMER +#define CONFIG_SKIP_LOWLEVEL_INIT +#endif /* Link Definitions */ #if defined(CONFIG_TARGET_VEXPRESS64_BASE_FVP) || \ - defined(CONFIG_TARGET_VEXPRESS64_BASE_FVP_DRAM) + defined(CONFIG_TARGET_VEXPRESS64_BASE_FVP_DRAM) || \ + defined(CONFIG_TARGET_VEXPRESS_AEMV8_AARCH32) /* ATF loads u-boot here for BASE_FVP model */ #define CONFIG_SYS_TEXT_BASE 0x88000000 #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x03f00000) @@ -256,6 +262,26 @@ #define CONFIG_BOOTCOMMAND "booti $kernel_addr $initrd_addr $fdt_addr" +#elif CONFIG_TARGET_VEXPRESS_AEMV8_AARCH32 +#define CONFIG_SKIP_LOWLEVEL_INIT +#define CONFIG_EXTRA_ENV_SETTINGS \ + "kernel_addr=0x80080000\0" \ + "initrd_addr=0x84000000\0" \ + "fdt_addr=0x82000000\0" \ + "fdt_high=0xffffffff\0" \ + "initrd_high=0xffffffff\0" + +#define CONFIG_BOOTARGS "console=ttyAMA0 earlycon=pl011,"\ + "0x1c090000 debug user_debug=31 "\ + "systemd.log_target=null "\ + "androidboot.hardware=fvpbase "\ + "root=/dev/vda2 rw "\ + "rootwait "\ + "loglevel=9" + +#define CONFIG_BOOTCOMMAND "bootz $kernel_addr $initrd_addr $fdt_addr" + + #endif /* Monitor Command Prompt */ |