
Hi Roman,
ср, 10 июн. 2020 г. в 19:37, Roman Kovalivskyi roman.kovalivskyi@globallogic.com:
Default implementation of fastboot_set_reboot_flag function that depends on "bcb" commands could be used in general case if there are no need to make any platform-specific implementation, otherwise it could be disabled via Kconfig option FASTBOOT_USE_BCB_SET_REBOOT_FLAG.
Please note that FASTBOOT_USE_BCB_SET_REBOOT_FLAG is mutually exclusive with some platforms which already have their own implementation of this function.
Signed-off-by: Roman Kovalivskyi roman.kovalivskyi@globallogic.com
drivers/fastboot/Kconfig | 9 +++++++ drivers/fastboot/Makefile | 1 + drivers/fastboot/fb_bcb_impl.c | 48 ++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 drivers/fastboot/fb_bcb_impl.c
It was my comment to move the logic out of fb_comon.c to a separate file, but it can look more natural in cmd/bcb.c under #ifdef. It is not a critical requirement from my side, and if you do not agree, just ignore it.
diff --git a/drivers/fastboot/Kconfig b/drivers/fastboot/Kconfig index d4436dfc9173..bcb43bc5d556 100644 --- a/drivers/fastboot/Kconfig +++ b/drivers/fastboot/Kconfig @@ -165,6 +165,15 @@ config FASTBOOT_CMD_OEM_FORMAT relies on the env variable partitions to contain the list of partitions as required by the gpt command.
+config FASTBOOT_USE_BCB_SET_REBOOT_FLAG
bool "Enable default fastboot_set_reboot_flag implementation"
Description is not clear. Consider "Use BCB by fastboot to set boot reason"
depends on CMD_BCB && !ARCH_MESON && !ARCH_ROCKCHIP && !TARGET_KC1 && \
!TARGET_SNIPER && !TARGET_AM57XX_EVM && !TARGET_DRA7XX_EVM
default 1
Should be 'y'
help
Add default implementation of fastboot_set_reboot_flag that uses
"bcb" commands.
Fix indents. should be tab+2 spaces. Also help can be more verbose.
Regards, Roman Stratiienko
endif # FASTBOOT
endmenu diff --git a/drivers/fastboot/Makefile b/drivers/fastboot/Makefile index 048af5aa8234..2b2c390fe4de 100644 --- a/drivers/fastboot/Makefile +++ b/drivers/fastboot/Makefile @@ -5,3 +5,4 @@ obj-y += fb_getvar.o obj-y += fb_command.o obj-$(CONFIG_FASTBOOT_FLASH_MMC) += fb_mmc.o obj-$(CONFIG_FASTBOOT_FLASH_NAND) += fb_nand.o +obj-$(CONFIG_FASTBOOT_USE_BCB_SET_REBOOT_FLAG) += fb_bcb_impl.o diff --git a/drivers/fastboot/fb_bcb_impl.c b/drivers/fastboot/fb_bcb_impl.c new file mode 100644 index 000000000000..a5ae94e2e357 --- /dev/null +++ b/drivers/fastboot/fb_bcb_impl.c @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0+ +/*
- Copyright 2020 GlobalLogic.
- Roman Kovalivskyi roman.kovalivskyi@globallogic.com
- */
+#include <common.h> +#include <fastboot.h>
+/**
- fastboot_set_reboot_flag() - Set flag to indicate reboot-bootloader
- Set flag which indicates that we should reboot into the bootloader
- following the reboot that fastboot executes after this function.
- This function should be overridden in your board file with one
- which sets whatever flag your board specific Android bootloader flow
- requires in order to re-enter the bootloader.
- */
+int fastboot_set_reboot_flag(enum fastboot_reboot_reason reason) +{
static const char * const boot_cmds[] = {
"bootonce-bootloader",
"boot-fastboot",
"boot-recovery"
};
char cmd[32];
if (reason >= FASTBOOT_REBOOT_REASONS_COUNT)
return -EINVAL;
snprintf(cmd, sizeof(cmd), "bcb load %d misc",
CONFIG_FASTBOOT_FLASH_MMC_DEV);
if (run_command(cmd, 0))
return -ENODEV;
snprintf(cmd, sizeof(cmd), "bcb set command %s", boot_cmds[reason]);
if (run_command(cmd, 0))
return -ENOEXEC;
if (run_command("bcb store", 0))
return -EIO;
return 0;
+}
2.17.1