mips32: Removed Unnecessary JTAG Queue Flush
[fw/openocd] / src / flash / nor / tms470.c
index 7efcbd4b918620217fb9341f30715064aba052d4..dd9ff5b414f7fabb9785d86a4e811875d8d9a6b4 100644 (file)
@@ -21,7 +21,6 @@
 #include "config.h"
 #endif
 
-#include "tms470.h"
 #include "imp.h"
 
 
                       Internal Support, Helpers
    ---------------------------------------------------------------------- */
 
-const struct flash_sector TMS470R1A256_SECTORS[] = {
+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},
        {0x00004000, 0x00002000, -1, -1},
@@ -49,7 +62,7 @@ const struct flash_sector TMS470R1A256_SECTORS[] = {
 #define TMS470R1A256_NUM_SECTORS \
        ARRAY_SIZE(TMS470R1A256_SECTORS)
 
-const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = {
+static const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = {
        {0x00000000, 0x00002000, -1, -1},
        {0x00002000, 0x00002000, -1, -1},
        {0x00004000, 0x00002000, -1, -1},
@@ -59,7 +72,7 @@ const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = {
 #define TMS470R1A288_BANK0_NUM_SECTORS \
        ARRAY_SIZE(TMS470R1A288_BANK0_SECTORS)
 
-const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = {
+static const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = {
        {0x00040000, 0x00010000, -1, -1},
        {0x00050000, 0x00010000, -1, -1},
        {0x00060000, 0x00010000, -1, -1},
@@ -69,7 +82,7 @@ const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = {
 #define TMS470R1A288_BANK1_NUM_SECTORS \
        ARRAY_SIZE(TMS470R1A288_BANK1_SECTORS)
 
-const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = {
+static const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = {
        {0x00000000, 0x00002000, -1, -1},
        {0x00002000, 0x00002000, -1, -1},
        {0x00004000, 0x00004000, -1, -1},
@@ -85,7 +98,7 @@ const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = {
 #define TMS470R1A384_BANK0_NUM_SECTORS \
        ARRAY_SIZE(TMS470R1A384_BANK0_SECTORS)
 
-const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = {
+static const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = {
        {0x00020000, 0x00008000, -1, -1},
        {0x00028000, 0x00008000, -1, -1},
        {0x00030000, 0x00008000, -1, -1},
@@ -95,7 +108,7 @@ const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = {
 #define TMS470R1A384_BANK1_NUM_SECTORS \
        ARRAY_SIZE(TMS470R1A384_BANK1_SECTORS)
 
-const struct flash_sector TMS470R1A384_BANK2_SECTORS[] = {
+static const struct flash_sector TMS470R1A384_BANK2_SECTORS[] = {
        {0x00040000, 0x00008000, -1, -1},
        {0x00048000, 0x00008000, -1, -1},
        {0x00050000, 0x00008000, -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
@@ -667,7 +686,7 @@ static int tms470_flash_initialize_internal_state_machine(struct flash_bank *ban
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_flash_status(struct flash_bank *bank)
+static int tms470_flash_status(struct flash_bank *bank)
 {
        struct target *target = bank->target;
        int result = ERROR_OK;
@@ -821,19 +840,19 @@ static int tms470_erase_sector(struct flash_bank *bank, int sector)
 static const struct command_registration tms470_any_command_handlers[] = {
        {
                .name = "flash_keyset",
-               .handler = &tms470_handle_flash_keyset_command,
+               .handler = tms470_handle_flash_keyset_command,
                .mode = COMMAND_ANY,
                .help = "tms470 flash_keyset <key0> <key1> <key2> <key3>",
        },
        {
                .name = "osc_megahertz",
-               .handler = &tms470_handle_osc_megahertz_command,
+               .handler = tms470_handle_osc_megahertz_command,
                .mode = COMMAND_ANY,
                .help = "tms470 osc_megahertz <MHz>",
        },
        {
                .name = "plldis",
-               .handler = &tms470_handle_plldis_command,
+               .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;
@@ -1258,15 +1277,16 @@ FLASH_BANK_COMMAND_HANDLER(tms470_flash_bank_command)
 }
 
 struct flash_driver tms470_flash = {
-               .name = "tms470",
-               .commands = tms470_command_handlers,
-               .flash_bank_command = &tms470_flash_bank_command,
-               .erase = &tms470_erase,
-               .protect = &tms470_protect,
-               .write = &tms470_write,
-               .probe = &tms470_probe,
-               .auto_probe = &tms470_auto_probe,
-               .erase_check = &tms470_erase_check,
-               .protect_check = &tms470_protect_check,
-               .info = &tms470_info,
-       };
+       .name = "tms470",
+       .commands = tms470_command_handlers,
+       .flash_bank_command = tms470_flash_bank_command,
+       .erase = tms470_erase,
+       .protect = tms470_protect,
+       .write = tms470_write,
+       .read = default_flash_read,
+       .probe = tms470_probe,
+       .auto_probe = tms470_auto_probe,
+       .erase_check = tms470_erase_check,
+       .protect_check = tms470_protect_check,
+       .info = get_tms470_info,
+};