Hi Heiko, > Hello Tom, > > Am 26.01.21 um 12:46 schrieb Tom Rini: > > On Tue, Jan 26, 2021 at 06:23:24AM +0100, Heiko Schocher wrote: > > > >> Hello Tom, > >> > >> this patch is assigned to you ... any issues with it, or can > >> it go into master? > > > > As Lukasz is back and reviewing code and making PRs, he should take > > it. Thanks. > > Ok, so I moved the patch in patchwork to Lukasz. > > Thanks! > > bye, > Heiko > > > > > >> > >> Thanks! > >> > >> bye, > >> Heiko > >> > >> Am 11.01.21 um 11:19 schrieb Heiko Schocher: > >>> add support for the UUU commands ACmd and UCmd. > >>> > >>> Enable them through the Kconfig option > >>> CONFIG_FASTBOOT_UUU_SUPPORT > >>> > >>> base was commit in NXP kernel > >>> 9b149c2a2882: ("MLK-18591-3 android: Add FSL android fastboot > >>> support") > >>> > >>> and ported it to current mainline. Tested this patch > >>> on imx6ul based board. > >>> > >>> Signed-off-by: Heiko Schocher <h...@denx.de> > >>> --- > >>> azure build: > >>> https://dev.azure.com/hs0298/hs/_build/results?buildId=57&view=results > >>> > >>> version uuu tool used for tests: > >>> commit 3870fb781b35: ("fastboot: default to logical-block-size > >>> 4096") > >>> > >>> doc/android/fastboot-protocol.rst | 5 +++ > >>> doc/android/fastboot.rst | 2 + > >>> drivers/fastboot/Kconfig | 7 ++++ > >>> drivers/fastboot/fb_command.c | 62 > >>> +++++++++++++++++++++++++++++++ drivers/usb/gadget/f_fastboot.c > >>> | 17 +++++++++ include/fastboot.h | 7 ++++ > >>> 6 files changed, 100 insertions(+) > >>> > >>> diff --git a/doc/android/fastboot-protocol.rst > >>> b/doc/android/fastboot-protocol.rst index > >>> e723659e49c..e8cbd7f24ea 100644 --- > >>> a/doc/android/fastboot-protocol.rst +++ > >>> b/doc/android/fastboot-protocol.rst @@ -144,6 +144,11 @@ Command > >>> Reference > >>> "powerdown" Power off the device. > >>> > >>> + "ucmd" execute any bootloader command and wait > >>> until it > >>> + finishs. > >>> + > >>> + "acmd" execute any bootloader command, do not > >>> wait. + > >>> Client Variables > >>> ---------------- > >>> > >>> diff --git a/doc/android/fastboot.rst b/doc/android/fastboot.rst > >>> index 2877c3cbaaa..b58d1b5b31a 100644 > >>> --- a/doc/android/fastboot.rst > >>> +++ b/doc/android/fastboot.rst > >>> @@ -19,6 +19,8 @@ The current implementation supports the > >>> following standard commands: > >>> - ``reboot`` > >>> - ``reboot-bootloader`` > >>> - ``set_active`` (only a stub implementation which always > >>> succeeds) +- ``ucmd`` (if enabled) > >>> +- ``acmd`` (if enabled) > >>> > >>> The following OEM commands are supported (if enabled): > >>> > >>> diff --git a/drivers/fastboot/Kconfig b/drivers/fastboot/Kconfig > >>> index 4352ba67a71..b1f8cd74a15 100644 > >>> --- a/drivers/fastboot/Kconfig > >>> +++ b/drivers/fastboot/Kconfig > >>> @@ -72,6 +72,13 @@ config FASTBOOT_FLASH > >>> the downloaded image to a non-volatile storage device. > >>> Define this to enable the "fastboot flash" command. > >>> > >>> +config FASTBOOT_UUU_SUPPORT > >>> + bool "Enable FASTBOOT i.MX UUU special command" > >>> + default y if ARCH_MX7 || ARCH_MX6 || ARCH_IMX8 || > >>> ARCH_IMX8M || ARCH_MX7ULP > >>> + select FSL_FASTBOOT > >>> + help > >>> + The fastboot protocol includes "UCmd" command and > >>> "ACmd" command + > >>> choice > >>> prompt "Flash provider for FASTBOOT" > >>> depends on FASTBOOT_FLASH > >>> diff --git a/drivers/fastboot/fb_command.c > >>> b/drivers/fastboot/fb_command.c index d3c578672dc..31a47e46386 > >>> 100644 --- a/drivers/fastboot/fb_command.c > >>> +++ b/drivers/fastboot/fb_command.c > >>> @@ -43,6 +43,11 @@ static void reboot_recovery(char *, char *); > >>> static void oem_format(char *, char *); > >>> #endif > >>> > >>> +#if CONFIG_IS_ENABLED(FASTBOOT_UUU_SUPPORT) > >>> +static void run_ucmd(char *, char *); > >>> +static void run_acmd(char *, char *); > >>> +#endif > >>> + > >>> static const struct { > >>> const char *command; > >>> void (*dispatch)(char *cmd_parameter, char *response); > >>> @@ -99,6 +104,16 @@ static const struct { > >>> .dispatch = oem_format, > >>> }, > >>> #endif > >>> +#if CONFIG_IS_ENABLED(FASTBOOT_UUU_SUPPORT) > >>> + [FASTBOOT_COMMAND_UCMD] = { > >>> + .command = "UCmd", > >>> + .dispatch = run_ucmd, > >>> + }, > >>> + [FASTBOOT_COMMAND_ACMD] = { > >>> + .command = "ACmd", > >>> + .dispatch = run_acmd, > >>> + }, > >>> +#endif > >>> }; > >>> > >>> /** > >>> @@ -309,6 +324,53 @@ static void erase(char *cmd_parameter, char > >>> *response) } > >>> #endif > >>> > >>> +#if CONFIG_IS_ENABLED(FASTBOOT_UUU_SUPPORT) > >>> +/** > >>> + * run_ucmd() - Execute the UCmd command > >>> + * > >>> + * @cmd_parameter: Pointer to command parameter > >>> + * @response: Pointer to fastboot response buffer > >>> + */ > >>> +static void run_ucmd(char *cmd_parameter, char *response) > >>> +{ > >>> + if (!cmd_parameter) { > >>> + pr_err("missing slot suffix\n"); > >>> + fastboot_fail("missing command", response); > >>> + return; > >>> + } > >>> + > >>> + if (run_command(cmd_parameter, 0)) > >>> + fastboot_fail("", response); > >>> + else > >>> + fastboot_okay(NULL, response); > >>> +} > >>> + > >>> +static char g_a_cmd_buff[64]; > >>> + > >>> +void fastboot_acmd_complete(void) > >>> +{ > >>> + run_command(g_a_cmd_buff, 0); > >>> +} > >>> + > >>> +/** > >>> + * run_acmd() - Execute the ACmd command > >>> + * > >>> + * @cmd_parameter: Pointer to command parameter > >>> + * @response: Pointer to fastboot response buffer > >>> + */ > >>> +static void run_acmd(char *cmd_parameter, char *response) > >>> +{ > >>> + if (!cmd_parameter) { > >>> + pr_err("missing slot suffix\n"); > >>> + fastboot_fail("missing command", response); > >>> + return; > >>> + } > >>> + > >>> + strcpy(g_a_cmd_buff, cmd_parameter); > >>> + fastboot_okay(NULL, response); > >>> +} > >>> +#endif > >>> + > >>> /** > >>> * reboot_bootloader() - Sets reboot bootloader flag. > >>> * > >>> diff --git a/drivers/usb/gadget/f_fastboot.c > >>> b/drivers/usb/gadget/f_fastboot.c index d1d087e12b2..bf52d2505f4 > >>> 100644 --- a/drivers/usb/gadget/f_fastboot.c > >>> +++ b/drivers/usb/gadget/f_fastboot.c > >>> @@ -419,6 +419,18 @@ static void do_bootm_on_complete(struct > >>> usb_ep *ep, struct usb_request *req) do_exit_on_complete(ep, req); > >>> } > >>> > >>> +#if CONFIG_IS_ENABLED(FASTBOOT_UUU_SUPPORT) > >>> +static void do_acmd_complete(struct usb_ep *ep, struct > >>> usb_request *req) +{ > >>> + /* When usb dequeue complete will be called > >>> + * Need status value before call run_command. > >>> + * otherwise, host can't get last message. > >>> + */ > >>> + if (req->status == 0) > >>> + fastboot_acmd_complete(); > >>> +} > >>> +#endif > >>> + > >>> static void rx_handler_command(struct usb_ep *ep, struct > >>> usb_request *req) { > >>> char *cmdbuf = req->buf; > >>> @@ -457,6 +469,11 @@ static void rx_handler_command(struct usb_ep > >>> *ep, struct usb_request *req) case > >>> FASTBOOT_COMMAND_REBOOT_RECOVERY: fastboot_func->in_req->complete > >>> = compl_do_reset; break; > >>> +#if CONFIG_IS_ENABLED(FASTBOOT_UUU_SUPPORT) > >>> + case FASTBOOT_COMMAND_ACMD: > >>> + fastboot_func->in_req->complete = > >>> do_acmd_complete; > >>> + break; > >>> +#endif > >>> } > >>> } > >>> > >>> diff --git a/include/fastboot.h b/include/fastboot.h > >>> index 8e9ee80907d..ef8cd842bb3 100644 > >>> --- a/include/fastboot.h > >>> +++ b/include/fastboot.h > >>> @@ -38,6 +38,10 @@ enum { > >>> #if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_FORMAT) > >>> FASTBOOT_COMMAND_OEM_FORMAT, > >>> #endif > >>> +#if CONFIG_IS_ENABLED(FASTBOOT_UUU_SUPPORT) > >>> + FASTBOOT_COMMAND_ACMD, > >>> + FASTBOOT_COMMAND_UCMD, > >>> +#endif > >>> > >>> FASTBOOT_COMMAND_COUNT > >>> }; > >>> @@ -172,4 +176,7 @@ void fastboot_data_download(const void > >>> *fastboot_data, */ > >>> void fastboot_data_complete(char *response); > >>> > >>> +#if CONFIG_IS_ENABLED(FASTBOOT_UUU_SUPPORT) > >>> +void fastboot_acmd_complete(void); > >>> +#endif > >>> #endif /* _FASTBOOT_H_ */ > >>> > >> > >> -- > >> DENX Software Engineering GmbH, Managing Director: Wolfgang > >> Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, > >> Germany Phone: +49-8142-66989-52 Fax: +49-8142-66989-80 Email: > >> h...@denx.de > > >
As Roman has re-send the cmd:bcb:* patches I will take this one and prepare PR in a few days time. Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lu...@denx.de
pgpu_PBpDDBYt.pgp
Description: OpenPGP digital signature