aboutsummaryrefslogtreecommitdiff
path: root/arch/arm
diff options
context:
space:
mode:
authorPatrick Delaunay2022-03-28 19:25:31 +0200
committerPatrice Chotard2022-05-10 10:56:39 +0200
commit7f1121a85a5c68a0df137d0b161184a39a583ad2 (patch)
treea94b8cd390f188951c37d23fc1952151945aa5ff /arch/arm
parent2a4fe0ee48f83e63afcda146b85e23811e147393 (diff)
stm32mp: stm32prog: handle interruption during the first enumeration
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@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c7
1 files 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 82b702f93b2..a8b57c4d8f0 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);
}