Hi Patrick On 12/11/20 1:36 PM, Patrick Delaunay wrote: > From: Patrick Delaunay <patrick.delau...@st.com> > > Remove the test on data->dfu_seq, because dfu_seq=0 not only when > the DFU is not started (mask with 0xffff). This flush is mandatory > as the final treatment, common with USB, is done in DFU callback. > > This patch avoids issue if the received length is a multiple of > the DFU packet. > > For example if size of bootfs partition is egual to 0x4000000, > data->dfu_seq=0 at the end of the partition, the flush it not > requested and the phase is not increased in the callback. > U-Boot continue to request the bootfs in the next GetPhase command. > > Fixes: 468f0508b58b ("stm32mp: stm32prog: add serial link support") > Signed-off-by: Patrick Delaunay <patrick.delau...@st.com> > Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com> > --- > > .../mach-stm32mp/cmd_stm32prog/stm32prog_serial.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c > b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c > index 8aad4be467..8fba92b2b5 100644 > --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c > +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c > @@ -397,14 +397,13 @@ static u8 stm32prog_start(struct stm32prog_data *data, > u32 address) > if (!dfu_entity) > return -ENODEV; > > - if (data->dfu_seq) { > - ret = dfu_flush(dfu_entity, NULL, 0, data->dfu_seq); > - data->dfu_seq = 0; > - if (ret) { > - stm32prog_err("DFU flush failed [%d]", ret); > - return ret; > - } > + ret = dfu_flush(dfu_entity, NULL, 0, data->dfu_seq); > + if (ret) { > + stm32prog_err("DFU flush failed [%d]", ret); > + return ret; > } > + data->dfu_seq = 0; > + > printf("\n received length = 0x%x\n", data->cursor); > if (data->header.present) { > if (data->cursor !=
Reviewed-by: Patrice Chotard <patrice.chot...@foss.st.com> Thanks Patrice