diff options
author | Roman Kovalivskyi <roman.kovalivskyi@globallogic.com> | 2021-01-26 22:54:56 +0200 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2021-02-07 19:22:54 +0100 |
commit | a362ce214f03f965b05a9a89997294773cd6e908 (patch) | |
tree | 80477ab4d34c704714753e897e987bb2fe63b918 /drivers | |
parent | f80798122a726602a239ad7667164a89e98c8328 (diff) | |
download | u-boot-a362ce214f03f965b05a9a89997294773cd6e908.zip u-boot-a362ce214f03f965b05a9a89997294773cd6e908.tar.gz u-boot-a362ce214f03f965b05a9a89997294773cd6e908.tar.bz2 |
fastboot: Implement generic fastboot_set_reboot_flag
It is possible to implement fastboot_set_reboot_flag in a generic way
if BCB commands are turned on for a target. Using
bcb_set_reboot_reason allows to do this by simply passing string with
correct reboot reason that should be handled during next boot process.
If BCB are turned off, then bcb_set_reboot_reason would simply return
error, so it won't introduce any new behaviour for such targets.
Signed-off-by: Roman Kovalivskyi <roman.kovalivskyi@globallogic.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/fastboot/fb_common.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/fastboot/fb_common.c b/drivers/fastboot/fb_common.c index 736ce1c..cbcc368 100644 --- a/drivers/fastboot/fb_common.c +++ b/drivers/fastboot/fb_common.c @@ -10,6 +10,7 @@ * Rob Herring <robh@kernel.org> */ +#include <bcb.h> #include <common.h> #include <command.h> #include <env.h> @@ -90,7 +91,20 @@ void fastboot_okay(const char *reason, char *response) */ int __weak fastboot_set_reboot_flag(enum fastboot_reboot_reason reason) { - return -ENOSYS; +#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC_DEV) + static const char * const boot_cmds[] = { + [FASTBOOT_REBOOT_REASON_BOOTLOADER] = "bootonce-bootloader", + [FASTBOOT_REBOOT_REASON_FASTBOOTD] = "boot-fastboot", + [FASTBOOT_REBOOT_REASON_RECOVERY] = "boot-recovery" + }; + + if (reason >= FASTBOOT_REBOOT_REASONS_COUNT) + return -EINVAL; + + return bcb_write_reboot_reason(CONFIG_FASTBOOT_FLASH_MMC_DEV, "misc", boot_cmds[reason]); +#else + return -EINVAL; +#endif } /** |