
On 5/28/21 2:54 PM, Patrice CHOTARD wrote:
Hi Patrick
On 5/18/21 3:12 PM, Patrick Delaunay wrote:
Add error callback in dfu stack to manage some board specific behavior on DFU targets.
Signed-off-by: Patrick Delaunay patrick.delaunay@foss.st.com
drivers/dfu/dfu.c | 12 ++++++++++++ include/dfu.h | 11 +++++++++++ 2 files changed, 23 insertions(+)
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c index 213a20e7bc..ff1859d946 100644 --- a/drivers/dfu/dfu.c +++ b/drivers/dfu/dfu.c @@ -44,6 +44,14 @@ __weak void dfu_initiated_callback(struct dfu_entity *dfu) { }
+/*
- The purpose of the dfu_error_callback() function is to
- provide callback for dfu user
- */
+__weak void dfu_error_callback(struct dfu_entity *dfu, const char *msg) +{ +}
/*
- The purpose of the dfu_usb_get_reset() function is to
- provide information if after USB_DETACH request
@@ -342,6 +350,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num) printf("%s: Wrong sequence number! [%d] [%d]\n", __func__, dfu->i_blk_seq_num, blk_seq_num); dfu_transaction_cleanup(dfu);
return -1; }dfu_error_callback(dfu, "Wrong sequence number");
@@ -366,6 +375,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num) ret = dfu_write_buffer_drain(dfu); if (ret) { dfu_transaction_cleanup(dfu);
} }dfu_error_callback(dfu, "DFU write error"); return ret;
@@ -375,6 +385,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num) pr_err("Buffer overflow! (0x%p + 0x%x > 0x%p)\n", dfu->i_buf, size, dfu->i_buf_end); dfu_transaction_cleanup(dfu);
return -1; }dfu_error_callback(dfu, "Buffer overflow");
@@ -386,6 +397,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num) ret = dfu_write_buffer_drain(dfu); if (ret) { dfu_transaction_cleanup(dfu);
} }dfu_error_callback(dfu, "DFU write error"); return ret;
diff --git a/include/dfu.h b/include/dfu.h index d18b701728..1963e9ffb9 100644 --- a/include/dfu.h +++ b/include/dfu.h @@ -383,6 +383,17 @@ void dfu_initiated_callback(struct dfu_entity *dfu); */ void dfu_flush_callback(struct dfu_entity *dfu);
+/**
- dfu_error_callback() - weak callback called at the DFU write error
- It is a callback function called by DFU stack after DFU write error.
- This function allows to manage some board specific behavior on DFU targets
- @dfu: pointer to the dfu_entity which cause the error
- @msg: the message of the error
- */
+void dfu_error_callback(struct dfu_entity *dfu, const char *msg);
int dfu_transaction_initiate(struct dfu_entity *dfu, bool read); void dfu_transaction_cleanup(struct dfu_entity *dfu);
Reviewed-by: Patrice Chotard patrice.chotard@foss.st.com
Thanks Patrice _______________________________________________ Uboot-stm32 mailing list Uboot-stm32@st-md-mailman.stormreply.com https://st-md-mailman.stormreply.com/mailman/listinfo/uboot-stm32
Applied on u-boot-stm32/next
Thanks