flash/nor/tcl: 'flash list' command: add the flash bank target
[openocd.git] / src / flash / nor / tms470.c
index 4b8d2208afef5a440e471c52616ec6cd8c263446..37f0933966062c667a6c338da7d6020e786d4e0f 100644 (file)
@@ -39,7 +39,7 @@ struct tms470_flash_bank {
 
 };
 
-static const struct flash_sector TMS470R1A256_SECTORS[] = {
+static const struct flash_sector tms470r1a256_sectors[] = {
        {0x00000000, 0x00002000, -1, -1},
        {0x00002000, 0x00002000, -1, -1},
        {0x00004000, 0x00002000, -1, -1},
@@ -57,9 +57,9 @@ static const struct flash_sector TMS470R1A256_SECTORS[] = {
 };
 
 #define TMS470R1A256_NUM_SECTORS \
-       ARRAY_SIZE(TMS470R1A256_SECTORS)
+       ARRAY_SIZE(tms470r1a256_sectors)
 
-static 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},
@@ -67,9 +67,9 @@ static const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = {
 };
 
 #define TMS470R1A288_BANK0_NUM_SECTORS \
-       ARRAY_SIZE(TMS470R1A288_BANK0_SECTORS)
+       ARRAY_SIZE(tms470r1a288_bank0_sectors)
 
-static 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},
@@ -77,9 +77,9 @@ static const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = {
 };
 
 #define TMS470R1A288_BANK1_NUM_SECTORS \
-       ARRAY_SIZE(TMS470R1A288_BANK1_SECTORS)
+       ARRAY_SIZE(tms470r1a288_bank1_sectors)
 
-static 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},
@@ -93,9 +93,9 @@ static const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = {
 };
 
 #define TMS470R1A384_BANK0_NUM_SECTORS \
-       ARRAY_SIZE(TMS470R1A384_BANK0_SECTORS)
+       ARRAY_SIZE(tms470r1a384_bank0_sectors)
 
-static 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},
@@ -103,9 +103,9 @@ static const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = {
 };
 
 #define TMS470R1A384_BANK1_NUM_SECTORS \
-       ARRAY_SIZE(TMS470R1A384_BANK1_SECTORS)
+       ARRAY_SIZE(tms470r1a384_bank1_sectors)
 
-static 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},
@@ -113,7 +113,7 @@ static const struct flash_sector TMS470R1A384_BANK2_SECTORS[] = {
 };
 
 #define TMS470R1A384_BANK2_NUM_SECTORS \
-       ARRAY_SIZE(TMS470R1A384_BANK2_SECTORS)
+       ARRAY_SIZE(tms470r1a384_bank2_sectors)
 
 /* ---------------------------------------------------------------------- */
 
@@ -148,11 +148,9 @@ 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;
-               bank->num_sectors = 0;
-       }
+       free(bank->sectors);
+       bank->sectors = NULL;
+       bank->num_sectors = 0;
 
        /*
         * If the part number is known, determine if the flash bank is valid
@@ -175,10 +173,10 @@ static int tms470_read_part_info(struct flash_bank *bank)
                        bank->base = 0x00000000;
                        bank->size = 256 * 1024;
                        bank->num_sectors = TMS470R1A256_NUM_SECTORS;
-                       bank->sectors = malloc(sizeof(TMS470R1A256_SECTORS));
+                       bank->sectors = malloc(sizeof(tms470r1a256_sectors));
                        if (!bank->sectors)
                                return ERROR_FLASH_OPERATION_FAILED;
-                       (void)memcpy(bank->sectors, TMS470R1A256_SECTORS, sizeof(TMS470R1A256_SECTORS));
+                       (void)memcpy(bank->sectors, tms470r1a256_sectors, sizeof(tms470r1a256_sectors));
                        break;
 
                case 0x2b:
@@ -189,21 +187,21 @@ static int tms470_read_part_info(struct flash_bank *bank)
                                bank->base = 0x00000000;
                                bank->size = 32 * 1024;
                                bank->num_sectors = TMS470R1A288_BANK0_NUM_SECTORS;
-                               bank->sectors = malloc(sizeof(TMS470R1A288_BANK0_SECTORS));
+                               bank->sectors = malloc(sizeof(tms470r1a288_bank0_sectors));
                                if (!bank->sectors)
                                        return ERROR_FLASH_OPERATION_FAILED;
-                               (void)memcpy(bank->sectors, TMS470R1A288_BANK0_SECTORS,
-                                               sizeof(TMS470R1A288_BANK0_SECTORS));
+                               (void)memcpy(bank->sectors, tms470r1a288_bank0_sectors,
+                                               sizeof(tms470r1a288_bank0_sectors));
                        } else if ((bank->base >= 0x00040000) && (bank->base < 0x00080000)) {
                                tms470_info->ordinal = 1;
                                bank->base = 0x00040000;
                                bank->size = 256 * 1024;
                                bank->num_sectors = TMS470R1A288_BANK1_NUM_SECTORS;
-                               bank->sectors = malloc(sizeof(TMS470R1A288_BANK1_SECTORS));
+                               bank->sectors = malloc(sizeof(tms470r1a288_bank1_sectors));
                                if (!bank->sectors)
                                        return ERROR_FLASH_OPERATION_FAILED;
-                               (void)memcpy(bank->sectors, TMS470R1A288_BANK1_SECTORS,
-                                               sizeof(TMS470R1A288_BANK1_SECTORS));
+                               (void)memcpy(bank->sectors, tms470r1a288_bank1_sectors,
+                                               sizeof(tms470r1a288_bank1_sectors));
                        } else {
                                LOG_ERROR("No %s flash bank contains base address " TARGET_ADDR_FMT ".",
                                                part_name, bank->base);
@@ -219,31 +217,31 @@ static int tms470_read_part_info(struct flash_bank *bank)
                                bank->base = 0x00000000;
                                bank->size = 128 * 1024;
                                bank->num_sectors = TMS470R1A384_BANK0_NUM_SECTORS;
-                               bank->sectors = malloc(sizeof(TMS470R1A384_BANK0_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));
+                               (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));
+                               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));
+                               (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));
+                               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));
+                               (void)memcpy(bank->sectors, tms470r1a384_bank2_sectors,
+                                               sizeof(tms470r1a384_bank2_sectors));
                        } else {
                                LOG_ERROR("No %s flash bank contains base address " TARGET_ADDR_FMT ".",
                                                part_name, bank->base);
@@ -287,8 +285,8 @@ static int tms470_read_part_info(struct flash_bank *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static uint32_t keysSet;
-static uint32_t flashKeys[4];
+static uint32_t keys_set;
+static uint32_t flash_keys[4];
 
 COMMAND_HANDLER(tms470_handle_flash_keyset_command)
 {
@@ -298,9 +296,9 @@ COMMAND_HANDLER(tms470_handle_flash_keyset_command)
                int i;
 
                for (i = 0; i < 4; i++) {
-                       int start = (0 == strncmp(CMD_ARGV[i], "0x", 2)) ? 2 : 0;
+                       int start = (strncmp(CMD_ARGV[i], "0x", 2) == 0) ? 2 : 0;
 
-                       if (1 != sscanf(&CMD_ARGV[i][start], "%" SCNx32 "", &flashKeys[i])) {
+                       if (sscanf(&CMD_ARGV[i][start], "%" SCNx32 "", &flash_keys[i]) != 1) {
                                command_print(CMD, "could not process flash key %s",
                                        CMD_ARGV[i]);
                                LOG_ERROR("could not process flash key %s", CMD_ARGV[i]);
@@ -308,56 +306,56 @@ COMMAND_HANDLER(tms470_handle_flash_keyset_command)
                        }
                }
 
-               keysSet = 1;
+               keys_set = 1;
        } else if (CMD_ARGC != 0) {
                command_print(CMD, "tms470 flash_keyset <key0> <key1> <key2> <key3>");
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
-       if (keysSet) {
+       if (keys_set) {
                command_print(CMD,
                        "using flash keys 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32 "",
-                       flashKeys[0],
-                       flashKeys[1],
-                       flashKeys[2],
-                       flashKeys[3]);
+                       flash_keys[0],
+                       flash_keys[1],
+                       flash_keys[2],
+                       flash_keys[3]);
        } else
                command_print(CMD, "flash keys not set");
 
        return ERROR_OK;
 }
 
-static const uint32_t FLASH_KEYS_ALL_ONES[] = { 0xFFFFFFFF, 0xFFFFFFFF,
+static const uint32_t flash_keys_all_ones[] = { 0xFFFFFFFF, 0xFFFFFFFF,
                0xFFFFFFFF, 0xFFFFFFFF,};
 
-static const uint32_t FLASH_KEYS_ALL_ZEROS[] = { 0x00000000, 0x00000000,
+static const uint32_t flash_keys_all_zeros[] = { 0x00000000, 0x00000000,
                0x00000000, 0x00000000,};
 
-static const uint32_t FLASH_KEYS_MIX1[] = { 0xf0fff0ff, 0xf0fff0ff,
+static const uint32_t flash_keys_mix1[] = { 0xf0fff0ff, 0xf0fff0ff,
                0xf0fff0ff, 0xf0fff0ff};
 
-static const uint32_t FLASH_KEYS_MIX2[] = { 0x0000ffff, 0x0000ffff,
+static const uint32_t flash_keys_mix2[] = { 0x0000ffff, 0x0000ffff,
                0x0000ffff, 0x0000ffff};
 
 /* ---------------------------------------------------------------------- */
 
-static int oscMHz = 12;
+static int osc_mhz = 12;
 
 COMMAND_HANDLER(tms470_handle_osc_megahertz_command)
 {
        if (CMD_ARGC > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
        else if (CMD_ARGC == 1)
-               sscanf(CMD_ARGV[0], "%d", &oscMHz);
+               sscanf(CMD_ARGV[0], "%d", &osc_mhz);
 
-       if (oscMHz <= 0) {
+       if (osc_mhz <= 0) {
                LOG_ERROR("osc_megahertz must be positive and non-zero!");
                command_print(CMD, "osc_megahertz must be positive and non-zero!");
-               oscMHz = 12;
+               osc_mhz = 12;
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
-       command_print(CMD, "osc_megahertz=%d", oscMHz);
+       command_print(CMD, "osc_megahertz=%d", osc_mhz);
 
        return ERROR_OK;
 }
@@ -439,7 +437,7 @@ static int tms470_try_flash_keys(struct target *target, const uint32_t *key_set)
                        target_write_u32(target, 0xFFE89C0C, key_set[i]);
                }
 
-               if (ERROR_OK == tms470_check_flash_unlocked(target)) {
+               if (tms470_check_flash_unlocked(target) == ERROR_OK) {
                        /*
                         * There seems to be a side-effect of reading the FMPKEY
                         * register in that it re-enables the protection.  So we
@@ -473,19 +471,19 @@ static int tms470_unlock_flash(struct flash_bank *bank)
        const uint32_t *p_key_sets[5];
        unsigned i, key_set_count;
 
-       if (keysSet) {
+       if (keys_set) {
                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;
-               p_key_sets[3] = FLASH_KEYS_MIX1;
-               p_key_sets[4] = FLASH_KEYS_MIX2;
+               p_key_sets[0] = flash_keys;
+               p_key_sets[1] = flash_keys_all_ones;
+               p_key_sets[2] = flash_keys_all_zeros;
+               p_key_sets[3] = flash_keys_mix1;
+               p_key_sets[4] = flash_keys_mix2;
        } else {
                key_set_count = 4;
-               p_key_sets[0] = FLASH_KEYS_ALL_ONES;
-               p_key_sets[1] = FLASH_KEYS_ALL_ZEROS;
-               p_key_sets[2] = FLASH_KEYS_MIX1;
-               p_key_sets[3] = FLASH_KEYS_MIX2;
+               p_key_sets[0] = flash_keys_all_ones;
+               p_key_sets[1] = flash_keys_all_zeros;
+               p_key_sets[2] = flash_keys_mix1;
+               p_key_sets[3] = flash_keys_mix2;
        }
 
        for (i = 0; i < key_set_count; i++) {
@@ -575,7 +573,7 @@ static int tms470_flash_initialize_internal_state_machine(struct flash_bank *ban
         * the plldis global.
         */
        target_read_u32(target, 0xFFFFFFDC, &glbctrl);
-       sysclk = (plldis ? 1 : (glbctrl & 0x08) ? 4 : 8) * oscMHz / (1 + (glbctrl & 7));
+       sysclk = (plldis ? 1 : (glbctrl & 0x08) ? 4 : 8) * osc_mhz / (1 + (glbctrl & 7));
        delay = (sysclk > 10) ? (sysclk + 1) / 2 : 5;
        target_write_u32(target, 0xFFE8A018, (delay << 4) | (delay << 8));
        LOG_DEBUG("set fmpsetup = 0x%04" PRIx32 "", (delay << 4) | (delay << 8));
@@ -687,7 +685,7 @@ static int tms470_erase_sector(struct flash_bank *bank, int sector)
 {
        uint32_t glbctrl, orig_fmregopt, fmbsea, fmbseb, fmmstat;
        struct target *target = bank->target;
-       uint32_t flashAddr = bank->base + bank->sectors[sector].offset;
+       uint32_t flash_addr = bank->base + bank->sectors[sector].offset;
        int result = ERROR_OK;
 
        /*
@@ -724,12 +722,12 @@ static int tms470_erase_sector(struct flash_bank *bank, int sector)
        /*
         * clear status register, sent erase command, kickoff erase
         */
-       target_write_u16(target, flashAddr, 0x0040);
-       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0x0040", flashAddr);
-       target_write_u16(target, flashAddr, 0x0020);
-       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0x0020", flashAddr);
-       target_write_u16(target, flashAddr, 0xffff);
-       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0xffff", flashAddr);
+       target_write_u16(target, flash_addr, 0x0040);
+       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0x0040", flash_addr);
+       target_write_u16(target, flash_addr, 0x0020);
+       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0x0020", flash_addr);
+       target_write_u16(target, flash_addr, 0xffff);
+       LOG_DEBUG("write *(uint16_t *)0x%08" PRIx32 "=0xffff", flash_addr);
 
        /*
         * Monitor FMMSTAT, busy until clear, then check and other flags for
@@ -903,7 +901,7 @@ static int tms470_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t
 
        tms470_read_part_info(bank);
 
-       LOG_INFO("Writing %" PRId32 " bytes starting at " TARGET_ADDR_FMT,
+       LOG_INFO("Writing %" PRIu32 " bytes starting at " TARGET_ADDR_FMT,
                        count, bank->base + offset);
 
        /* set GLBCTRL.4  */
@@ -1120,26 +1118,20 @@ static int tms470_protect_check(struct flash_bank *bank)
 
 /* ---------------------------------------------------------------------- */
 
-static int get_tms470_info(struct flash_bank *bank, char *buf, int buf_size)
+static int get_tms470_info(struct flash_bank *bank, struct command_invocation *cmd)
 {
-       int used = 0;
        struct tms470_flash_bank *tms470_info = bank->driver_priv;
 
        if (!tms470_info->device_ident_reg)
                tms470_read_part_info(bank);
 
        if (!tms470_info->device_ident_reg) {
-               (void)snprintf(buf, buf_size, "Cannot identify target as a TMS470\n");
+               command_print_sameline(cmd, "Cannot identify target as a TMS470\n");
                return ERROR_FLASH_OPERATION_FAILED;
        }
 
-       used =
-               snprintf(buf, buf_size, "\ntms470 information: Chip is %s\n",
-                       tms470_info->part_name);
-       buf += used;
-       buf_size -= used;
-
-       snprintf(buf, buf_size, "Flash protection level 2 is %s\n",
+       command_print_sameline(cmd, "\ntms470 information: Chip is %s\n", tms470_info->part_name);
+       command_print_sameline(cmd, "Flash protection level 2 is %s\n",
                tms470_check_flash_unlocked(bank->target) == ERROR_OK ? "disabled" : "enabled");
 
        return ERROR_OK;

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)