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:
parent
f73a7df984
commit
3845b9065f
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user