From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Firago Date: Thu, 5 Mar 2015 14:29:25 +0300 Subject: [U-Boot] [PATCH v3] fastboot: add support for reboot-bootloader command In-Reply-To: <20150305110447.00b09c2a@amdc2363> References: <1424873447-22426-1-git-send-email-alexey_firago@mentor.com> <20150226112230.78fe4b1e@amdc2363> <54F81EA5.9080800@mentor.com> <20150305110447.00b09c2a@amdc2363> Message-ID: <54F83E15.3050702@mentor.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Lukasz, Here is how I've tested "v3 fastboot: add support for reboot-bootloader command" patch: * Applied it to master ( 7ae8350f67eea861280a4cbd2d067777a0e87153) * Board to test - Nitrogen6q * Applied attached "0001-test-nitrogen6x-fastboot-add-reboot-bootloader-suppo.patch" with the board specific flags handling functions and envs * On "fastboot reboot-bootloader" command, nitrogen6x specific fb_set_reboot_flag() is called, setting bit in the SNVS_LPGPR register (as in Freescale's releases) * On reboot board checks this bit in board's misc_init_r() and sets "fastboot_flag" env accordingly * bootscript handles "fastboot_flag" Let me know if I've missed something. Regards, Alexey On 05.03.2015 13:04, Lukasz Majewski wrote: > 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 >>>> --- >>>> >>>> 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! >>> > > -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-test-nitrogen6x-fastboot-add-reboot-bootloader-suppo.patch Type: text/x-patch Size: 2819 bytes Desc: not available URL: