summaryrefslogtreecommitdiff
path: root/arch/arm/mach-rockchip/boot_mode.c
diff options
context:
space:
mode:
authorAndy Yan <andy.yan@rock-chips.com>2017-10-11 15:00:16 +0800
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>2017-11-21 23:57:23 +0100
commite3067793c3109744a445f692395b9a3bac778e48 (patch)
tree1dc5a165f762ecec55797c3f26efa085066e3661 /arch/arm/mach-rockchip/boot_mode.c
parent11f12c17d72499292f6e219ebbf8062faedcc5bb (diff)
rockchip: make boot_mode related codes reused across all platforms
setup_boot_mode function use the same logic but different mode register address across all the rockchip platforms, so it's better to make this function reused across all the platforms, and let the mode register address setting from the config file. Signed-off-by: Andy Yan <andy.yan@rock-chips.com> Reviewed-by: Simon Glass <sjg@chromium.org> Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Diffstat (limited to 'arch/arm/mach-rockchip/boot_mode.c')
-rw-r--r--arch/arm/mach-rockchip/boot_mode.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c
new file mode 100644
index 0000000000..46524900de
--- /dev/null
+++ b/arch/arm/mach-rockchip/boot_mode.c
@@ -0,0 +1,33 @@
+/*
+ * (C) Copyright 2016 Rockchip Electronics Co., Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/boot_mode.h>
+
+int setup_boot_mode(void)
+{
+ void *reg = (void *)CONFIG_ROCKCHIP_BOOT_MODE_REG;
+ int boot_mode = readl(reg);
+
+ debug("boot mode %x.\n", boot_mode);
+
+ /* Clear boot mode */
+ writel(BOOT_NORMAL, reg);
+
+ switch (boot_mode) {
+ case BOOT_FASTBOOT:
+ printf("enter fastboot!\n");
+ env_set("preboot", "setenv preboot; fastboot usb0");
+ break;
+ case BOOT_UMS:
+ printf("enter UMS!\n");
+ env_set("preboot", "setenv preboot; ums mmc 0");
+ break;
+ }
+
+ return 0;
+}