xref: /openbmc/u-boot/arch/arm/mach-rockchip/boot_mode.c (revision e3067793c3109744a445f692395b9a3bac778e48)
1*e3067793SAndy Yan /*
2*e3067793SAndy Yan  * (C) Copyright 2016 Rockchip Electronics Co., Ltd
3*e3067793SAndy Yan  *
4*e3067793SAndy Yan  * SPDX-License-Identifier:     GPL-2.0+
5*e3067793SAndy Yan  */
6*e3067793SAndy Yan 
7*e3067793SAndy Yan #include <common.h>
8*e3067793SAndy Yan #include <asm/io.h>
9*e3067793SAndy Yan #include <asm/arch/boot_mode.h>
10*e3067793SAndy Yan 
11*e3067793SAndy Yan int setup_boot_mode(void)
12*e3067793SAndy Yan {
13*e3067793SAndy Yan 	void *reg = (void *)CONFIG_ROCKCHIP_BOOT_MODE_REG;
14*e3067793SAndy Yan 	int boot_mode = readl(reg);
15*e3067793SAndy Yan 
16*e3067793SAndy Yan 	debug("boot mode %x.\n", boot_mode);
17*e3067793SAndy Yan 
18*e3067793SAndy Yan 	/* Clear boot mode */
19*e3067793SAndy Yan 	writel(BOOT_NORMAL, reg);
20*e3067793SAndy Yan 
21*e3067793SAndy Yan 	switch (boot_mode) {
22*e3067793SAndy Yan 	case BOOT_FASTBOOT:
23*e3067793SAndy Yan 		printf("enter fastboot!\n");
24*e3067793SAndy Yan 		env_set("preboot", "setenv preboot; fastboot usb0");
25*e3067793SAndy Yan 		break;
26*e3067793SAndy Yan 	case BOOT_UMS:
27*e3067793SAndy Yan 		printf("enter UMS!\n");
28*e3067793SAndy Yan 		env_set("preboot", "setenv preboot; ums mmc 0");
29*e3067793SAndy Yan 		break;
30*e3067793SAndy Yan 	}
31*e3067793SAndy Yan 
32*e3067793SAndy Yan 	return 0;
33*e3067793SAndy Yan }
34