FLASH/STMSMI: fix clang "dead store" warning
[fw/openocd] / src / flash / nor / tcl.c
index 3dc6cff3fd47bce92ea9776832348856431c7a2d..92b85be7e79917527f44e72e217fa329df271bed 100644 (file)
@@ -106,10 +106,10 @@ COMMAND_HANDLER(handle_flash_info_command)
                retval = p->driver->info(p, buf, sizeof(buf));
                command_print(CMD_CTX, "%s", buf);
                if (retval != ERROR_OK)
-                       LOG_ERROR("error retrieving flash info (%d)", retval);
+                       LOG_ERROR("error retrieving flash info");
        }
 
-       return ERROR_OK;
+       return retval;
 }
 
 COMMAND_HANDLER(handle_flash_probe_command)
@@ -132,23 +132,14 @@ COMMAND_HANDLER(handle_flash_probe_command)
                {
                        command_print(CMD_CTX, "flash '%s' found at 0x%8.8" PRIx32, p->driver->name, p->base);
                }
-               else if (retval == ERROR_FLASH_BANK_INVALID)
-               {
-                       command_print(CMD_CTX, "probing failed for flash bank '#%s' at 0x%8.8" PRIx32,
-                                                 CMD_ARGV[0], p->base);
-               }
-               else
-               {
-                       command_print(CMD_CTX, "unknown error when probing flash bank '#%s' at 0x%8.8" PRIx32,
-                                                 CMD_ARGV[0], p->base);
-               }
        }
        else
        {
                command_print(CMD_CTX, "flash bank '#%s' is out of bounds", CMD_ARGV[0]);
+               retval = ERROR_FAIL;
        }
 
-       return ERROR_OK;
+       return retval;
 }
 
 COMMAND_HANDLER(handle_flash_erase_check_command)
@@ -194,7 +185,7 @@ COMMAND_HANDLER(handle_flash_erase_check_command)
                              erase_state);
        }
 
-       return ERROR_OK;
+       return retval;
 }
 
 COMMAND_HANDLER(handle_flash_erase_address_command)
@@ -364,7 +355,7 @@ COMMAND_HANDLER(handle_flash_protect_command)
                        (int) last, p->bank_number);
        }
 
-       return ERROR_OK;
+       return retval;
 }
 
 COMMAND_HANDLER(handle_flash_write_image_command)
@@ -613,9 +604,23 @@ COMMAND_HANDLER(handle_flash_write_bank_command)
                return ERROR_OK;
        }
 
-       buffer = malloc(fileio.size);
+       int filesize;
+       retval = fileio_size(&fileio, &filesize);
+       if (retval != ERROR_OK)
+       {
+               fileio_close(&fileio);
+               return retval;
+       }
+
+       buffer = malloc(filesize);
+       if (buffer == NULL)
+       {
+               fileio_close(&fileio);
+               LOG_ERROR("Out of memory");
+               return ERROR_FAIL;
+       }
        size_t buf_cnt;
-       if (fileio_read(&fileio, fileio.size, buffer, &buf_cnt) != ERROR_OK)
+       if (fileio_read(&fileio, filesize, buffer, &buf_cnt) != ERROR_OK)
        {
                free(buffer);
                fileio_close(&fileio);
@@ -631,8 +636,8 @@ COMMAND_HANDLER(handle_flash_write_bank_command)
        {
                command_print(CMD_CTX, "wrote %ld bytes from file %s to flash bank %u"
                                " at offset 0x%8.8" PRIx32 " in %fs (%0.3f KiB/s)",
-                               (long)fileio.size, CMD_ARGV[1], p->bank_number, offset,
-                               duration_elapsed(&bench), duration_kbps(&bench, fileio.size));
+                               (long)filesize, CMD_ARGV[1], p->bank_number, offset,
+                               duration_elapsed(&bench), duration_kbps(&bench, filesize));
        }
 
        fileio_close(&fileio);
@@ -848,9 +853,9 @@ COMMAND_HANDLER(handle_flash_banks_command)
        unsigned n = 0;
        for (struct flash_bank *p = flash_bank_list(); p; p = p->next, n++)
        {
-               LOG_USER("#%" PRIu32 " : %s at 0x%8.8" PRIx32 ", size 0x%8.8" PRIx32 ", "
+               LOG_USER("#%" PRIu32 " : %s (%s) at 0x%8.8" PRIx32 ", size 0x%8.8" PRIx32 ", "
                        "buswidth %u, chipwidth %u", p->bank_number,
-                       p->driver->name, p->base, p->size,
+                       p->name, p->driver->name, p->base, p->size,
                        p->bus_width, p->chip_width);
        }
        return ERROR_OK;