command_context_t -> struct command_context
[openocd.git] / src / flash / tms470.c
index 65e7016f99e04beeb49fdc04e112bf5a5317aa05..a5f2f36a5a4a27534a43033fd1b0d8d8c630815d 100644 (file)
 #include "config.h"
 #endif
 
-#include "log.h"
 #include "tms470.h"
-#include <string.h>
-#include <unistd.h>
-
-int tms470_register_commands(struct command_context_s *cmd_ctx);
-int tms470_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank);
-int tms470_erase(struct flash_bank_s *bank, int first, int last);
-int tms470_protect(struct flash_bank_s *bank, int set, int first, int last);
-int tms470_write(struct flash_bank_s *bank, u8 * buffer, u32 offset, u32 count);
-int tms470_probe(struct flash_bank_s *bank);
-int tms470_auto_probe(struct flash_bank_s *bank);
-int tms470_erase_check(struct flash_bank_s *bank);
-int tms470_protect_check(struct flash_bank_s *bank);
-int tms470_info(struct flash_bank_s *bank, char *buf, int buf_size);
-
-flash_driver_t tms470_flash = {
-       .name = "tms470",
-       .register_commands = tms470_register_commands,
-       .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
-};
 
-/* ---------------------------------------------------------------------- 
+
+/* ----------------------------------------------------------------------
                       Internal Support, Helpers
    ---------------------------------------------------------------------- */
 
-const flash_sector_t TMS470R1A256_SECTORS[] = {
+const struct flash_sector TMS470R1A256_SECTORS[] = {
        {0x00000000, 0x00002000, -1, -1},
        {0x00002000, 0x00002000, -1, -1},
        {0x00004000, 0x00002000, -1, -1},
@@ -73,9 +46,9 @@ const flash_sector_t TMS470R1A256_SECTORS[] = {
 };
 
 #define TMS470R1A256_NUM_SECTORS \
-  (sizeof(TMS470R1A256_SECTORS)/sizeof(TMS470R1A256_SECTORS[0]))
+       (sizeof(TMS470R1A256_SECTORS)/sizeof(TMS470R1A256_SECTORS[0]))
 
-const flash_sector_t TMS470R1A288_BANK0_SECTORS[] = {
+const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = {
        {0x00000000, 0x00002000, -1, -1},
        {0x00002000, 0x00002000, -1, -1},
        {0x00004000, 0x00002000, -1, -1},
@@ -83,9 +56,9 @@ const flash_sector_t TMS470R1A288_BANK0_SECTORS[] = {
 };
 
 #define TMS470R1A288_BANK0_NUM_SECTORS \
-  (sizeof(TMS470R1A288_BANK0_SECTORS)/sizeof(TMS470R1A288_BANK0_SECTORS[0]))
+       (sizeof(TMS470R1A288_BANK0_SECTORS)/sizeof(TMS470R1A288_BANK0_SECTORS[0]))
 
-const flash_sector_t TMS470R1A288_BANK1_SECTORS[] = {
+const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = {
        {0x00040000, 0x00010000, -1, -1},
        {0x00050000, 0x00010000, -1, -1},
        {0x00060000, 0x00010000, -1, -1},
@@ -93,19 +66,55 @@ const flash_sector_t TMS470R1A288_BANK1_SECTORS[] = {
 };
 
 #define TMS470R1A288_BANK1_NUM_SECTORS \
-  (sizeof(TMS470R1A288_BANK1_SECTORS)/sizeof(TMS470R1A288_BANK1_SECTORS[0]))
+       (sizeof(TMS470R1A288_BANK1_SECTORS)/sizeof(TMS470R1A288_BANK1_SECTORS[0]))
+
+const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = {
+       {0x00000000, 0x00002000, -1, -1},
+       {0x00002000, 0x00002000, -1, -1},
+       {0x00004000, 0x00004000, -1, -1},
+       {0x00008000, 0x00004000, -1, -1},
+       {0x0000C000, 0x00004000, -1, -1},
+       {0x00010000, 0x00004000, -1, -1},
+       {0x00014000, 0x00004000, -1, -1},
+       {0x00018000, 0x00002000, -1, -1},
+       {0x0001C000, 0x00002000, -1, -1},
+       {0x0001E000, 0x00002000, -1, -1},
+};
+
+#define TMS470R1A384_BANK0_NUM_SECTORS \
+       (sizeof(TMS470R1A384_BANK0_SECTORS)/sizeof(TMS470R1A384_BANK0_SECTORS[0]))
+
+const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = {
+       {0x00020000, 0x00008000, -1, -1},
+       {0x00028000, 0x00008000, -1, -1},
+       {0x00030000, 0x00008000, -1, -1},
+       {0x00038000, 0x00008000, -1, -1},
+};
+
+#define TMS470R1A384_BANK1_NUM_SECTORS \
+       (sizeof(TMS470R1A384_BANK1_SECTORS)/sizeof(TMS470R1A384_BANK1_SECTORS[0]))
+
+const struct flash_sector TMS470R1A384_BANK2_SECTORS[] = {
+       {0x00040000, 0x00008000, -1, -1},
+       {0x00048000, 0x00008000, -1, -1},
+       {0x00050000, 0x00008000, -1, -1},
+       {0x00058000, 0x00008000, -1, -1},
+};
+
+#define TMS470R1A384_BANK2_NUM_SECTORS \
+       (sizeof(TMS470R1A384_BANK2_SECTORS)/sizeof(TMS470R1A384_BANK2_SECTORS[0]))
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_read_part_info(struct flash_bank_s *bank)
+static int tms470_read_part_info(struct flash_bank *bank)
 {
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
-       target_t *target = bank->target;
-       u32 device_ident_reg;
-       u32 silicon_version;
-       u32 technology_family;
-       u32 rom_flash;
-       u32 part_number;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
+       struct target *target = bank->target;
+       uint32_t device_ident_reg;
+       uint32_t silicon_version;
+       uint32_t technology_family;
+       uint32_t rom_flash;
+       uint32_t part_number;
        char *part_name;
 
        /* we shall not rely on the caller in this test, this function allocates memory,
@@ -116,11 +125,11 @@ int tms470_read_part_info(struct flash_bank_s *bank)
        /* read and parse the device identification register */
        target_read_u32(target, 0xFFFFFFF0, &device_ident_reg);
 
-       INFO("device_ident_reg=0x%08x", device_ident_reg);
+       LOG_INFO("device_ident_reg = 0x%08" PRIx32 "", device_ident_reg);
 
        if ((device_ident_reg & 7) == 0)
        {
-               WARNING("Cannot identify target as a TMS470 family.");
+               LOG_WARNING("Cannot identify target as a TMS470 family.");
                return ERROR_FLASH_OPERATION_FAILED;
        }
 
@@ -142,7 +151,7 @@ int tms470_read_part_info(struct flash_bank_s *bank)
 
                if (bank->base >= 0x00040000)
                {
-                       ERROR("No %s flash bank contains base address 0x%08x.", part_name, bank->base);
+                       LOG_ERROR("No %s flash bank contains base address 0x%08" PRIx32 ".", part_name, bank->base);
                        return ERROR_FLASH_OPERATION_FAILED;
                }
                tms470_info->ordinal = 0;
@@ -160,7 +169,7 @@ int tms470_read_part_info(struct flash_bank_s *bank)
        case 0x2b:
                part_name = "TMS470R1A288";
 
-               if ((bank->base >= 0x00000000) && (bank->base < 0x00008000))
+               if (bank->base < 0x00008000)
                {
                        tms470_info->ordinal = 0;
                        bank->base = 0x00000000;
@@ -188,13 +197,62 @@ int tms470_read_part_info(struct flash_bank_s *bank)
                }
                else
                {
-                       ERROR("No %s flash bank contains base address 0x%08x.", part_name, bank->base);
+                       LOG_ERROR("No %s flash bank contains base address 0x%08" PRIx32 ".", part_name, bank->base);
+                       return ERROR_FLASH_OPERATION_FAILED;
+               }
+               break;
+
+       case 0x2d:
+               part_name = "TMS470R1A384";
+
+               if (bank->base < 0x00020000)
+               {
+                       tms470_info->ordinal = 0;
+                       bank->base = 0x00000000;
+                       bank->size = 128 * 1024;
+                       bank->num_sectors = TMS470R1A384_BANK0_NUM_SECTORS;
+                       bank->sectors = malloc(sizeof(TMS470R1A384_BANK0_SECTORS));
+                       if (!bank->sectors)
+                       {
+                               return ERROR_FLASH_OPERATION_FAILED;
+                       }
+                       (void)memcpy(bank->sectors, TMS470R1A384_BANK0_SECTORS, sizeof(TMS470R1A384_BANK0_SECTORS));
+               }
+               else if ((bank->base >= 0x00020000) && (bank->base < 0x00040000))
+               {
+                       tms470_info->ordinal = 1;
+                       bank->base = 0x00020000;
+                       bank->size = 128 * 1024;
+                       bank->num_sectors = TMS470R1A384_BANK1_NUM_SECTORS;
+                       bank->sectors = malloc(sizeof(TMS470R1A384_BANK1_SECTORS));
+                       if (!bank->sectors)
+                       {
+                               return ERROR_FLASH_OPERATION_FAILED;
+                       }
+                       (void)memcpy(bank->sectors, TMS470R1A384_BANK1_SECTORS, sizeof(TMS470R1A384_BANK1_SECTORS));
+               }
+               else if ((bank->base >= 0x00040000) && (bank->base < 0x00060000))
+               {
+                       tms470_info->ordinal = 2;
+                       bank->base = 0x00040000;
+                       bank->size = 128 * 1024;
+                       bank->num_sectors = TMS470R1A384_BANK2_NUM_SECTORS;
+                       bank->sectors = malloc(sizeof(TMS470R1A384_BANK2_SECTORS));
+                       if (!bank->sectors)
+                       {
+                               return ERROR_FLASH_OPERATION_FAILED;
+                       }
+                       (void)memcpy(bank->sectors, TMS470R1A384_BANK2_SECTORS, sizeof(TMS470R1A384_BANK2_SECTORS));
+               }
+               else
+               {
+                       LOG_ERROR("No %s flash bank contains base address 0x%08" PRIx32 ".", part_name, bank->base);
                        return ERROR_FLASH_OPERATION_FAILED;
                }
                break;
 
        default:
-               WARNING("Could not identify part 0x%02x as a member of the TMS470 family.", part_number);
+               LOG_WARNING("Could not identify part 0x%02x as a member of the TMS470 family.", (unsigned)part_number);
                return ERROR_FLASH_OPERATION_FAILED;
        }
 
@@ -205,7 +263,11 @@ int tms470_read_part_info(struct flash_bank_s *bank)
        bank->chip_width = 32;
        bank->bus_width = 32;
 
-       INFO("Identified %s, ver=%d, core=%s, nvmem=%s.", part_name, silicon_version, (technology_family ? "1.8v" : "3.3v"), (rom_flash ? "rom" : "flash"));
+       LOG_INFO("Identified %s, ver=%d, core=%s, nvmem=%s.",
+                part_name,
+                (int)(silicon_version),
+                (technology_family ? "1.8v" : "3.3v"),
+                (rom_flash ? "rom" : "flash"));
 
        tms470_info->device_ident_reg = device_ident_reg;
        tms470_info->silicon_version = silicon_version;
@@ -224,10 +286,10 @@ int tms470_read_part_info(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-u32 keysSet = 0;
-u32 flashKeys[4];
+static uint32_t keysSet = 0;
+static uint32_t flashKeys[4];
 
-int tms470_handle_flash_keyset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(tms470_handle_flash_keyset_command)
 {
        if (argc > 4)
        {
@@ -242,10 +304,10 @@ int tms470_handle_flash_keyset_command(struct command_context_s *cmd_ctx, char *
                {
                        int start = (0 == strncmp(args[i], "0x", 2)) ? 2 : 0;
 
-                       if (1 != sscanf(&args[i][start], "%x", &flashKeys[i]))
+                       if (1 != sscanf(&args[i][start], "%" SCNx32 "", &flashKeys[i]))
                        {
                                command_print(cmd_ctx, "could not process flash key %s", args[i]);
-                               ERROR("could not process flash key %s", args[i]);
+                               LOG_ERROR("could not process flash key %s", args[i]);
                                return ERROR_INVALID_ARGUMENTS;
                        }
                }
@@ -260,7 +322,8 @@ int tms470_handle_flash_keyset_command(struct command_context_s *cmd_ctx, char *
 
        if (keysSet)
        {
-               command_print(cmd_ctx, "using flash keys 0x%08x, 0x%08x, 0x%08x, 0x%08x", flashKeys[0], flashKeys[1], flashKeys[2], flashKeys[3]);
+               command_print(cmd_ctx, "using flash keys 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32 "",
+                             flashKeys[0], flashKeys[1], flashKeys[2], flashKeys[3]);
        }
        else
        {
@@ -270,27 +333,27 @@ int tms470_handle_flash_keyset_command(struct command_context_s *cmd_ctx, char *
        return ERROR_OK;
 }
 
-const u32 FLASH_KEYS_ALL_ONES[] = { 0xFFFFFFFF, 0xFFFFFFFF,
+static const uint32_t FLASH_KEYS_ALL_ONES[] = { 0xFFFFFFFF, 0xFFFFFFFF,
        0xFFFFFFFF, 0xFFFFFFFF,
 };
 
-const u32 FLASH_KEYS_ALL_ZEROS[] = { 0x00000000, 0x00000000,
+static const uint32_t FLASH_KEYS_ALL_ZEROS[] = { 0x00000000, 0x00000000,
        0x00000000, 0x00000000,
 };
 
-const u32 FLASH_KEYS_MIX1[] = { 0xf0fff0ff, 0xf0fff0ff,
+static const uint32_t FLASH_KEYS_MIX1[] = { 0xf0fff0ff, 0xf0fff0ff,
        0xf0fff0ff, 0xf0fff0ff
 };
 
-const u32 FLASH_KEYS_MIX2[] = { 0x0000ffff, 0x0000ffff,
+static const uint32_t FLASH_KEYS_MIX2[] = { 0x0000ffff, 0x0000ffff,
        0x0000ffff, 0x0000ffff
 };
 
 /* ---------------------------------------------------------------------- */
 
-int oscMHz = 12;
+static int oscMHz = 12;
 
-int tms470_handle_osc_megahertz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(tms470_handle_osc_megahertz_command)
 {
        if (argc > 1)
        {
@@ -304,7 +367,7 @@ int tms470_handle_osc_megahertz_command(struct command_context_s *cmd_ctx, char
 
        if (oscMHz <= 0)
        {
-               ERROR("osc_megahertz must be positive and non-zero!");
+               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;
@@ -317,13 +380,13 @@ int tms470_handle_osc_megahertz_command(struct command_context_s *cmd_ctx, char
 
 /* ---------------------------------------------------------------------- */
 
-int plldis = 0;
+static int plldis = 0;
 
-int tms470_handle_plldis_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(tms470_handle_plldis_command)
 {
        if (argc > 1)
        {
-               command_print(cmd_ctx, "tms470 plldis <0|1>");
+               command_print(cmd_ctx, "tms470 plldis <0 | 1>");
                return ERROR_INVALID_ARGUMENTS;
        }
        else if (argc == 1)
@@ -339,20 +402,20 @@ int tms470_handle_plldis_command(struct command_context_s *cmd_ctx, char *cmd, c
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_check_flash_unlocked(target_t * target)
+static int tms470_check_flash_unlocked(struct target * target)
 {
-       u32 fmbbusy;
+       uint32_t fmbbusy;
 
        target_read_u32(target, 0xFFE89C08, &fmbbusy);
-       INFO("tms470 fmbbusy=0x%08x -> %s", fmbbusy, fmbbusy & 0x8000 ? "unlocked" : "LOCKED");
+       LOG_INFO("tms470 fmbbusy = 0x%08" PRIx32 " -> %s", fmbbusy, fmbbusy & 0x8000 ? "unlocked" : "LOCKED");
        return fmbbusy & 0x8000 ? ERROR_OK : ERROR_FLASH_OPERATION_FAILED;
 }
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_try_flash_keys(target_t * target, const u32 * key_set)
+static int tms470_try_flash_keys(struct target * target, const uint32_t * key_set)
 {
-       u32 glbctrl, fmmstat;
+       uint32_t glbctrl, fmmstat;
        int retval = ERROR_FLASH_OPERATION_FAILED;
 
        /* set GLBCTRL.4  */
@@ -364,7 +427,7 @@ int tms470_try_flash_keys(target_t * target, const u32 * key_set)
        if (!(fmmstat & 0x08))
        {
                unsigned i;
-               u32 fmbptr, fmbac2, orig_fmregopt;
+               uint32_t fmbptr, fmbac2, orig_fmregopt;
 
                target_write_u32(target, 0xFFE8BC04, fmmstat & ~0x07);
 
@@ -372,7 +435,7 @@ int tms470_try_flash_keys(target_t * target, const u32 * key_set)
                do
                {
                        target_read_u32(target, 0xFFE8A814, &fmbptr);
-                       usleep(1000);
+                       alive_sleep(1);
                }
                while (!(fmbptr & 0x0200));
 
@@ -386,7 +449,7 @@ int tms470_try_flash_keys(target_t * target, const u32 * key_set)
 
                for (i = 0; i < 4; i++)
                {
-                       u32 tmp;
+                       uint32_t tmp;
 
                        /* There is no point displaying the value of tmp, it is
                         * filtered by the chip.  The purpose of this read is to
@@ -394,20 +457,20 @@ int tms470_try_flash_keys(target_t * target, const u32 * key_set)
                         */
                        target_read_u32(target, 0x00001FF0 + 4 * i, &tmp);
 
-                       INFO("tms470 writing fmpkey=0x%08x", key_set[i]);
+                       LOG_INFO("tms470 writing fmpkey = 0x%08" PRIx32 "", key_set[i]);
                        target_write_u32(target, 0xFFE89C0C, key_set[i]);
                }
 
                if (ERROR_OK == tms470_check_flash_unlocked(target))
                {
-                       /* 
+                       /*
                         * There seems to be a side-effect of reading the FMPKEY
                         * register in that it re-enables the protection.  So we
                         * re-enable it.
                         */
                        for (i = 0; i < 4; i++)
                        {
-                               u32 tmp;
+                               uint32_t tmp;
 
                                target_read_u32(target, 0x00001FF0 + 4 * i, &tmp);
                                target_write_u32(target, 0xFFE89C0C, key_set[i]);
@@ -428,14 +491,15 @@ int tms470_try_flash_keys(target_t * target, const u32 * key_set)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_unlock_flash(struct flash_bank_s *bank)
+static int tms470_unlock_flash(struct flash_bank *bank)
 {
-       target_t *target = bank->target;
-       const u32 *p_key_sets[5];
+       struct target *target = bank->target;
+       const uint32_t *p_key_sets[5];
        unsigned i, key_set_count;
 
        if (keysSet)
        {
+               key_set_count = 5;
                p_key_sets[0] = flashKeys;
                p_key_sets[1] = FLASH_KEYS_ALL_ONES;
                p_key_sets[2] = FLASH_KEYS_ALL_ZEROS;
@@ -455,22 +519,22 @@ int tms470_unlock_flash(struct flash_bank_s *bank)
        {
                if (tms470_try_flash_keys(target, p_key_sets[i]) == ERROR_OK)
                {
-                       INFO("tms470 flash is unlocked");
+                       LOG_INFO("tms470 flash is unlocked");
                        return ERROR_OK;
                }
        }
 
-       WARNING("tms470 could not unlock flash memory protection level 2");
+       LOG_WARNING("tms470 could not unlock flash memory protection level 2");
        return ERROR_FLASH_OPERATION_FAILED;
 }
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *bank)
+static int tms470_flash_initialize_internal_state_machine(struct flash_bank *bank)
 {
-       u32 fmmac2, fmmac1, fmmaxep, k, delay, glbctrl, sysclk;
-       target_t *target = bank->target;
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
+       uint32_t fmmac2, fmmac1, fmmaxep, k, delay, glbctrl, sysclk;
+       struct target *target = bank->target;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
        int result = ERROR_OK;
 
        /*
@@ -481,7 +545,7 @@ int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *bank)
        fmmac2 &= ~0x0007;
        fmmac2 |= (tms470_info->ordinal & 7);
        target_write_u32(target, 0xFFE8BC04, fmmac2);
-       DEBUG("set fmmac2=0x%04x", fmmac2);
+       LOG_DEBUG("set fmmac2 = 0x%04" PRIx32 "", fmmac2);
 
        /*
         * Disable level 1 sector protection by setting bit 15 of FMMAC1.
@@ -489,25 +553,25 @@ int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *bank)
        target_read_u32(target, 0xFFE8BC00, &fmmac1);
        fmmac1 |= 0x8000;
        target_write_u32(target, 0xFFE8BC00, fmmac1);
-       DEBUG("set fmmac1=0x%04x", fmmac1);
+       LOG_DEBUG("set fmmac1 = 0x%04" PRIx32 "", fmmac1);
 
        /*
-        * FMTCREG=0x2fc0;
+        * FMTCREG = 0x2fc0;
         */
        target_write_u32(target, 0xFFE8BC10, 0x2fc0);
-       DEBUG("set fmtcreg=0x2fc0");
+       LOG_DEBUG("set fmtcreg = 0x2fc0");
 
        /*
-        * MAXPP=50
+        * MAXPP = 50
         */
        target_write_u32(target, 0xFFE8A07C, 50);
-       DEBUG("set fmmaxpp=50");
+       LOG_DEBUG("set fmmaxpp = 50");
 
        /*
-        * MAXCP=0xf000+2000
+        * MAXCP = 0xf000 + 2000
         */
        target_write_u32(target, 0xFFE8A084, 0xf000 + 2000);
-       DEBUG("set fmmaxcp=0x%04x", 0xf000 + 2000);
+       LOG_DEBUG("set fmmaxcp = 0x%04x", 0xf000 + 2000);
 
        /*
         * configure VHV
@@ -517,22 +581,22 @@ int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *bank)
        {
                fmmaxep = 0xf000 + 4095;
                target_write_u32(target, 0xFFE8A80C, 0x9964);
-               DEBUG("set fmptr3=0x9964");
+               LOG_DEBUG("set fmptr3 = 0x9964");
        }
        else
        {
                fmmaxep = 0xa000 + 4095;
                target_write_u32(target, 0xFFE8A80C, 0x9b64);
-               DEBUG("set fmptr3=0x9b64");
+               LOG_DEBUG("set fmptr3 = 0x9b64");
        }
        target_write_u32(target, 0xFFE8A080, fmmaxep);
-       DEBUG("set fmmaxep=0x%04x", fmmaxep);
+       LOG_DEBUG("set fmmaxep = 0x%04" PRIx32 "", fmmaxep);
 
        /*
-        * FMPTR4=0xa000
+        * FMPTR4 = 0xa000
         */
        target_write_u32(target, 0xFFE8A810, 0xa000);
-       DEBUG("set fmptr4=0xa000");
+       LOG_DEBUG("set fmptr4 = 0xa000");
 
        /*
         * FMPESETUP, delay parameter selected based on clock frequency.
@@ -546,110 +610,110 @@ int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *bank)
        sysclk = (plldis ? 1 : (glbctrl & 0x08) ? 4 : 8) * oscMHz / (1 + (glbctrl & 7));
        delay = (sysclk > 10) ? (sysclk + 1) / 2 : 5;
        target_write_u32(target, 0xFFE8A018, (delay << 4) | (delay << 8));
-       DEBUG("set fmpsetup=0x%04x", (delay << 4) | (delay << 8));
+       LOG_DEBUG("set fmpsetup = 0x%04" PRIx32 "", (delay << 4) | (delay << 8));
 
        /*
         * FMPVEVACCESS, based on delay.
         */
        k = delay | (delay << 8);
        target_write_u32(target, 0xFFE8A05C, k);
-       DEBUG("set fmpvevaccess=0x%04x", k);
+       LOG_DEBUG("set fmpvevaccess = 0x%04" PRIx32 "", k);
 
        /*
         * FMPCHOLD, FMPVEVHOLD, FMPVEVSETUP, based on delay.
         */
        k <<= 1;
        target_write_u32(target, 0xFFE8A034, k);
-       DEBUG("set fmpchold=0x%04x", k);
+       LOG_DEBUG("set fmpchold = 0x%04" PRIx32 "", k);
        target_write_u32(target, 0xFFE8A040, k);
-       DEBUG("set fmpvevhold=0x%04x", k);
+       LOG_DEBUG("set fmpvevhold = 0x%04" PRIx32 "", k);
        target_write_u32(target, 0xFFE8A024, k);
-       DEBUG("set fmpvevsetup=0x%04x", k);
+       LOG_DEBUG("set fmpvevsetup = 0x%04" PRIx32 "", k);
 
        /*
         * FMCVACCESS, based on delay.
         */
        k = delay * 16;
        target_write_u32(target, 0xFFE8A060, k);
-       DEBUG("set fmcvaccess=0x%04x", k);
+       LOG_DEBUG("set fmcvaccess = 0x%04" PRIx32 "", k);
 
        /*
         * FMCSETUP, based on delay.
         */
        k = 0x3000 | delay * 20;
        target_write_u32(target, 0xFFE8A020, k);
-       DEBUG("set fmcsetup=0x%04x", k);
+       LOG_DEBUG("set fmcsetup = 0x%04" PRIx32 "", k);
 
        /*
         * FMEHOLD, based on delay.
         */
        k = (delay * 20) << 2;
        target_write_u32(target, 0xFFE8A038, k);
-       DEBUG("set fmehold=0x%04x", k);
+       LOG_DEBUG("set fmehold = 0x%04" PRIx32 "", k);
 
        /*
         * PWIDTH, CWIDTH, EWIDTH, based on delay.
         */
        target_write_u32(target, 0xFFE8A050, delay * 8);
-       DEBUG("set fmpwidth=0x%04x", delay * 8);
+       LOG_DEBUG("set fmpwidth = 0x%04" PRIx32 "", delay * 8);
        target_write_u32(target, 0xFFE8A058, delay * 1000);
-       DEBUG("set fmcwidth=0x%04x", delay * 1000);
+       LOG_DEBUG("set fmcwidth = 0x%04" PRIx32 "", delay * 1000);
        target_write_u32(target, 0xFFE8A054, delay * 5400);
-       DEBUG("set fmewidth=0x%04x", delay * 5400);
+       LOG_DEBUG("set fmewidth = 0x%04" PRIx32 "", delay * 5400);
 
        return result;
 }
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_flash_status(struct flash_bank_s *bank)
+int tms470_flash_status(struct flash_bank *bank)
 {
-       target_t *target = bank->target;
+       struct target *target = bank->target;
        int result = ERROR_OK;
-       u32 fmmstat;
+       uint32_t fmmstat;
 
        target_read_u32(target, 0xFFE8BC0C, &fmmstat);
-       DEBUG("set fmmstat=0x%04x", fmmstat);
+       LOG_DEBUG("set fmmstat = 0x%04" PRIx32 "", fmmstat);
 
        if (fmmstat & 0x0080)
        {
-               WARNING("tms470 flash command: erase still active after busy clear.");
+               LOG_WARNING("tms470 flash command: erase still active after busy clear.");
                result = ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (fmmstat & 0x0040)
        {
-               WARNING("tms470 flash command: program still active after busy clear.");
+               LOG_WARNING("tms470 flash command: program still active after busy clear.");
                result = ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (fmmstat & 0x0020)
        {
-               WARNING("tms470 flash command: invalid data command.");
+               LOG_WARNING("tms470 flash command: invalid data command.");
                result = ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (fmmstat & 0x0010)
        {
-               WARNING("tms470 flash command: program, erase or validate sector failed.");
+               LOG_WARNING("tms470 flash command: program, erase or validate sector failed.");
                result = ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (fmmstat & 0x0008)
        {
-               WARNING("tms470 flash command: voltage instability detected.");
+               LOG_WARNING("tms470 flash command: voltage instability detected.");
                result = ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (fmmstat & 0x0006)
        {
-               WARNING("tms470 flash command: command suspend detected.");
+               LOG_WARNING("tms470 flash command: command suspend detected.");
                result = ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (fmmstat & 0x0001)
        {
-               WARNING("tms470 flash command: sector was locked.");
+               LOG_WARNING("tms470 flash command: sector was locked.");
                result = ERROR_FLASH_OPERATION_FAILED;
        }
 
@@ -658,25 +722,25 @@ int tms470_flash_status(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_erase_sector(struct flash_bank_s *bank, int sector)
+static int tms470_erase_sector(struct flash_bank *bank, int sector)
 {
-       u32 glbctrl, orig_fmregopt, fmbsea, fmbseb, fmmstat;
-       target_t *target = bank->target;
-       u32 flashAddr = bank->base + bank->sectors[sector].offset;
+       uint32_t glbctrl, orig_fmregopt, fmbsea, fmbseb, fmmstat;
+       struct target *target = bank->target;
+       uint32_t flashAddr = bank->base + bank->sectors[sector].offset;
        int result = ERROR_OK;
 
-       /* 
+       /*
         * Set the bit GLBCTRL4 of the GLBCTRL register (in the System
         * module) to enable writing to the flash registers }.
         */
        target_read_u32(target, 0xFFFFFFDC, &glbctrl);
        target_write_u32(target, 0xFFFFFFDC, glbctrl | 0x10);
-       DEBUG("set glbctrl=0x%08x", glbctrl | 0x10);
+       LOG_DEBUG("set glbctrl = 0x%08" PRIx32 "", glbctrl | 0x10);
 
        /* Force normal read mode. */
        target_read_u32(target, 0xFFE89C00, &orig_fmregopt);
        target_write_u32(target, 0xFFE89C00, 0);
-       DEBUG("set fmregopt=0x%08x", 0);
+       LOG_DEBUG("set fmregopt = 0x%08x", 0);
 
        (void)tms470_flash_initialize_internal_state_machine(bank);
 
@@ -688,25 +752,25 @@ int tms470_erase_sector(struct flash_bank_s *bank, int sector)
        {
                target_read_u32(target, 0xFFE88008, &fmbsea);
                target_write_u32(target, 0xFFE88008, fmbsea | (1 << sector));
-               DEBUG("set fmbsea=0x%04x", fmbsea | (1 << sector));
+               LOG_DEBUG("set fmbsea = 0x%04" PRIx32 "", fmbsea | (1 << sector));
        }
        else
        {
                target_read_u32(target, 0xFFE8800C, &fmbseb);
                target_write_u32(target, 0xFFE8800C, fmbseb | (1 << (sector - 16)));
-               DEBUG("set fmbseb=0x%04x", fmbseb | (1 << (sector - 16)));
+               LOG_DEBUG("set fmbseb = 0x%04" PRIx32 "", fmbseb | (1 << (sector - 16)));
        }
        bank->sectors[sector].is_protected = 0;
 
-       /* 
-        * clear status regiser, sent erase command, kickoff erase 
+       /*
+        * clear status regiser, sent erase command, kickoff erase
         */
        target_write_u16(target, flashAddr, 0x0040);
-       DEBUG("write *(u16 *)0x%08x=0x0040", flashAddr);
+       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0x0040", flashAddr);
        target_write_u16(target, flashAddr, 0x0020);
-       DEBUG("write *(u16 *)0x%08x=0x0020", flashAddr);
+       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0x0020", flashAddr);
        target_write_u16(target, flashAddr, 0xffff);
-       DEBUG("write *(u16 *)0x%08x=0xffff", flashAddr);
+       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0xffff", flashAddr);
 
        /*
         * Monitor FMMSTAT, busy until clear, then check and other flags for
@@ -717,7 +781,7 @@ int tms470_erase_sector(struct flash_bank_s *bank, int sector)
                target_read_u32(target, 0xFFE8BC0C, &fmmstat);
                if (fmmstat & 0x0100)
                {
-                       usleep(1000);
+                       alive_sleep(1);
                }
        }
        while (fmmstat & 0x0100);
@@ -727,19 +791,19 @@ int tms470_erase_sector(struct flash_bank_s *bank, int sector)
        if (sector < 16)
        {
                target_write_u32(target, 0xFFE88008, fmbsea);
-               DEBUG("set fmbsea=0x%04x", fmbsea);
+               LOG_DEBUG("set fmbsea = 0x%04" PRIx32 "", fmbsea);
                bank->sectors[sector].is_protected = fmbsea & (1 << sector) ? 0 : 1;
        }
        else
        {
                target_write_u32(target, 0xFFE8800C, fmbseb);
-               DEBUG("set fmbseb=0x%04x", fmbseb);
+               LOG_DEBUG("set fmbseb = 0x%04" PRIx32 "", fmbseb);
                bank->sectors[sector].is_protected = fmbseb & (1 << (sector - 16)) ? 0 : 1;
        }
        target_write_u32(target, 0xFFE89C00, orig_fmregopt);
-       DEBUG("set fmregopt=0x%08x", orig_fmregopt);
+       LOG_DEBUG("set fmregopt = 0x%08" PRIx32 "", orig_fmregopt);
        target_write_u32(target, 0xFFFFFFDC, glbctrl);
-       DEBUG("set glbctrl=0x%08x", glbctrl);
+       LOG_DEBUG("set glbctrl = 0x%08" PRIx32 "", glbctrl);
 
        if (result == ERROR_OK)
        {
@@ -749,11 +813,11 @@ int tms470_erase_sector(struct flash_bank_s *bank, int sector)
        return result;
 }
 
-/* ---------------------------------------------------------------------- 
+/* ----------------------------------------------------------------------
               Implementation of Flash Driver Interfaces
    ---------------------------------------------------------------------- */
 
-int tms470_register_commands(struct command_context_s *cmd_ctx)
+static int tms470_register_commands(struct command_context *cmd_ctx)
 {
        command_t *tms470_cmd = register_command(cmd_ctx, NULL, "tms470", NULL, COMMAND_ANY, "applies to TI tms470 family");
 
@@ -766,13 +830,14 @@ int tms470_register_commands(struct command_context_s *cmd_ctx)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_erase(struct flash_bank_s *bank, int first, int last)
+static int tms470_erase(struct flash_bank *bank, int first, int last)
 {
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
        int sector, result = ERROR_OK;
 
        if (bank->target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -780,7 +845,7 @@ int tms470_erase(struct flash_bank_s *bank, int first, int last)
 
        if ((first < 0) || (first >= bank->num_sectors) || (last < 0) || (last >= bank->num_sectors) || (first > last))
        {
-               ERROR("Sector range %d to %d invalid.", first, last);
+               LOG_ERROR("Sector range %d to %d invalid.", first, last);
                return ERROR_FLASH_SECTOR_INVALID;
        }
 
@@ -792,18 +857,18 @@ int tms470_erase(struct flash_bank_s *bank, int first, int last)
 
        for (sector = first; sector <= last; sector++)
        {
-               INFO("Erasing tms470 bank %d sector %d...", tms470_info->ordinal, sector);
+               LOG_INFO("Erasing tms470 bank %d sector %d...", tms470_info->ordinal, sector);
 
                result = tms470_erase_sector(bank, sector);
 
                if (result != ERROR_OK)
                {
-                       ERROR("tms470 could not erase flash sector.");
+                       LOG_ERROR("tms470 could not erase flash sector.");
                        break;
                }
                else
                {
-                       INFO("sector erased successfully.");
+                       LOG_INFO("sector erased successfully.");
                }
        }
 
@@ -812,15 +877,16 @@ int tms470_erase(struct flash_bank_s *bank, int first, int last)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_protect(struct flash_bank_s *bank, int set, int first, int last)
+static int tms470_protect(struct flash_bank *bank, int set, int first, int last)
 {
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
-       target_t *target = bank->target;
-       u32 fmmac2, fmbsea, fmbseb;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
+       struct target *target = bank->target;
+       uint32_t fmmac2, fmbsea, fmbseb;
        int sector;
 
        if (target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -828,7 +894,7 @@ int tms470_protect(struct flash_bank_s *bank, int set, int first, int last)
 
        if ((first < 0) || (first >= bank->num_sectors) || (last < 0) || (last >= bank->num_sectors) || (first > last))
        {
-               ERROR("Sector range %d to %d invalid.", first, last);
+               LOG_ERROR("Sector range %d to %d invalid.", first, last);
                return ERROR_FLASH_SECTOR_INVALID;
        }
 
@@ -863,20 +929,22 @@ int tms470_protect(struct flash_bank_s *bank, int set, int first, int last)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_write(struct flash_bank_s *bank, u8 * buffer, u32 offset, u32 count)
+static int tms470_write(struct flash_bank *bank, uint8_t * buffer, uint32_t offset, uint32_t count)
 {
-       target_t *target = bank->target;
-       u32 glbctrl, fmbac2, orig_fmregopt, fmbsea, fmbseb, fmmaxpp, fmmstat;
-       int i, result = ERROR_OK;
+       struct target *target = bank->target;
+       uint32_t glbctrl, fmbac2, orig_fmregopt, fmbsea, fmbseb, fmmaxpp, fmmstat;
+       int result = ERROR_OK;
+       uint32_t i;
 
        if (target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
        tms470_read_part_info(bank);
 
-       INFO("Writing %d bytes starting at 0x%08x", count, bank->base + offset);
+       LOG_INFO("Writing %" PRId32 " bytes starting at 0x%08" PRIx32 "", count, bank->base + offset);
 
        /* set GLBCTRL.4  */
        target_read_u32(target, 0xFFFFFFDC, &glbctrl);
@@ -905,12 +973,12 @@ int tms470_write(struct flash_bank_s *bank, u8 * buffer, u32 offset, u32 count)
 
        for (i = 0; i < count; i += 2)
        {
-               u32 addr = bank->base + offset + i;
-               u16 word = (((u16) buffer[i]) << 8) | (u16) buffer[i + 1];
+               uint32_t addr = bank->base + offset + i;
+               uint16_t word = (((uint16_t) buffer[i]) << 8) | (uint16_t) buffer[i + 1];
 
                if (word != 0xffff)
                {
-                       INFO("writing 0x%04x at 0x%08x", word, addr);
+                       LOG_INFO("writing 0x%04x at 0x%08" PRIx32 "", word, addr);
 
                        /* clear status register */
                        target_write_u16(target, addr, 0x0040);
@@ -928,22 +996,22 @@ int tms470_write(struct flash_bank_s *bank, u8 * buffer, u32 offset, u32 count)
                                target_read_u32(target, 0xFFE8BC0C, &fmmstat);
                                if (fmmstat & 0x0100)
                                {
-                                       usleep(1000);
+                                       alive_sleep(1);
                                }
                        }
                        while (fmmstat & 0x0100);
 
                        if (fmmstat & 0x3ff)
                        {
-                               ERROR("fmstat=0x%04x", fmmstat);
-                               ERROR("Could not program word 0x%04x at address 0x%08x.", word, addr);
+                               LOG_ERROR("fmstat = 0x%04" PRIx32 "", fmmstat);
+                               LOG_ERROR("Could not program word 0x%04x at address 0x%08" PRIx32 ".", word, addr);
                                result = ERROR_FLASH_OPERATION_FAILED;
                                break;
                        }
                }
                else
                {
-                       INFO("skipping 0xffff at 0x%08x", addr);
+                       LOG_INFO("skipping 0xffff at 0x%08" PRIx32 "", addr);
                }
        }
 
@@ -959,20 +1027,20 @@ int tms470_write(struct flash_bank_s *bank, u8 * buffer, u32 offset, u32 count)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_probe(struct flash_bank_s *bank)
+static int tms470_probe(struct flash_bank *bank)
 {
        if (bank->target->state != TARGET_HALTED)
        {
-               WARNING("Cannot communicate... target not halted.");
+               LOG_WARNING("Cannot communicate... target not halted.");
                return ERROR_TARGET_NOT_HALTED;
        }
 
        return tms470_read_part_info(bank);
 }
 
-int tms470_auto_probe(struct flash_bank_s *bank)
+static int tms470_auto_probe(struct flash_bank *bank)
 {
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
 
        if (tms470_info->device_ident_reg)
                return ERROR_OK;
@@ -981,16 +1049,17 @@ int tms470_auto_probe(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_erase_check(struct flash_bank_s *bank)
+static int tms470_erase_check(struct flash_bank *bank)
 {
-       target_t *target = bank->target;
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
+       struct target *target = bank->target;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
        int sector, result = ERROR_OK;
-       u32 fmmac2, fmbac2, glbctrl, orig_fmregopt;
-       static u8 buffer[64 * 1024];
+       uint32_t fmmac2, fmbac2, glbctrl, orig_fmregopt;
+       static uint8_t buffer[64 * 1024];
 
        if (target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -1011,7 +1080,7 @@ int tms470_erase_check(struct flash_bank_s *bank)
        target_read_u32(target, 0xFFE8BC04, &fmmac2);
        target_write_u32(target, 0xFFE8BC04, (fmmac2 & ~7) | tms470_info->ordinal);
 
-       /* TCR=0 */
+       /* TCR = 0 */
        target_write_u32(target, 0xFFE8BC10, 0x2fc0);
 
        /* clear TEZ in fmbrdy */
@@ -1021,7 +1090,7 @@ int tms470_erase_check(struct flash_bank_s *bank)
        target_read_u32(target, 0xFFE88004, &fmbac2);
        target_write_u32(target, 0xFFE88004, fmbac2 | 0xff);
 
-       /* 
+       /*
         * The TI primitives inspect the flash memory by reading one 32-bit
         * word at a time.  Here we read an entire sector and inspect it in
         * an attempt to reduce the JTAG overhead.
@@ -1030,9 +1099,9 @@ int tms470_erase_check(struct flash_bank_s *bank)
        {
                if (bank->sectors[sector].is_erased != 1)
                {
-                       u32 i, addr = bank->base + bank->sectors[sector].offset;
+                       uint32_t i, addr = bank->base + bank->sectors[sector].offset;
 
-                       INFO("checking flash bank %d sector %d", tms470_info->ordinal, sector);
+                       LOG_INFO("checking flash bank %d sector %d", tms470_info->ordinal, sector);
 
                        target_read_buffer(target, addr, bank->sectors[sector].size, buffer);
 
@@ -1041,8 +1110,8 @@ int tms470_erase_check(struct flash_bank_s *bank)
                        {
                                if (buffer[i] != 0xff)
                                {
-                                       WARNING("tms470 bank %d, sector %d, not erased.", tms470_info->ordinal, sector);
-                                       WARNING("at location 0x%08x: flash data is 0x%02x.", addr + i, buffer[i]);
+                                       LOG_WARNING("tms470 bank %d, sector %d, not erased.", tms470_info->ordinal, sector);
+                                       LOG_WARNING("at location 0x%08" PRIx32 ": flash data is 0x%02x.", addr + i, buffer[i]);
 
                                        bank->sectors[sector].is_erased = 0;
                                        break;
@@ -1056,7 +1125,7 @@ int tms470_erase_check(struct flash_bank_s *bank)
                }
                else
                {
-                       INFO("sector erased");
+                       LOG_INFO("sector erased");
                }
        }
 
@@ -1071,15 +1140,16 @@ int tms470_erase_check(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_protect_check(struct flash_bank_s *bank)
+static int tms470_protect_check(struct flash_bank *bank)
 {
-       target_t *target = bank->target;
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
+       struct target *target = bank->target;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
        int sector, result = ERROR_OK;
-       u32 fmmac2, fmbsea, fmbseb;
+       uint32_t fmmac2, fmbsea, fmbseb;
 
        if (target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -1110,7 +1180,7 @@ int tms470_protect_check(struct flash_bank_s *bank)
                        bank->sectors[sector].is_protected = protected;
                }
 
-               DEBUG("bank %d sector %d is %s", tms470_info->ordinal, sector, protected ? "protected" : "not protected");
+               LOG_DEBUG("bank %d sector %d is %s", tms470_info->ordinal, sector, protected ? "protected" : "not protected");
        }
 
        return result;
@@ -1118,10 +1188,10 @@ int tms470_protect_check(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-int tms470_info(struct flash_bank_s *bank, char *buf, int buf_size)
+static int tms470_info(struct flash_bank *bank, char *buf, int buf_size)
 {
        int used = 0;
-       tms470_flash_bank_t *tms470_info = bank->driver_priv;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
 
        if (!tms470_info->device_ident_reg)
        {
@@ -1152,16 +1222,30 @@ int tms470_info(struct flash_bank_s *bank, char *buf, int buf_size)
  * [options...]
  */
 
-int tms470_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank)
+FLASH_BANK_COMMAND_HANDLER(tms470_flash_bank_command)
 {
-       bank->driver_priv = malloc(sizeof(tms470_flash_bank_t));
+       bank->driver_priv = malloc(sizeof(struct tms470_flash_bank));
 
        if (!bank->driver_priv)
        {
                return ERROR_FLASH_OPERATION_FAILED;
        }
 
-       (void)memset(bank->driver_priv, 0, sizeof(tms470_flash_bank_t));
+       (void)memset(bank->driver_priv, 0, sizeof(struct tms470_flash_bank));
 
        return ERROR_OK;
 }
+
+struct flash_driver tms470_flash = {
+               .name = "tms470",
+               .register_commands = &tms470_register_commands,
+               .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,
+       };

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)