[PATCH] dfu: dfu_mtd: remove the mtd_block_op error when mtd_lock is not supported
Sughosh Ganu
sughosh.ganu at linaro.org
Wed Mar 10 12:15:27 CET 2021
On Wed, 10 Mar 2021 at 14:57, Patrick Delaunay <patrick.delaunay at foss.st.com>
wrote:
> Fix the result of DFU_OP_WRITE operation in mtd_block_op function
> when mtd_lock is not supported (-EOPNOTSUPP) to avoid DFU stack
> error on the DFU manifestation of the MTD device, when
> dfu_flush_medium_mtd is called.
>
> Without this patch, dfu-util failed on dfuERROR state at the end
> of the write operation on the alternate even if MTD write
> opeartion is correctly performed.
>
> $> dfu-util -a 3 -D test.bin
> ....
> DFU mode device DFU version 0110
> Device returned transfer size 4096
> Copying data from PC to DFU device
> ....
> Download [=========================] 100% 225469 bytes
> Download done.
> state(10) = dfuERROR, status(14) = Something went wrong,
> but the device does not know what it was Done!
>
> Fixes: 65f3fc18fc1e ("dfu_mtd: Add provision to unlock mtd device")
> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> ---
>
Acked-by: Sughosh Ganu <sughosh.ganu at linaro.org>
>
> drivers/dfu/dfu_mtd.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/dfu/dfu_mtd.c b/drivers/dfu/dfu_mtd.c
> index ca67585a7e..ec40b8f6bb 100644
> --- a/drivers/dfu/dfu_mtd.c
> +++ b/drivers/dfu/dfu_mtd.c
> @@ -150,7 +150,9 @@ static int mtd_block_op(enum dfu_op op, struct
> dfu_entity *dfu,
> /* Write done, lock again */
> debug("Locking the mtd device\n");
> ret = mtd_lock(mtd, lock_ofs, lock_len);
> - if (ret && ret != -EOPNOTSUPP)
> + if (ret == -EOPNOTSUPP)
> + ret = 0;
> + else if (ret)
> printf("MTD device lock failed\n");
> }
> return ret;
> --
> 2.17.1
>
>
More information about the U-Boot
mailing list