fastboot: add support for continue command
The fastboot continue command is defined to exit fastboot and continue autoboot. This commit implements the continue command and the exiting of fastboot only. Subsequent u-boot commands can be processed after exiting fastboot. Autoboot should implement a boot script such as "fastboot; mmc read <...>; bootm" to fully implement the fastboot continue function. Signed-off-by: Rob Herring <robh@kernel.org> Tested-by: Lukasz Majewski <l.majewski@samsung.com> [TestHW: Exynos4412-Trats2]
This commit is contained in:
parent
fe1b28c9f0
commit
267abc626d
|
@ -15,17 +15,21 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
g_dnl_clear_detach();
|
||||||
ret = g_dnl_register("usb_dnl_fastboot");
|
ret = g_dnl_register("usb_dnl_fastboot");
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
if (g_dnl_detach())
|
||||||
|
break;
|
||||||
if (ctrlc())
|
if (ctrlc())
|
||||||
break;
|
break;
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
g_dnl_unregister();
|
g_dnl_unregister();
|
||||||
|
g_dnl_clear_detach();
|
||||||
return CMD_RET_SUCCESS;
|
return CMD_RET_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -480,6 +480,17 @@ static void cb_boot(struct usb_ep *ep, struct usb_request *req)
|
||||||
fastboot_tx_write_str("OKAY");
|
fastboot_tx_write_str("OKAY");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void do_exit_on_complete(struct usb_ep *ep, struct usb_request *req)
|
||||||
|
{
|
||||||
|
g_dnl_trigger_detach();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cb_continue(struct usb_ep *ep, struct usb_request *req)
|
||||||
|
{
|
||||||
|
fastboot_func->in_req->complete = do_exit_on_complete;
|
||||||
|
fastboot_tx_write_str("OKAY");
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_FASTBOOT_FLASH
|
#ifdef CONFIG_FASTBOOT_FLASH
|
||||||
static void cb_flash(struct usb_ep *ep, struct usb_request *req)
|
static void cb_flash(struct usb_ep *ep, struct usb_request *req)
|
||||||
{
|
{
|
||||||
|
@ -520,6 +531,9 @@ static const struct cmd_dispatch_info cmd_dispatch_info[] = {
|
||||||
}, {
|
}, {
|
||||||
.cmd = "boot",
|
.cmd = "boot",
|
||||||
.cb = cb_boot,
|
.cb = cb_boot,
|
||||||
|
}, {
|
||||||
|
.cmd = "continue",
|
||||||
|
.cb = cb_continue,
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_FASTBOOT_FLASH
|
#ifdef CONFIG_FASTBOOT_FLASH
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue