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 <[email protected]>
> ---
> 
>  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);
>       }

Applied to u-boot-stm32

Thanks
Patrice

Reply via email to