Merge tag 'u-boot-imx-20190129' of git://git.denx.de/u-boot-imx
[oweals/u-boot.git] / drivers / dfu / dfu.c
index ff732ac309fe2aa1604652fbd43a4a2a3caffb0d..318949529b302db73867f4bd311aa6203539fe7b 100644 (file)
@@ -1,10 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * dfu.c -- DFU back-end routines
  *
  * Copyright (C) 2012 Samsung Electronics
  * author: Lukasz Majewski <l.majewski@samsung.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -57,26 +56,28 @@ int dfu_init_env_entities(char *interface, char *devstr)
 {
        const char *str_env;
        char *env_bkp;
-       int ret;
+       int ret = 0;
 
 #ifdef CONFIG_SET_DFU_ALT_INFO
        set_dfu_alt_info(interface, devstr);
 #endif
        str_env = env_get("dfu_alt_info");
        if (!str_env) {
-               error("\"dfu_alt_info\" env variable not defined!\n");
+               pr_err("\"dfu_alt_info\" env variable not defined!\n");
                return -EINVAL;
        }
 
        env_bkp = strdup(str_env);
        ret = dfu_config_entities(env_bkp, interface, devstr);
        if (ret) {
-               error("DFU entities configuration failed!\n");
-               return ret;
+               pr_err("DFU entities configuration failed!\n");
+               pr_err("(partition table does not match dfu_alt_info?)\n");
+               goto done;
        }
 
+done:
        free(env_bkp);
-       return 0;
+       return ret;
 }
 
 static unsigned char *dfu_buf;
@@ -132,7 +133,7 @@ static char *dfu_get_hash_algo(void)
                return s;
        }
 
-       error("DFU hash method: %s not supported!\n", s);
+       pr_err("DFU hash method: %s not supported!\n", s);
        return NULL;
 }
 
@@ -273,7 +274,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
 
        /* we should be in buffer now (if not then size too large) */
        if ((dfu->i_buf + size) > dfu->i_buf_end) {
-               error("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);
                dfu_transaction_cleanup(dfu);
                return -1;
@@ -451,7 +452,7 @@ int dfu_config_entities(char *env, char *interface, char *devstr)
        if (s) {
                ret = hash_lookup_algo(s, &dfu_hash_algo);
                if (ret)
-                       error("Hash algorithm %s not supported\n", s);
+                       pr_err("Hash algorithm %s not supported\n", s);
        }
 
        dfu = calloc(sizeof(*dfu), dfu_alt_num);
@@ -463,7 +464,7 @@ int dfu_config_entities(char *env, char *interface, char *devstr)
                ret = dfu_fill_entity(&dfu[i], s, alt_num_cnt, interface,
                                      devstr);
                if (ret) {
-                       free(dfu);
+                       /* We will free "dfu" in dfu_free_entities() */
                        return -1;
                }
 
@@ -576,7 +577,7 @@ int dfu_write_from_mem_addr(struct dfu_entity *dfu, void *buf, int size)
                      dp, left, write);
                ret = dfu_write(dfu, dp, write, i);
                if (ret) {
-                       error("DFU write failed\n");
+                       pr_err("DFU write failed\n");
                        return ret;
                }
 
@@ -586,7 +587,7 @@ int dfu_write_from_mem_addr(struct dfu_entity *dfu, void *buf, int size)
 
        ret = dfu_flush(dfu, NULL, 0, i);
        if (ret)
-               error("DFU flush failed!");
+               pr_err("DFU flush failed!");
 
        return ret;
 }