[U-Boot] [PATCH v3] fastboot: add support for reboot-bootloader command
Lukasz Majewski
l.majewski at samsung.com
Thu Mar 5 11:04:47 CET 2015
Hi Alexey,
> Hi Lukasz,
>
> Hmm, I don't see it applied to u-boot-dfu now. Do I need to add
> something ?
If possible, please look into the current status of fastboot support in
u-boot mainline (since we are at -rc3).
Since I'm not (yet) a fastboot user, please support me with testing.
Best regards,
Lukasz
>
> Thanks,
> Alexey
>
> On 26.02.2015 13:22, Lukasz Majewski wrote:
> > Hi Alexey,
> >
> >> The "fastboot reboot-bootloader" command is defined to
> >> re-enter into fastboot mode after rebooting into
> >> bootloader. This command is usually used after updating
> >> bootloader via fastboot.
> >>
> >> This commit implements only a generic side of the
> >> command - setting of the reset flag and then resetting.
> >> Setting of the reset flag is implemented using __weak
> >> fb_set_reboot_flag() function. The actual setting and
> >> checking of the reset flag should be implemented by
> >> a boot script and/or board/SoC specific code.
> >>
> >> Signed-off-by: Alexey Firago <alexey_firago at mentor.com>
> >> ---
> >>
> >> Changes in v3:
> >> - return -ENOSYS from default fb_set_reboot_flag()
> >>
> >> Changes in v2:
> >> - return error in default fb_set_reboot_flag()
> >>
> >> drivers/usb/gadget/f_fastboot.c | 13 +++++++++++++
> >> 1 file changed, 13 insertions(+)
> >>
> >> diff --git a/drivers/usb/gadget/f_fastboot.c
> >> b/drivers/usb/gadget/f_fastboot.c index 310175a..a000c25 100644
> >> --- a/drivers/usb/gadget/f_fastboot.c
> >> +++ b/drivers/usb/gadget/f_fastboot.c
> >> @@ -122,6 +122,7 @@ static struct usb_gadget_strings
> >> *fastboot_strings[] = { };
> >>
> >> static void rx_handler_command(struct usb_ep *ep, struct
> >> usb_request *req); +static int strcmp_l1(const char *s1, const
> >> char *s2);
> >> static void fastboot_complete(struct usb_ep *ep, struct
> >> usb_request *req) {
> >> @@ -317,8 +318,20 @@ static void compl_do_reset(struct usb_ep *ep,
> >> struct usb_request *req) do_reset(NULL, 0, 0, NULL);
> >> }
> >>
> >> +int __weak fb_set_reboot_flag(void)
> >> +{
> >> + return -ENOSYS;
> >> +}
> >> +
> >> static void cb_reboot(struct usb_ep *ep, struct usb_request *req)
> >> {
> >> + char *cmd = req->buf;
> >> + if (!strcmp_l1("reboot-bootloader", cmd)) {
> >> + if (fb_set_reboot_flag()) {
> >> + fastboot_tx_write_str("FAILCannot set
> >> reboot flag");
> >> + return;
> >> + }
> >> + }
> >> fastboot_func->in_req->complete = compl_do_reset;
> >> fastboot_tx_write_str("OKAY");
> >> }
> > Applied to u-boot-dfu.
> >
> > Thanks for patch!
> >
>
--
Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
More information about the U-Boot
mailing list