]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/dfu/dfu.c
Merge branch 'master' of git://www.denx.de/git/u-boot-imx
[karo-tx-uboot.git] / drivers / dfu / dfu.c
index b8d382d9b5dfefd453557ff122c2a3399b31d318..3512b149c560fc7fa32fa169bbfbd9ac70875bda 100644 (file)
@@ -332,7 +332,7 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                case DFU_RAM_ADDR:
                        break;
                default:
-                       if (dfu->r_left >= dfu_buf_size) {
+                       if (dfu->r_left > dfu_buf_size) {
                                printf("%s: File too big for buffer\n",
                                       __func__);
                                return -EOVERFLOW;
@@ -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) {
@@ -412,6 +413,9 @@ static int dfu_fill_entity(struct dfu_entity *dfu, char *s, int alt,
        } else if (strcmp(interface, "ram") == 0) {
                if (dfu_fill_entity_ram(dfu, devstr, s))
                        return -1;
+       } else if (strcmp(interface, "sf") == 0) {
+               if (dfu_fill_entity_sf(dfu, devstr, s))
+                       return -1;
        } else {
                printf("%s: Device %s not (yet) supported!\n",
                       __func__,  interface);
@@ -427,6 +431,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)