usb/gadget: fastboot: add support for flash command
- implement 'fastboot flash' for eMMC devices Signed-off-by: Steve Rae <srae@broadcom.com> Acked-by: Lukasz Majewski <l.majewski@samsung.com> Reviewed-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
c0aebb3382
commit
d1b5ed0753
10
README
10
README
@ -1629,6 +1629,16 @@ The following options need to be configured:
|
||||
downloads. This buffer should be as large as possible for a
|
||||
platform. Define this to the size available RAM for fastboot.
|
||||
|
||||
CONFIG_FASTBOOT_FLASH
|
||||
The fastboot protocol includes a "flash" command for writing
|
||||
the downloaded image to a non-volatile storage device. Define
|
||||
this to enable the "fastboot flash" command.
|
||||
|
||||
CONFIG_FASTBOOT_FLASH_MMC_DEV
|
||||
The fastboot "flash" command requires additional information
|
||||
regarding the non-volatile storage device. Define this to
|
||||
the eMMC device that fastboot should use to store the image.
|
||||
|
||||
- Journaling Flash filesystem support:
|
||||
CONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE,
|
||||
CONFIG_JFFS2_NAND_DEV
|
||||
|
@ -6,8 +6,9 @@ Overview
|
||||
The protocol that is used over USB is described in
|
||||
README.android-fastboot-protocol in same directory.
|
||||
|
||||
The current implementation does not yet support the flash and erase
|
||||
commands.
|
||||
The current implementation does not yet support the erase command or the
|
||||
"oem format" command, and there is minimal support for the flash command;
|
||||
it only supports eMMC devices.
|
||||
|
||||
Client installation
|
||||
===================
|
||||
|
@ -19,6 +19,9 @@
|
||||
#include <linux/compiler.h>
|
||||
#include <version.h>
|
||||
#include <g_dnl.h>
|
||||
#ifdef CONFIG_FASTBOOT_FLASH_MMC_DEV
|
||||
#include <fb_mmc.h>
|
||||
#endif
|
||||
|
||||
#define FASTBOOT_VERSION "0.4"
|
||||
|
||||
@ -469,6 +472,28 @@ static void cb_boot(struct usb_ep *ep, struct usb_request *req)
|
||||
fastboot_tx_write_str("OKAY");
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FASTBOOT_FLASH
|
||||
static void cb_flash(struct usb_ep *ep, struct usb_request *req)
|
||||
{
|
||||
char *cmd = req->buf;
|
||||
char response[RESPONSE_LEN];
|
||||
|
||||
strsep(&cmd, ":");
|
||||
if (!cmd) {
|
||||
printf("%s: missing partition name\n", __func__);
|
||||
fastboot_tx_write_str("FAILmissing partition name");
|
||||
return;
|
||||
}
|
||||
|
||||
strcpy(response, "FAILno flash device defined");
|
||||
#ifdef CONFIG_FASTBOOT_FLASH_MMC_DEV
|
||||
fb_mmc_flash_write(cmd, (void *)CONFIG_USB_FASTBOOT_BUF_ADDR,
|
||||
download_bytes, response);
|
||||
#endif
|
||||
fastboot_tx_write_str(response);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct cmd_dispatch_info {
|
||||
char *cmd;
|
||||
void (*cb)(struct usb_ep *ep, struct usb_request *req);
|
||||
@ -488,6 +513,12 @@ static const struct cmd_dispatch_info cmd_dispatch_info[] = {
|
||||
.cmd = "boot",
|
||||
.cb = cb_boot,
|
||||
},
|
||||
#ifdef CONFIG_FASTBOOT_FLASH
|
||||
{
|
||||
.cmd = "flash",
|
||||
.cb = cb_flash,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
static void rx_handler_command(struct usb_ep *ep, struct usb_request *req)
|
||||
|
Loading…
Reference in New Issue
Block a user