Message ID | 1418244184-1356-2-git-send-email-robherring2@gmail.com |
---|---|
State | Accepted |
Delegated to: | Łukasz Majewski |
Headers | show |
On Wednesday, December 10, 2014 at 09:43:04 PM, Rob Herring wrote: > From: Rob Herring <robh@kernel.org> > > 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> Hi! Again, CC Lukasz . As for the boot script implementation, I believe this should be documented in some README file, possibly in doc/README.android-fastboot . What do you think? Best regards, Marek Vasut
Hi Rob, > From: Rob Herring <robh@kernel.org> > > 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> > --- > common/cmd_fastboot.c | 4 ++++ > drivers/usb/gadget/f_fastboot.c | 14 ++++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/common/cmd_fastboot.c b/common/cmd_fastboot.c > index 909616d..b72f4f3 100644 > --- a/common/cmd_fastboot.c > +++ b/common/cmd_fastboot.c > @@ -15,17 +15,21 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int > flag, int argc, char *const argv[]) { > int ret; > > + g_dnl_clear_detach(); > ret = g_dnl_register("usb_dnl_fastboot"); > if (ret) > return ret; > > while (1) { > + if (g_dnl_detach()) > + break; > if (ctrlc()) > break; > usb_gadget_handle_interrupts(); > } > > g_dnl_unregister(); > + g_dnl_clear_detach(); > return CMD_RET_SUCCESS; > } > > diff --git a/drivers/usb/gadget/f_fastboot.c > b/drivers/usb/gadget/f_fastboot.c index 71b62e5..310175a 100644 > --- a/drivers/usb/gadget/f_fastboot.c > +++ b/drivers/usb/gadget/f_fastboot.c > @@ -480,6 +480,17 @@ static void cb_boot(struct usb_ep *ep, struct > usb_request *req) 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 > 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", > .cb = cb_boot, > + }, { > + .cmd = "continue", > + .cb = cb_continue, > }, > #ifdef CONFIG_FASTBOOT_FLASH > { Acked-by: Lukasz Majewski <l.majewski@samsung.com> Tested-by: Lukasz Majewski <l.majewski@samsung.com> (Test HW: Trats2 board) I will add this patch to u-boot-dfu tree.
diff --git a/common/cmd_fastboot.c b/common/cmd_fastboot.c index 909616d..b72f4f3 100644 --- a/common/cmd_fastboot.c +++ b/common/cmd_fastboot.c @@ -15,17 +15,21 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) { int ret; + g_dnl_clear_detach(); ret = g_dnl_register("usb_dnl_fastboot"); if (ret) return ret; while (1) { + if (g_dnl_detach()) + break; if (ctrlc()) break; usb_gadget_handle_interrupts(); } g_dnl_unregister(); + g_dnl_clear_detach(); return CMD_RET_SUCCESS; } diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c index 71b62e5..310175a 100644 --- a/drivers/usb/gadget/f_fastboot.c +++ b/drivers/usb/gadget/f_fastboot.c @@ -480,6 +480,17 @@ static void cb_boot(struct usb_ep *ep, struct usb_request *req) 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 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", .cb = cb_boot, + }, { + .cmd = "continue", + .cb = cb_continue, }, #ifdef CONFIG_FASTBOOT_FLASH {