aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harkin <ryan.harkin@linaro.org>2017-02-23 18:15:19 +0000
committerRyan Harkin <ryan.harkin@linaro.org>2017-07-07 08:39:39 +0100
commitab2d419d8e81d2f632964e34e2275e3e08060925 (patch)
tree0cc365b0466cdc8cd687e0ee9d2cd7f79a59de0b
parent5e692632650c1cbd6ecfeb202776b82ff431a396 (diff)
Add Aarch32 variant of Juno. TODO: CONFIG_BOOTCOMMAND between Juno and FVP could actually be shared. Currently, Juno uses "afs load" and FVP uses "smhload". This could be moved into a #define. The script itself is attempting to do basically the same thing. The main difference is that Juno has added an alternate kernel and fdt filename. We could use this same mechanism on FVP also. So the only difference between FVP and Juno in vexpress_aemv8a.h should be the CONFIG_BOOTARGS, because FVP sets androidboot.hardware to "fvpbase", where Juno sets it to "juno". Again, this could be added to a define in the header or in the defconfig. Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
-rw-r--r--arch/arm/Kconfig8
-rw-r--r--board/armltd/vexpress64/Kconfig2
-rw-r--r--configs/vexpress_juno_aarch32_defconfig34
-rw-r--r--include/configs/vexpress_aemv8a.h24
4 files changed, 59 insertions, 9 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5df33089e7..0a6ee962d5 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -750,6 +750,7 @@ config TARGET_VEXPRESS64_BASE_FVP
config TARGET_VEXPRESS64_BASE_FVP_AARCH32
bool "Support Versatile Express ARMv8a 32-bit FVP BASE model booting from DRAM"
select CPU_V7
+ select SEMIHOSTING
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
@@ -760,6 +761,13 @@ config TARGET_VEXPRESS64_JUNO
bool "Support Versatile Express Juno Development Platform"
select ARM64
+config TARGET_VEXPRESS64_JUNO_AARCH32
+ bool "Support Versatile Express Juno Development Platform in 32-bit mode"
+ select CPU_V7
+ help
+ This target is derived from TARGET_VEXPRESS64_JUNO, except it uses an
+ ARMv7 CPU type to support booting in Aarch32 mode.
+
config TARGET_LS2080A_EMU
bool "Support ls2080a_emu"
select ARCH_LS2080A
diff --git a/board/armltd/vexpress64/Kconfig b/board/armltd/vexpress64/Kconfig
index a81cfbf322..f6930aee47 100644
--- a/board/armltd/vexpress64/Kconfig
+++ b/board/armltd/vexpress64/Kconfig
@@ -1,4 +1,4 @@
-if TARGET_VEXPRESS64_BASE_FVP || TARGET_VEXPRESS64_BASE_FVP_AARCH32 || TARGET_VEXPRESS64_JUNO
+if TARGET_VEXPRESS64_BASE_FVP || TARGET_VEXPRESS64_BASE_FVP_AARCH32 || TARGET_VEXPRESS64_JUNO || TARGET_VEXPRESS64_JUNO_AARCH32
config SYS_BOARD
default "vexpress64"
diff --git a/configs/vexpress_juno_aarch32_defconfig b/configs/vexpress_juno_aarch32_defconfig
new file mode 100644
index 0000000000..e06c101a6f
--- /dev/null
+++ b/configs/vexpress_juno_aarch32_defconfig
@@ -0,0 +1,34 @@
+CONFIG_ARM=y
+CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_IDENT_STRING=" vexpress_aemv8a juno aarch32"
+CONFIG_BOOTDELAY=1
+# CONFIG_DISPLAY_CPUINFO is not set
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="juno32# "
+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_MTD_NOR_FLASH=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
+CONFIG_ARCH_FIXUP_FDT=n
+CONFIG_ARCH_FIXUP_FDT_MEMORY=n
diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h
index 0f5fc1ee36..55cc5d60d5 100644
--- a/include/configs/vexpress_aemv8a.h
+++ b/include/configs/vexpress_aemv8a.h
@@ -33,7 +33,8 @@
/* 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)
-#elif CONFIG_TARGET_VEXPRESS64_JUNO
+#elif defined(CONFIG_TARGET_VEXPRESS64_JUNO) || \
+ defined(CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32)
#define CONFIG_SYS_TEXT_BASE 0xe0000000
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x7fff0)
#endif
@@ -61,7 +62,8 @@
#define V2M_KMI0 (V2M_PA_CS3 + V2M_PERIPH_OFFSET(6))
#define V2M_KMI1 (V2M_PA_CS3 + V2M_PERIPH_OFFSET(7))
-#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+#if defined(CONFIG_TARGET_VEXPRESS64_JUNO) || \
+ defined(CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32)
#define V2M_UART0 0x7ff80000
#define V2M_UART1 0x7ff70000
#else /* Not Juno */
@@ -102,7 +104,8 @@
#ifdef CONFIG_TARGET_VEXPRESS64_BASE_FVP
#define GICD_BASE (0x2f000000)
#define GICC_BASE (0x2c000000)
-#elif CONFIG_TARGET_VEXPRESS64_JUNO
+#elif defined(CONFIG_TARGET_VEXPRESS64_JUNO) || \
+ defined(CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32)
#define GICD_BASE (0x2C010000)
#define GICC_BASE (0x2C02f000)
#endif
@@ -112,7 +115,8 @@
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (8 << 20))
/* Ethernet Configuration */
-#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+#if defined(CONFIG_TARGET_VEXPRESS64_JUNO) || \
+ defined(CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32)
/* The real hardware Versatile express uses SMSC9118 */
#define CONFIG_SMC911X 1
#define CONFIG_SMC911X_32_BIT 1
@@ -127,7 +131,8 @@
#define CONFIG_CONS_INDEX 0
#define CONFIG_PL01X_SERIAL
#define CONFIG_PL011_SERIAL
-#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+#if defined(CONFIG_TARGET_VEXPRESS64_JUNO) || \
+ defined(CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32)
#define CONFIG_PL011_CLOCK 7273800
#else
#define CONFIG_PL011_CLOCK 24000000
@@ -152,7 +157,7 @@
#define PHYS_SDRAM_1_SIZE 0x80000000 - DRAM_SEC_SIZE
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
-#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+#if defined(CONFIG_TARGET_VEXPRESS64_JUNO)
#define CONFIG_NR_DRAM_BANKS 2
#define PHYS_SDRAM_2 (0x880000000)
#define PHYS_SDRAM_2_SIZE 0x180000000
@@ -165,7 +170,8 @@
#define CONFIG_SYS_MEMTEST_END (PHYS_SDRAM_1 + PHYS_SDRAM_1_SIZE)
/* Initial environment variables */
-#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+#if defined(CONFIG_TARGET_VEXPRESS64_JUNO) || \
+ defined(CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32)
/*
* Defines where the kernel and FDT exist in NOR flash and where it will
* be copied into DRAM
@@ -192,6 +198,7 @@
"androidboot.hardware=juno "\
"loglevel=9"
+
/* Copy the kernel and FDT to DRAM memory and boot */
#define CONFIG_BOOTCOMMAND "afs load ${kernel_name} ${kernel_addr} ; " \
"if test $? -eq 1; then "\
@@ -265,7 +272,8 @@
#define CONFIG_CMDLINE_EDITING
#define CONFIG_SYS_MAXARGS 64 /* max command args */
-#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+#if defined(CONFIG_TARGET_VEXPRESS64_JUNO) || \
+ defined(CONFIG_TARGET_VEXPRESS64_JUNO_AARCH32)
#define CONFIG_SYS_FLASH_BASE 0x08000000
/* 255 x 256KiB sectors + 4 x 64KiB sectors at the end = 259 */
#define CONFIG_SYS_MAX_FLASH_SECT 259