[PATCH] arm: stm32mp: stm32prog: always flush DFU on start command for uart

Patrice CHOTARD patrice.chotard at foss.st.com
Wed Jan 6 15:37:58 CET 2021


Hi Patrick

On 12/11/20 1:36 PM, Patrick Delaunay wrote:
> From: Patrick Delaunay <patrick.delaunay at 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.delaunay at st.com>
> Signed-off-by: Patrick Delaunay <patrick.delaunay at 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.chotard at foss.st.com>

Thanks

Patrice



More information about the U-Boot mailing list