retire ERROR_INVALID_ARGUMENTS and replace with ERROR_COMMAND_SYNTAX_ERROR
[fw/openocd] / src / flash / nor / tms470.c
index c1681f1971ddc65f7be89be9e4e3b0fc6708bf80..bf708be2d90d889a4c277dfb1bf4aa2e048f7349 100644 (file)
@@ -21,7 +21,6 @@
 #include "config.h"
 #endif
 
-#include "tms470.h"
 #include "imp.h"
 
 
                       Internal Support, Helpers
    ---------------------------------------------------------------------- */
 
+struct tms470_flash_bank
+{
+       unsigned ordinal;
+
+       /* device identification register */
+       uint32_t device_ident_reg;
+       uint32_t silicon_version;
+       uint32_t technology_family;
+       uint32_t rom_flash;
+       uint32_t part_number;
+       const char * part_name;
+
+};
+
 static const struct flash_sector TMS470R1A256_SECTORS[] = {
        {0x00000000, 0x00002000, -1, -1},
        {0x00002000, 0x00002000, -1, -1},
@@ -116,7 +129,7 @@ static int tms470_read_part_info(struct flash_bank *bank)
        uint32_t technology_family;
        uint32_t rom_flash;
        uint32_t part_number;
-       char *part_name;
+       const char *part_name;
 
        /* we shall not rely on the caller in this test, this function allocates memory,
           thus and executing the code more than once may cause memory leak */
@@ -139,6 +152,12 @@ static int tms470_read_part_info(struct flash_bank *bank)
        rom_flash = (device_ident_reg >> 10) & 1;
        part_number = (device_ident_reg >> 3) & 0x7f;
 
+       if (bank->sectors)
+       {
+               free(bank->sectors);
+               bank->sectors = NULL;
+       }
+
        /*
         * If the part number is known, determine if the flash bank is valid
         * based on the base address being within the known flash bank
@@ -295,7 +314,7 @@ COMMAND_HANDLER(tms470_handle_flash_keyset_command)
        if (CMD_ARGC > 4)
        {
                command_print(CMD_CTX, "tms470 flash_keyset <key0> <key1> <key2> <key3>");
-               return ERROR_INVALID_ARGUMENTS;
+               return ERROR_COMMAND_SYNTAX_ERROR;
        }
        else if (CMD_ARGC == 4)
        {
@@ -309,7 +328,7 @@ COMMAND_HANDLER(tms470_handle_flash_keyset_command)
                        {
                                command_print(CMD_CTX, "could not process flash key %s", CMD_ARGV[i]);
                                LOG_ERROR("could not process flash key %s", CMD_ARGV[i]);
-                               return ERROR_INVALID_ARGUMENTS;
+                               return ERROR_COMMAND_SYNTAX_ERROR;
                        }
                }
 
@@ -318,7 +337,7 @@ COMMAND_HANDLER(tms470_handle_flash_keyset_command)
        else if (CMD_ARGC != 0)
        {
                command_print(CMD_CTX, "tms470 flash_keyset <key0> <key1> <key2> <key3>");
-               return ERROR_INVALID_ARGUMENTS;
+               return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
        if (keysSet)
@@ -359,7 +378,7 @@ COMMAND_HANDLER(tms470_handle_osc_megahertz_command)
        if (CMD_ARGC > 1)
        {
                command_print(CMD_CTX, "tms470 osc_megahertz <MHz>");
-               return ERROR_INVALID_ARGUMENTS;
+               return ERROR_COMMAND_SYNTAX_ERROR;
        }
        else if (CMD_ARGC == 1)
        {
@@ -371,7 +390,7 @@ COMMAND_HANDLER(tms470_handle_osc_megahertz_command)
                LOG_ERROR("osc_megahertz must be positive and non-zero!");
                command_print(CMD_CTX, "osc_megahertz must be positive and non-zero!");
                oscMHz = 12;
-               return ERROR_INVALID_ARGUMENTS;
+               return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
        command_print(CMD_CTX, "osc_megahertz=%d", oscMHz);
@@ -388,7 +407,7 @@ COMMAND_HANDLER(tms470_handle_plldis_command)
        if (CMD_ARGC > 1)
        {
                command_print(CMD_CTX, "tms470 plldis <0 | 1>");
-               return ERROR_INVALID_ARGUMENTS;
+               return ERROR_COMMAND_SYNTAX_ERROR;
        }
        else if (CMD_ARGC == 1)
        {
@@ -1209,7 +1228,7 @@ static int tms470_protect_check(struct flash_bank *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_info(struct flash_bank *bank, char *buf, int buf_size)
+static int get_tms470_info(struct flash_bank *bank, char *buf, int buf_size)
 {
        int used = 0;
        struct tms470_flash_bank *tms470_info = bank->driver_priv;
@@ -1225,13 +1244,11 @@ static int tms470_info(struct flash_bank *bank, char *buf, int buf_size)
                return ERROR_FLASH_OPERATION_FAILED;
        }
 
-       used += snprintf(buf, buf_size, "\ntms470 information: Chip is %s\n", tms470_info->part_name);
+       used = snprintf(buf, buf_size, "\ntms470 information: Chip is %s\n", tms470_info->part_name);
        buf += used;
        buf_size -= used;
 
-       used += snprintf(buf, buf_size, "Flash protection level 2 is %s\n", tms470_check_flash_unlocked(bank->target) == ERROR_OK ? "disabled" : "enabled");
-       buf += used;
-       buf_size -= used;
+       snprintf(buf, buf_size, "Flash protection level 2 is %s\n", tms470_check_flash_unlocked(bank->target) == ERROR_OK ? "disabled" : "enabled");
 
        return ERROR_OK;
 }
@@ -1269,5 +1286,5 @@ struct flash_driver tms470_flash = {
        .auto_probe = tms470_auto_probe,
        .erase_check = tms470_erase_check,
        .protect_check = tms470_protect_check,
-       .info = tms470_info,
+       .info = get_tms470_info,
 };