mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-24 22:36:05 +00:00
dfu: add error callback
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> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
This commit is contained in:
parent
d4cb402577
commit
d4710326c8
2 changed files with 23 additions and 0 deletions
|
@ -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
|
* The purpose of the dfu_usb_get_reset() function is to
|
||||||
* provide information if after USB_DETACH request
|
* 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",
|
printf("%s: Wrong sequence number! [%d] [%d]\n",
|
||||||
__func__, dfu->i_blk_seq_num, blk_seq_num);
|
__func__, dfu->i_blk_seq_num, blk_seq_num);
|
||||||
dfu_transaction_cleanup(dfu);
|
dfu_transaction_cleanup(dfu);
|
||||||
|
dfu_error_callback(dfu, "Wrong sequence number");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
ret = dfu_write_buffer_drain(dfu);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dfu_transaction_cleanup(dfu);
|
dfu_transaction_cleanup(dfu);
|
||||||
|
dfu_error_callback(dfu, "DFU write error");
|
||||||
return ret;
|
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,
|
pr_err("Buffer overflow! (0x%p + 0x%x > 0x%p)\n", dfu->i_buf,
|
||||||
size, dfu->i_buf_end);
|
size, dfu->i_buf_end);
|
||||||
dfu_transaction_cleanup(dfu);
|
dfu_transaction_cleanup(dfu);
|
||||||
|
dfu_error_callback(dfu, "Buffer overflow");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
ret = dfu_write_buffer_drain(dfu);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dfu_transaction_cleanup(dfu);
|
dfu_transaction_cleanup(dfu);
|
||||||
|
dfu_error_callback(dfu, "DFU write error");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -377,6 +377,17 @@ void dfu_initiated_callback(struct dfu_entity *dfu);
|
||||||
*/
|
*/
|
||||||
void dfu_flush_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);
|
int dfu_transaction_initiate(struct dfu_entity *dfu, bool read);
|
||||||
void dfu_transaction_cleanup(struct dfu_entity *dfu);
|
void dfu_transaction_cleanup(struct dfu_entity *dfu);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue