[PATCH 6/8] stm32mp: stm32prog: handle interruption during the first enumeration
Patrice CHOTARD
patrice.chotard at foss.st.com
Fri Apr 22 09:42:48 CEST 2022
Hi Patrick
On 3/28/22 19:25, Patrick Delaunay wrote:
> When an interruption is received during the first USB enumeration
> used to received the FlashLayout, with handle ctrl-c, the second
> enumeration is not needed and the result for stm32prog_usb_loop
> is false (reset is not needed).
>
> This patch avoids the need of a second ctrl to interrupt the command
> stm32prog.
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> ---
>
> arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
> index 82b702f93b..a8b57c4d8f 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
> @@ -206,9 +206,12 @@ bool stm32prog_usb_loop(struct stm32prog_data *data, int dev)
> g_dnl_set_product(product);
>
> if (stm32prog_data->phase == PHASE_FLASHLAYOUT) {
> + /* forget any previous Control C */
> + clear_ctrlc();
> ret = run_usb_dnl_gadget(dev, "usb_dnl_dfu");
> - if (ret || stm32prog_data->phase != PHASE_FLASHLAYOUT)
> - return ret;
> + /* DFU reset received, no error or CtrlC */
> + if (ret || stm32prog_data->phase != PHASE_FLASHLAYOUT || had_ctrlc())
> + return ret; /* true = reset on DFU error */
> /* prepare the second enumeration with the FlashLayout */
> stm32prog_dfu_init(data);
> }
Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
Thanks
Patrice
More information about the U-Boot
mailing list