#ifndef __VEXPRESS_AEMV8A_H
#define __VEXPRESS_AEMV8A_H
-/* We use generic board for v8 Versatile Express */
+/* We use generic board and device manager for v8 Versatile Express */
#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DM
#ifdef CONFIG_TARGET_VEXPRESS64_BASE_FVP
#ifndef CONFIG_SEMIHOSTING
#error CONFIG_TARGET_VEXPRESS64_BASE_FVP requires CONFIG_SEMIHOSTING
#endif
-#define CONFIG_BOARD_LATE_INIT
#define CONFIG_ARMV8_SWITCH_TO_EL1
#endif
#define CONFIG_REMAKE_ELF
-#if !defined(CONFIG_TARGET_VEXPRESS64_BASE_FVP) && \
- !defined(CONFIG_TARGET_VEXPRESS64_JUNO)
-/* Base FVP and Juno not using GICv3 yet */
-#define CONFIG_GICV3
-#endif
-
-/*#define CONFIG_ARMV8_SWITCH_TO_EL1*/
-
#define CONFIG_SUPPORT_RAW_INITRD
/* Cache Definitions */
#define CONFIG_SYS_TEXT_BASE 0xe0000000
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x7fff0)
#else
-#define CONFIG_SYS_TEXT_BASE 0x80000000
-#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x7fff0)
+#error "Unknown board variant"
#endif
/* Flat Device Tree Definitions */
#define GICD_BASE (0x2C010000)
#define GICC_BASE (0x2C02f000)
#else
-#define GICD_BASE (0x2C001000)
-#define GICC_BASE (0x2C002000)
-#endif
+#error "Unknown board variant"
#endif
-
-#define CONFIG_SYS_MEMTEST_START V2M_BASE
-#define CONFIG_SYS_MEMTEST_END (V2M_BASE + 0x80000000)
+#endif /* !CONFIG_GICV3 */
/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_F_LEN 0x2000
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (8 << 20))
/* Ethernet Configuration */
#endif
/* PL011 Serial Configuration */
+#define CONFIG_DM_SERIAL
+#define CONFIG_BAUDRATE 115200
+#define CONFIG_CONS_INDEX 0
+#define CONFIG_PL01X_SERIAL
#define CONFIG_PL011_SERIAL
#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
#define CONFIG_PL011_CLOCK 7273800
#else
#define CONFIG_PL011_CLOCK 24000000
#endif
-#define CONFIG_PL01x_PORTS {(void *)CONFIG_SYS_SERIAL0, \
- (void *)CONFIG_SYS_SERIAL1}
-#define CONFIG_CONS_INDEX 0
-
-#define CONFIG_BAUDRATE 115200
-#define CONFIG_SYS_SERIAL0 V2M_UART0
-#define CONFIG_SYS_SERIAL1 V2M_UART1
/* Command line configuration */
#define CONFIG_MENU
/* Physical Memory Map */
#define CONFIG_NR_DRAM_BANKS 1
#define PHYS_SDRAM_1 (V2M_BASE) /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE 0x80000000 /* 2048 MB */
-#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
+/* Top 16MB reserved for secure world use */
+#define DRAM_SEC_SIZE 0x01000000
+#define PHYS_SDRAM_1_SIZE 0x80000000 - DRAM_SEC_SIZE
+#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
+
+/* Enable memtest */
+#define CONFIG_CMD_MEMTEST
+#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM_1
+#define CONFIG_SYS_MEMTEST_END (PHYS_SDRAM_1 + PHYS_SDRAM_1_SIZE)
/* Initial environment variables */
-#ifdef CONFIG_TARGET_VEXPRESS64_BASE_FVP
+#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+/*
+ * Defines where the kernel and FDT exist in NOR flash and where it will
+ * be copied into DRAM
+ */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "kernel_name=Image\0" \
+ "kernel_addr=0x80000000\0" \
+ "fdt_name=juno\0" \
+ "fdt_addr=0x83000000\0" \
+ "fdt_high=0xffffffffffffffff\0" \
+ "initrd_high=0xffffffffffffffff\0" \
+
+/* Assume we boot with root on the first partition of a USB stick */
+#define CONFIG_BOOTARGS "console=ttyAMA0,115200n8 " \
+ "root=/dev/sda1 rw " \
+ "earlyprintk=pl011,0x7ff80000 debug user_debug=31 "\
+ "loglevel=9"
+
+/* Copy the kernel and FDT to DRAM memory and boot */
+#define CONFIG_BOOTCOMMAND "afs load ${kernel_name} ${kernel_addr} ; " \
+ "afs load ${fdt_name} ${fdt_addr} ; " \
+ "fdt addr ${fdt_addr}; fdt resize; " \
+ "booti ${kernel_addr} - ${fdt_addr}"
+
+#define CONFIG_BOOTDELAY 1
+
+#elif CONFIG_TARGET_VEXPRESS64_BASE_FVP
#define CONFIG_EXTRA_ENV_SETTINGS \
- "kernel_name=uImage\0" \
- "kernel_addr_r=0x80000000\0" \
+ "kernel_name=uImage\0" \
+ "kernel_addr=0x80000000\0" \
"initrd_name=ramdisk.img\0" \
- "initrd_addr_r=0x88000000\0" \
- "fdt_name=devtree.dtb\0" \
- "fdt_addr_r=0x83000000\0" \
+ "initrd_addr=0x88000000\0" \
+ "fdt_name=devtree.dtb\0" \
+ "fdt_addr=0x83000000\0" \
"fdt_high=0xffffffffffffffff\0" \
"initrd_high=0xffffffffffffffff\0"
"0x1c090000 debug user_debug=31 "\
"loglevel=9"
-#define CONFIG_BOOTCOMMAND "fdt addr $fdt_addr_r; fdt resize; " \
- "fdt chosen $initrd_addr_r $initrd_end; " \
- "bootm $kernel_addr_r - $fdt_addr_r"
+#define CONFIG_BOOTCOMMAND "smhload ${kernel_name} ${kernel_addr}; " \
+ "smhload ${fdt_name} $fdt_addr; " \
+ "smhload ${initrd_name} $initrd_addr initrd_end; " \
+ "fdt addr $fdt_addr; fdt resize; " \
+ "fdt chosen $initrd_addr $initrd_end; " \
+ "bootm $kernel_addr - $fdt_addr"
#define CONFIG_BOOTDELAY 1
#else
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
- "kernel_addr_r=0x80000000\0" \
- "initrd_addr_r=0x88000000\0" \
- "fdt_addr_r=0x83000000\0" \
- "fdt_high=0xa0000000\0"
-
-#define CONFIG_BOOTARGS "console=ttyAMA0,115200n8 root=/dev/ram0"
-#define CONFIG_BOOTCOMMAND "bootm $kernel_addr_r " \
- "$initrd_addr_r:$initrd_size $fdt_addr_r"
-#define CONFIG_BOOTDELAY -1
+#error "Unknown board variant"
#endif
/* Do not preserve environment */
#define CONFIG_SYS_NO_FLASH
#else
#define CONFIG_CMD_FLASH
+#define CONFIG_CMD_ARMFLASH
#define CONFIG_SYS_FLASH_CFI 1
#define CONFIG_FLASH_CFI_DRIVER 1
+#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_32BIT
#define CONFIG_SYS_FLASH_BASE 0x08000000
#define CONFIG_SYS_FLASH_SIZE 0x04000000 /* 64 MiB */
#define CONFIG_SYS_MAX_FLASH_BANKS 2