command_context_t -> struct command_context
[openocd.git] / src / flash / tms470.c
index 5ed3658811e107a3399601306569e5ee23c613b7..a5f2f36a5a4a27534a43033fd1b0d8d8c630815d 100644 (file)
 #include "tms470.h"
 
 
-static int tms470_register_commands(struct command_context_s *cmd_ctx);
-static int tms470_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank);
-static int tms470_erase(struct flash_bank_s *bank, int first, int last);
-static int tms470_protect(struct flash_bank_s *bank, int set, int first, int last);
-static int tms470_write(struct flash_bank_s *bank, uint8_t * buffer, uint32_t offset, uint32_t count);
-static int tms470_probe(struct flash_bank_s *bank);
-static int tms470_auto_probe(struct flash_bank_s *bank);
-static int tms470_erase_check(struct flash_bank_s *bank);
-static int tms470_protect_check(struct flash_bank_s *bank);
-static 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,7 +48,7 @@ const flash_sector_t TMS470R1A256_SECTORS[] = {
 #define TMS470R1A256_NUM_SECTORS \
        (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,7 +58,7 @@ const flash_sector_t TMS470R1A288_BANK0_SECTORS[] = {
 #define TMS470R1A288_BANK0_NUM_SECTORS \
        (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,7 +68,7 @@ const flash_sector_t TMS470R1A288_BANK1_SECTORS[] = {
 #define TMS470R1A288_BANK1_NUM_SECTORS \
        (sizeof(TMS470R1A288_BANK1_SECTORS)/sizeof(TMS470R1A288_BANK1_SECTORS[0]))
 
-const flash_sector_t TMS470R1A384_BANK0_SECTORS[] = {
+const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = {
        {0x00000000, 0x00002000, -1, -1},
        {0x00002000, 0x00002000, -1, -1},
        {0x00004000, 0x00004000, -1, -1},
@@ -109,7 +84,7 @@ const flash_sector_t TMS470R1A384_BANK0_SECTORS[] = {
 #define TMS470R1A384_BANK0_NUM_SECTORS \
        (sizeof(TMS470R1A384_BANK0_SECTORS)/sizeof(TMS470R1A384_BANK0_SECTORS[0]))
 
-const flash_sector_t TMS470R1A384_BANK1_SECTORS[] = {
+const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = {
        {0x00020000, 0x00008000, -1, -1},
        {0x00028000, 0x00008000, -1, -1},
        {0x00030000, 0x00008000, -1, -1},
@@ -119,7 +94,7 @@ const flash_sector_t TMS470R1A384_BANK1_SECTORS[] = {
 #define TMS470R1A384_BANK1_NUM_SECTORS \
        (sizeof(TMS470R1A384_BANK1_SECTORS)/sizeof(TMS470R1A384_BANK1_SECTORS[0]))
 
-const flash_sector_t TMS470R1A384_BANK2_SECTORS[] = {
+const struct flash_sector TMS470R1A384_BANK2_SECTORS[] = {
        {0x00040000, 0x00008000, -1, -1},
        {0x00048000, 0x00008000, -1, -1},
        {0x00050000, 0x00008000, -1, -1},
@@ -131,10 +106,10 @@ const flash_sector_t TMS470R1A384_BANK2_SECTORS[] = {
 
 /* ---------------------------------------------------------------------- */
 
-static 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;
+       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;
@@ -288,10 +263,10 @@ static int tms470_read_part_info(struct flash_bank_s *bank)
        bank->chip_width = 32;
        bank->bus_width = 32;
 
-       LOG_INFO("Identified %s, ver=%d, core=%s, nvmem=%s.", 
+       LOG_INFO("Identified %s, ver=%d, core=%s, nvmem=%s.",
                 part_name,
                 (int)(silicon_version),
-                (technology_family ? "1.8v" : "3.3v"), 
+                (technology_family ? "1.8v" : "3.3v"),
                 (rom_flash ? "rom" : "flash"));
 
        tms470_info->device_ident_reg = device_ident_reg;
@@ -314,7 +289,7 @@ static int tms470_read_part_info(struct flash_bank_s *bank)
 static uint32_t keysSet = 0;
 static uint32_t flashKeys[4];
 
-static 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)
        {
@@ -347,7 +322,7 @@ static int tms470_handle_flash_keyset_command(struct command_context_s *cmd_ctx,
 
        if (keysSet)
        {
-               command_print(cmd_ctx, "using flash keys 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32 "", 
+               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
@@ -378,7 +353,7 @@ static const uint32_t FLASH_KEYS_MIX2[] = { 0x0000ffff, 0x0000ffff,
 
 static int oscMHz = 12;
 
-static 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)
        {
@@ -407,11 +382,11 @@ static int tms470_handle_osc_megahertz_command(struct command_context_s *cmd_ctx
 
 static int plldis = 0;
 
-static 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)
@@ -427,7 +402,7 @@ static int tms470_handle_plldis_command(struct command_context_s *cmd_ctx, char
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_check_flash_unlocked(target_t * target)
+static int tms470_check_flash_unlocked(struct target * target)
 {
        uint32_t fmbbusy;
 
@@ -438,7 +413,7 @@ static int tms470_check_flash_unlocked(target_t * target)
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_try_flash_keys(target_t * target, const uint32_t * key_set)
+static int tms470_try_flash_keys(struct target * target, const uint32_t * key_set)
 {
        uint32_t glbctrl, fmmstat;
        int retval = ERROR_FLASH_OPERATION_FAILED;
@@ -488,7 +463,7 @@ static int tms470_try_flash_keys(target_t * target, const uint32_t * key_set)
 
                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.
@@ -516,9 +491,9 @@ static int tms470_try_flash_keys(target_t * target, const uint32_t * key_set)
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_unlock_flash(struct flash_bank_s *bank)
+static int tms470_unlock_flash(struct flash_bank *bank)
 {
-       target_t *target = bank->target;
+       struct target *target = bank->target;
        const uint32_t *p_key_sets[5];
        unsigned i, key_set_count;
 
@@ -555,11 +530,11 @@ static int tms470_unlock_flash(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *bank)
+static int tms470_flash_initialize_internal_state_machine(struct flash_bank *bank)
 {
        uint32_t fmmac2, fmmac1, fmmaxep, k, delay, glbctrl, sysclk;
-       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 result = ERROR_OK;
 
        /*
@@ -593,7 +568,7 @@ static int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *b
        LOG_DEBUG("set fmmaxpp = 50");
 
        /*
-        * MAXCP = 0xf000+2000
+        * MAXCP = 0xf000 + 2000
         */
        target_write_u32(target, 0xFFE8A084, 0xf000 + 2000);
        LOG_DEBUG("set fmmaxcp = 0x%04x", 0xf000 + 2000);
@@ -691,9 +666,9 @@ static int tms470_flash_initialize_internal_state_machine(struct flash_bank_s *b
 
 /* ---------------------------------------------------------------------- */
 
-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;
        uint32_t fmmstat;
 
@@ -747,14 +722,14 @@ int tms470_flash_status(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_erase_sector(struct flash_bank_s *bank, int sector)
+static int tms470_erase_sector(struct flash_bank *bank, int sector)
 {
        uint32_t glbctrl, orig_fmregopt, fmbsea, fmbseb, fmmstat;
-       target_t *target = bank->target;
+       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 }.
         */
@@ -787,8 +762,8 @@ static int tms470_erase_sector(struct flash_bank_s *bank, int sector)
        }
        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);
        LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0x0040", flashAddr);
@@ -838,11 +813,11 @@ static int tms470_erase_sector(struct flash_bank_s *bank, int sector)
        return result;
 }
 
-/* ---------------------------------------------------------------------- 
+/* ----------------------------------------------------------------------
               Implementation of Flash Driver Interfaces
    ---------------------------------------------------------------------- */
 
-static 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");
 
@@ -855,9 +830,9 @@ static int tms470_register_commands(struct command_context_s *cmd_ctx)
 
 /* ---------------------------------------------------------------------- */
 
-static 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)
@@ -902,10 +877,10 @@ static int tms470_erase(struct flash_bank_s *bank, int first, int last)
 
 /* ---------------------------------------------------------------------- */
 
-static 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;
+       struct tms470_flash_bank *tms470_info = bank->driver_priv;
+       struct target *target = bank->target;
        uint32_t fmmac2, fmbsea, fmbseb;
        int sector;
 
@@ -954,9 +929,9 @@ static int tms470_protect(struct flash_bank_s *bank, int set, int first, int las
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_write(struct flash_bank_s *bank, uint8_t * buffer, uint32_t offset, uint32_t count)
+static int tms470_write(struct flash_bank *bank, uint8_t * buffer, uint32_t offset, uint32_t count)
 {
-       target_t *target = bank->target;
+       struct target *target = bank->target;
        uint32_t glbctrl, fmbac2, orig_fmregopt, fmbsea, fmbseb, fmmaxpp, fmmstat;
        int result = ERROR_OK;
        uint32_t i;
@@ -1052,7 +1027,7 @@ static int tms470_write(struct flash_bank_s *bank, uint8_t * buffer, uint32_t of
 
 /* ---------------------------------------------------------------------- */
 
-static int tms470_probe(struct flash_bank_s *bank)
+static int tms470_probe(struct flash_bank *bank)
 {
        if (bank->target->state != TARGET_HALTED)
        {
@@ -1063,9 +1038,9 @@ static int tms470_probe(struct flash_bank_s *bank)
        return tms470_read_part_info(bank);
 }
 
-static 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;
@@ -1074,10 +1049,10 @@ static int tms470_auto_probe(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static 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;
        uint32_t fmmac2, fmbac2, glbctrl, orig_fmregopt;
        static uint8_t buffer[64 * 1024];
@@ -1115,7 +1090,7 @@ static 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.
@@ -1165,10 +1140,10 @@ static int tms470_erase_check(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static 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;
        uint32_t fmmac2, fmbsea, fmbseb;
 
@@ -1213,10 +1188,10 @@ static int tms470_protect_check(struct flash_bank_s *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static 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)
        {
@@ -1247,16 +1222,30 @@ static int tms470_info(struct flash_bank_s *bank, char *buf, int buf_size)
  * [options...]
  */
 
-static 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)