summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@foss.st.com>2021-03-10 10:27:22 +0100
committerPatrick Delaunay <patrick.delaunay@foss.st.com>2021-05-28 11:21:51 +0200
commita5bb384caa050660220270beb19452bbe927a72b (patch)
treec1b40d86fc8fb47657b6f03d5b19af0ae64edb4c /drivers
parentaab8b17e94c447561a402bc7508b73fd8ee712e5 (diff)
dfu: dfu_mtd: remove the mtd_block_op error when mtd_lock is not supported
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@foss.st.com> Acked-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dfu/dfu_mtd.c4
1 files changed, 3 insertions, 1 deletions
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;