summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Przywara <andre.przywara@linaro.org>2014-08-01 13:35:44 +0200
committerTom Rini <trini@ti.com>2014-08-30 07:46:38 -0400
commitfafbc6c000db1196b72ec5acf24f0763a6b4493a (patch)
tree5834b950079992277a564b43759e6fb443bb745f
parent0bf62d7bc41cc97b5ca7f6ef5ed858f56008257a (diff)
downloadu-boot-imx-fafbc6c000db1196b72ec5acf24f0763a6b4493a.zip
u-boot-imx-fafbc6c000db1196b72ec5acf24f0763a6b4493a.tar.gz
u-boot-imx-fafbc6c000db1196b72ec5acf24f0763a6b4493a.tar.bz2
ARM: enable ARMv7 virt support for the Arndale board
To enable hypervisors utilizing the ARMv7 virtualization extension on the Arndale board, add the simple SMP pen address writer function and add the required configuration variables to switch all cores to HYP mode before launching the OS. This allows booting KVM and Xen directly from u-boot. Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org> Signed-off-by: Andre Przywara <andre.przywara@linaro.org> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
-rw-r--r--board/samsung/arndale/arndale.c10
-rw-r--r--include/configs/arndale.h8
2 files changed, 18 insertions, 0 deletions
diff --git a/board/samsung/arndale/arndale.c b/board/samsung/arndale/arndale.c
index ef88314..83fd3bd 100644
--- a/board/samsung/arndale/arndale.c
+++ b/board/samsung/arndale/arndale.c
@@ -117,3 +117,13 @@ int checkboard(void)
return 0;
}
#endif
+
+#ifdef CONFIG_S5P_PA_SYSRAM
+void smp_set_core_boot_addr(unsigned long addr, int corenr)
+{
+ writel(addr, CONFIG_S5P_PA_SYSRAM);
+
+ /* make sure this write is really executed */
+ __asm__ volatile ("dsb\n");
+}
+#endif
diff --git a/include/configs/arndale.h b/include/configs/arndale.h
index 64b54ab..75f9933 100644
--- a/include/configs/arndale.h
+++ b/include/configs/arndale.h
@@ -250,4 +250,12 @@
/* Enable Time Command */
#define CONFIG_CMD_TIME
+#define CONFIG_S5P_PA_SYSRAM 0x02020000
+#define CONFIG_SMP_PEN_ADDR CONFIG_S5P_PA_SYSRAM
+
+/* The PERIPHBASE in the CBAR register is wrong on the Arndale, so override it */
+#define CONFIG_ARM_GIC_BASE_ADDRESS 0x10480000
+
+#define CONFIG_ARMV7_VIRT
+
#endif /* __CONFIG_H */