]> git.sur5r.net Git - u-boot/commitdiff
ARM: VExpress: enable ARMv7 virt support for VExpress A15
authorAndre Przywara <andre.przywara@linaro.org>
Thu, 19 Sep 2013 16:06:46 +0000 (18:06 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Thu, 3 Oct 2013 19:28:57 +0000 (21:28 +0200)
To enable hypervisors utilizing the ARMv7 virtualization extension
on the Versatile Express board with the A15 core tile, we add the
required configuration variable.
Also we define the board specific smp_set_cpu_boot_addr() function to
set the start address for secondary cores in the VExpress specific
manner.
There is no need to provide a custom smp_waitloop() function here.

This also serves as an example for what to do when adding support for
new boards.

Signed-off-by: Andre Przywara <andre.przywara@linaro.org>
board/armltd/vexpress/vexpress_common.c
include/configs/vexpress_ca15_tc2.h

index 4c7a7f46d59b0adcd38801e1baebc20bb8f3d8af..56febd95251173bf5d2652b9403ab677cfb9a8f5 100644 (file)
@@ -256,3 +256,18 @@ ulong get_tbclk(void)
 {
        return (ulong)CONFIG_SYS_HZ;
 }
+
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
+/* Setting the address at which secondary cores start from.
+ * Versatile Express uses one address for all cores, so ignore corenr
+ */
+void smp_set_core_boot_addr(unsigned long addr, int corenr)
+{
+       /* The SYSFLAGS register on VExpress needs to be cleared first
+        * by writing to the next address, since any writes to the address
+        * at offset 0 will only be ORed in
+        */
+       writel(~0, CONFIG_SYSFLAGS_ADDR + 4);
+       writel(addr, CONFIG_SYSFLAGS_ADDR);
+}
+#endif
index 89ce1c711c1e5058be3d82d7eb31ee412b9808a1..080603409698b92c1db2f599e801b7e55d0511a8 100644 (file)
@@ -15,4 +15,9 @@
 #include "vexpress_common.h"
 #define CONFIG_BOOTP_VCI_STRING     "U-boot.armv7.vexpress_ca15x2_tc2"
 
+#define CONFIG_SYSFLAGS_ADDR   0x1c010030
+#define CONFIG_SMP_PEN_ADDR    CONFIG_SYSFLAGS_ADDR
+
+#define CONFIG_ARMV7_VIRT
+
 #endif