summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/dfu/dfu.c3
-rw-r--r--include/dfu.h2
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index b8d382d..897dfab 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -401,6 +401,7 @@ static int dfu_fill_entity(struct dfu_entity *dfu, char *s, int alt,
dfu->alt = alt;
dfu->max_buf_size = 0;
+ dfu->free_entity = NULL;
/* Specific for mmc device */
if (strcmp(interface, "mmc") == 0) {
@@ -427,6 +428,8 @@ void dfu_free_entities(void)
list_for_each_entry_safe_reverse(dfu, p, &dfu_list, list) {
list_del(&dfu->list);
+ if (dfu->free_entity)
+ dfu->free_entity(dfu);
t = dfu;
}
if (t)
diff --git a/include/dfu.h b/include/dfu.h
index d5562dc..43814b3 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -110,6 +110,8 @@ struct dfu_entity {
int (*flush_medium)(struct dfu_entity *dfu);
unsigned int (*poll_timeout)(struct dfu_entity *dfu);
+ void (*free_entity)(struct dfu_entity *dfu);
+
struct list_head list;
/* on the fly state */