summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-socfpga/arria10-bootsource.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-socfpga/arria10-bootsource.c')
-rw-r--r--arch/arm/mach-socfpga/arria10-bootsource.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/arch/arm/mach-socfpga/arria10-bootsource.c b/arch/arm/mach-socfpga/arria10-bootsource.c
index 26af64a1a4..3319dc4bf9 100644
--- a/arch/arm/mach-socfpga/arria10-bootsource.c
+++ b/arch/arm/mach-socfpga/arria10-bootsource.c
@@ -15,16 +15,17 @@
#include <bootsource.h>
#include <init.h>
#include <io.h>
+#include <mach/generic.h>
#include <mach/arria10-system-manager.h>
-static int arria10_boot_save_loc(void)
-{
+enum bootsource arria10_get_bootsource(void) {
enum bootsource src = BOOTSOURCE_UNKNOWN;
uint32_t val;
+ uint32_t mask = ARRIA10_SYSMGR_BOOTINFO_BSEL_MASK;
val = readl(ARRIA10_SYSMGR_BOOTINFO);
- switch ((val & 0x7000) >> 12) {
+ switch ((val & mask) >> ARRIA10_SYSMGR_BOOTINFO_BSEL_SHIFT) {
case 0:
/* reserved */
break;
@@ -45,6 +46,15 @@ static int arria10_boot_save_loc(void)
break;
}
+ return src;
+}
+
+static int arria10_boot_save_loc(void)
+{
+ enum bootsource src;
+
+ src = arria10_get_bootsource();
+
bootsource_set(src);
bootsource_set_instance(0);