biosemu: Do not free vga_info->BIOSImage when it is 0xc0000
[oweals/u-boot.git] / drivers / dfu / dfu.c
index deafda29c98bf2d400e1b6ed72239e8d4c13f3b8..0560afa9ffa500b1d49a5c911268d8c6bd1070e0 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/list.h>
 #include <linux/compiler.h>
 
-static bool dfu_detach_request;
 static LIST_HEAD(dfu_list);
 static int dfu_alt_num;
 static int alt_num_cnt;
@@ -39,21 +38,6 @@ __weak bool dfu_usb_get_reset(void)
        return true;
 }
 
-bool dfu_detach(void)
-{
-       return dfu_detach_request;
-}
-
-void dfu_trigger_detach(void)
-{
-       dfu_detach_request = true;
-}
-
-void dfu_clear_detach(void)
-{
-       dfu_detach_request = false;
-}
-
 static int dfu_find_alt_num(const char *s)
 {
        int i = 0;
@@ -71,6 +55,9 @@ int dfu_init_env_entities(char *interface, char *devstr)
        char *env_bkp;
        int ret;
 
+#ifdef CONFIG_SET_DFU_ALT_INFO
+       set_dfu_alt_info(interface, devstr);
+#endif
        str_env = getenv("dfu_alt_info");
        if (!str_env) {
                error("\"dfu_alt_info\" env variable not defined!\n");
@@ -111,8 +98,12 @@ unsigned char *dfu_get_buf(struct dfu_entity *dfu)
                return dfu_buf;
 
        s = getenv("dfu_bufsiz");
-       dfu_buf_size = s ? (unsigned long)simple_strtol(s, NULL, 16) :
-                       CONFIG_SYS_DFU_DATA_BUF_SIZE;
+       if (s)
+               dfu_buf_size = (unsigned long)simple_strtol(s, NULL, 0);
+
+       if (!s || !dfu_buf_size)
+               dfu_buf_size = CONFIG_SYS_DFU_DATA_BUF_SIZE;
+
        if (dfu->max_buf_size && dfu_buf_size > dfu->max_buf_size)
                dfu_buf_size = dfu->max_buf_size;
 
@@ -289,7 +280,7 @@ static int dfu_read_buffer_fill(struct dfu_entity *dfu, void *buf, int size)
        readn = 0;
        while (size > 0) {
                /* get chunk that can be read */
-               chunk = min(size, dfu->b_left);
+               chunk = min((long)size, dfu->b_left);
                /* consume */
                if (chunk > 0) {
                        memcpy(buf, dfu->i_buf, chunk);