Change return value on error.
[openocd.git] / src / flash / nor / tms470.c
index c1681f1971ddc65f7be89be9e4e3b0fc6708bf80..b28aee434625ce86e692b18cf003a76cc6ef43ca 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
@@ -294,8 +313,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 +327,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 +336,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)
@@ -358,8 +376,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 +388,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);
@@ -387,8 +404,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)
        {
@@ -821,18 +837,21 @@ static int tms470_erase_sector(struct flash_bank *bank, int sector)
 static const struct command_registration tms470_any_command_handlers[] = {
        {
                .name = "flash_keyset",
+               .usage = "<key0> <key1> <key2> <key3>",
                .handler = tms470_handle_flash_keyset_command,
                .mode = COMMAND_ANY,
                .help = "tms470 flash_keyset <key0> <key1> <key2> <key3>",
        },
        {
                .name = "osc_megahertz",
+               .usage = "<MHz>",
                .handler = tms470_handle_osc_megahertz_command,
                .mode = COMMAND_ANY,
                .help = "tms470 osc_megahertz <MHz>",
        },
        {
                .name = "plldis",
+               .usage = "<0 | 1>",
                .handler = tms470_handle_plldis_command,
                .mode = COMMAND_ANY,
                .help = "tms470 plldis <0/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,
 };

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)