fastboot: Add support for 'oem format' command

Introduce 'oem format' which matches the USB implementation, guard this
with CONFIG_FASTBOOT_CMD_OEM_FORMAT so that you can configure it out.

Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Alex Kiernan 2018-05-29 15:30:54 +00:00 committed by Marek Vasut
parent f73a7df984
commit 3845b9065f
3 changed files with 44 additions and 0 deletions

View File

@ -124,6 +124,14 @@ config FASTBOOT_MBR_NAME
specified on the "fastboot flash" command line matches the value specified on the "fastboot flash" command line matches the value
defined here. The default target name for updating MBR is "mbr". defined here. The default target name for updating MBR is "mbr".
config FASTBOOT_CMD_OEM_FORMAT
bool "Enable the 'oem format' command"
depends on FASTBOOT_FLASH_MMC && CMD_GPT
help
Add support for the "oem format" command from a client. This
relies on the env variable partitions to contain the list of
partitions as required by the gpt command.
endif # FASTBOOT endif # FASTBOOT
endmenu endmenu

View File

@ -34,6 +34,9 @@ static void flash(char *, char *);
static void erase(char *, char *); static void erase(char *, char *);
#endif #endif
static void reboot_bootloader(char *, char *); static void reboot_bootloader(char *, char *);
#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_FORMAT)
static void oem_format(char *, char *);
#endif
static const struct { static const struct {
const char *command; const char *command;
@ -77,6 +80,12 @@ static const struct {
.command = "set_active", .command = "set_active",
.dispatch = okay .dispatch = okay
}, },
#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_FORMAT)
[FASTBOOT_COMMAND_OEM_FORMAT] = {
.command = "oem format",
.dispatch = oem_format,
},
#endif
}; };
/** /**
@ -300,3 +309,27 @@ static void reboot_bootloader(char *cmd_parameter, char *response)
else else
fastboot_okay(NULL, response); fastboot_okay(NULL, response);
} }
#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_FORMAT)
/**
* oem_format() - Execute the OEM format command
*
* @cmd_parameter: Pointer to command parameter
* @response: Pointer to fastboot response buffer
*/
static void oem_format(char *cmd_parameter, char *response)
{
char cmdbuf[32];
if (!env_get("partitions")) {
fastboot_fail("partitions not set", response);
} else {
sprintf(cmdbuf, "gpt write mmc %x $partitions",
CONFIG_FASTBOOT_FLASH_MMC_DEV);
if (run_command(cmdbuf, 0))
fastboot_fail("", response);
else
fastboot_okay(NULL, response);
}
}
#endif

View File

@ -33,6 +33,9 @@ enum {
FASTBOOT_COMMAND_REBOOT, FASTBOOT_COMMAND_REBOOT,
FASTBOOT_COMMAND_REBOOT_BOOTLOADER, FASTBOOT_COMMAND_REBOOT_BOOTLOADER,
FASTBOOT_COMMAND_SET_ACTIVE, FASTBOOT_COMMAND_SET_ACTIVE,
#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_FORMAT)
FASTBOOT_COMMAND_OEM_FORMAT,
#endif
FASTBOOT_COMMAND_COUNT FASTBOOT_COMMAND_COUNT
}; };