flash/nor/kinetis: Minor code cleanups

Change-Id: Id74cb6c238b803d1a1566fc615e22ea478f2e15e
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/5459
Tested-by: jenkins
Reviewed-by: Lars Poeschel <poeschell+openocd@mailbox.org>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
Marc Schink 2020-02-20 21:49:17 +01:00 committed by Antonio Borneo
parent da41bce3ae
commit ed8d4a2e3b
1 changed files with 26 additions and 34 deletions

View File

@ -787,9 +787,8 @@ COMMAND_HANDLER(kinetis_check_flash_security_status)
if ((val & (MDM_STAT_SYSSEC | MDM_STAT_FREADY)) != MDM_STAT_FREADY) { if ((val & (MDM_STAT_SYSSEC | MDM_STAT_FREADY)) != MDM_STAT_FREADY) {
uint32_t stats[32]; uint32_t stats[32];
int i;
for (i = 0; i < 32; i++) { for (unsigned int i = 0; i < 32; i++) {
stats[i] = MDM_STAT_FREADY; stats[i] = MDM_STAT_FREADY;
dap_queue_ap_read(dap_ap(dap, MDM_AP), MDM_REG_STAT, &stats[i]); dap_queue_ap_read(dap_ap(dap, MDM_AP), MDM_REG_STAT, &stats[i]);
} }
@ -798,7 +797,7 @@ COMMAND_HANDLER(kinetis_check_flash_security_status)
LOG_DEBUG("MDM: dap_run failed when validating secured state"); LOG_DEBUG("MDM: dap_run failed when validating secured state");
return ERROR_OK; return ERROR_OK;
} }
for (i = 0; i < 32; i++) { for (unsigned int i = 0; i < 32; i++) {
if (stats[i] & MDM_STAT_SYSSEC) if (stats[i] & MDM_STAT_SYSSEC)
secured_score++; secured_score++;
if (!(stats[i] & MDM_STAT_FREADY)) if (!(stats[i] & MDM_STAT_FREADY))
@ -860,8 +859,7 @@ static struct kinetis_chip *kinetis_get_chip(struct target *target)
static int kinetis_chip_options(struct kinetis_chip *k_chip, int argc, const char *argv[]) static int kinetis_chip_options(struct kinetis_chip *k_chip, int argc, const char *argv[])
{ {
int i; for (int i = 0; i < argc; i++) {
for (i = 0; i < argc; i++) {
if (strcmp(argv[i], "-sim-base") == 0) { if (strcmp(argv[i], "-sim-base") == 0) {
if (i + 1 < argc) if (i + 1 < argc)
k_chip->sim_base = strtoul(argv[++i], NULL, 0); k_chip->sim_base = strtoul(argv[++i], NULL, 0);
@ -933,7 +931,6 @@ static void kinetis_free_driver_priv(struct flash_bank *bank)
static int kinetis_create_missing_banks(struct kinetis_chip *k_chip) static int kinetis_create_missing_banks(struct kinetis_chip *k_chip)
{ {
unsigned bank_idx;
unsigned num_blocks; unsigned num_blocks;
struct kinetis_flash_bank *k_bank; struct kinetis_flash_bank *k_bank;
struct flash_bank *bank; struct flash_bank *bank;
@ -968,7 +965,7 @@ static int kinetis_create_missing_banks(struct kinetis_chip *k_chip)
*p = '\0'; *p = '\0';
} }
for (bank_idx = 1; bank_idx < num_blocks; bank_idx++) { for (unsigned int bank_idx = 1; bank_idx < num_blocks; bank_idx++) {
k_bank = &(k_chip->banks[bank_idx]); k_bank = &(k_chip->banks[bank_idx]);
bank = k_bank->bank; bank = k_bank->bank;
@ -1219,11 +1216,11 @@ static int kinetis_ftfx_clear_error(struct target *target)
static int kinetis_ftfx_prepare(struct target *target) static int kinetis_ftfx_prepare(struct target *target)
{ {
int result, i; int result;
uint8_t fstat; uint8_t fstat;
/* wait until busy */ /* wait until busy */
for (i = 0; i < 50; i++) { for (unsigned int i = 0; i < 50; i++) {
result = target_read_u8(target, FTFx_FSTAT, &fstat); result = target_read_u8(target, FTFx_FSTAT, &fstat);
if (result != ERROR_OK) if (result != ERROR_OK)
return result; return result;
@ -1343,8 +1340,6 @@ static int kinetis_write_block(struct flash_bank *bank, const uint8_t *buffer,
static int kinetis_protect(struct flash_bank *bank, int set, int first, int last) static int kinetis_protect(struct flash_bank *bank, int set, int first, int last)
{ {
int i;
if (allow_fcf_writes) { if (allow_fcf_writes) {
LOG_ERROR("Protection setting is possible with 'kinetis fcf_source protection' only!"); LOG_ERROR("Protection setting is possible with 'kinetis fcf_source protection' only!");
return ERROR_FAIL; return ERROR_FAIL;
@ -1355,7 +1350,7 @@ static int kinetis_protect(struct flash_bank *bank, int set, int first, int last
return ERROR_FLASH_BANK_INVALID; return ERROR_FLASH_BANK_INVALID;
} }
for (i = first; i < bank->num_prot_blocks && i <= last; i++) for (int i = first; i < bank->num_prot_blocks && i <= last; i++)
bank->prot_blocks[i].is_protected = set; bank->prot_blocks[i].is_protected = set;
LOG_INFO("Protection bits will be written at the next FCF sector erase or write."); LOG_INFO("Protection bits will be written at the next FCF sector erase or write.");
@ -1369,7 +1364,7 @@ static int kinetis_protect_check(struct flash_bank *bank)
{ {
struct kinetis_flash_bank *k_bank = bank->driver_priv; struct kinetis_flash_bank *k_bank = bank->driver_priv;
int result; int result;
int i, b; int b;
uint32_t fprot; uint32_t fprot;
if (k_bank->flash_class == FC_PFLASH) { if (k_bank->flash_class == FC_PFLASH) {
@ -1397,7 +1392,7 @@ static int kinetis_protect_check(struct flash_bank *bank)
} }
b = k_bank->protection_block; b = k_bank->protection_block;
for (i = 0; i < bank->num_prot_blocks; i++) { for (int i = 0; i < bank->num_prot_blocks; i++) {
if ((fprot >> b) & 1) if ((fprot >> b) & 1)
bank->prot_blocks[i].is_protected = 0; bank->prot_blocks[i].is_protected = 0;
else else
@ -1415,8 +1410,6 @@ static int kinetis_fill_fcf(struct flash_bank *bank, uint8_t *fcf)
uint32_t fprot = 0xffffffff; uint32_t fprot = 0xffffffff;
uint8_t fsec = 0xfe; /* set MCU unsecure */ uint8_t fsec = 0xfe; /* set MCU unsecure */
uint8_t fdprot = 0xff; uint8_t fdprot = 0xff;
int i;
unsigned bank_idx;
unsigned num_blocks; unsigned num_blocks;
uint32_t pflash_bit; uint32_t pflash_bit;
uint8_t dflash_bit; uint8_t dflash_bit;
@ -1432,7 +1425,7 @@ static int kinetis_fill_fcf(struct flash_bank *bank, uint8_t *fcf)
/* iterate over all kinetis banks */ /* iterate over all kinetis banks */
/* current bank is bank 0, it contains FCF */ /* current bank is bank 0, it contains FCF */
num_blocks = k_chip->num_pflash_blocks + k_chip->num_nvm_blocks; num_blocks = k_chip->num_pflash_blocks + k_chip->num_nvm_blocks;
for (bank_idx = 0; bank_idx < num_blocks; bank_idx++) { for (unsigned int bank_idx = 0; bank_idx < num_blocks; bank_idx++) {
k_bank = &(k_chip->banks[bank_idx]); k_bank = &(k_chip->banks[bank_idx]);
bank_iter = k_bank->bank; bank_iter = k_bank->bank;
@ -1446,7 +1439,7 @@ static int kinetis_fill_fcf(struct flash_bank *bank, uint8_t *fcf)
assert(bank_iter->prot_blocks); assert(bank_iter->prot_blocks);
if (k_bank->flash_class == FC_PFLASH) { if (k_bank->flash_class == FC_PFLASH) {
for (i = 0; i < bank_iter->num_prot_blocks; i++) { for (int i = 0; i < bank_iter->num_prot_blocks; i++) {
if (bank_iter->prot_blocks[i].is_protected == 1) if (bank_iter->prot_blocks[i].is_protected == 1)
fprot &= ~pflash_bit; fprot &= ~pflash_bit;
@ -1454,7 +1447,7 @@ static int kinetis_fill_fcf(struct flash_bank *bank, uint8_t *fcf)
} }
} else if (k_bank->flash_class == FC_FLEX_NVM) { } else if (k_bank->flash_class == FC_FLEX_NVM) {
for (i = 0; i < bank_iter->num_prot_blocks; i++) { for (int i = 0; i < bank_iter->num_prot_blocks; i++) {
if (bank_iter->prot_blocks[i].is_protected == 1) if (bank_iter->prot_blocks[i].is_protected == 1)
fdprot &= ~dflash_bit; fdprot &= ~dflash_bit;
@ -1542,7 +1535,7 @@ static int kinetis_read_pmstat(struct kinetis_chip *k_chip, uint8_t *pmstat)
static int kinetis_check_run_mode(struct kinetis_chip *k_chip) static int kinetis_check_run_mode(struct kinetis_chip *k_chip)
{ {
int result, i; int result;
uint8_t pmstat; uint8_t pmstat;
struct target *target; struct target *target;
@ -1580,7 +1573,7 @@ static int kinetis_check_run_mode(struct kinetis_chip *k_chip)
if (result != ERROR_OK) if (result != ERROR_OK)
return result; return result;
for (i = 100; i; i--) { for (unsigned int i = 100; i > 0; i--) {
result = kinetis_read_pmstat(k_chip, &pmstat); result = kinetis_read_pmstat(k_chip, &pmstat);
if (result != ERROR_OK) if (result != ERROR_OK)
return result; return result;
@ -1625,7 +1618,7 @@ static void kinetis_invalidate_flash_cache(struct kinetis_chip *k_chip)
static int kinetis_erase(struct flash_bank *bank, int first, int last) static int kinetis_erase(struct flash_bank *bank, int first, int last)
{ {
int result, i; int result;
struct kinetis_flash_bank *k_bank = bank->driver_priv; struct kinetis_flash_bank *k_bank = bank->driver_priv;
struct kinetis_chip *k_chip = k_bank->k_chip; struct kinetis_chip *k_chip = k_bank->k_chip;
@ -1646,7 +1639,7 @@ static int kinetis_erase(struct flash_bank *bank, int first, int last)
* requested erase is PFlash or NVM and encompasses the entire * requested erase is PFlash or NVM and encompasses the entire
* block. Should be quicker. * block. Should be quicker.
*/ */
for (i = first; i <= last; i++) { for (int i = first; i <= last; i++) {
/* set command and sector address */ /* set command and sector address */
result = kinetis_ftfx_command(bank->target, FTFx_CMD_SECTERASE, k_bank->prog_base + bank->sectors[i].offset, result = kinetis_ftfx_command(bank->target, FTFx_CMD_SECTERASE, k_bank->prog_base + bank->sectors[i].offset,
0, 0, 0, 0, 0, 0, 0, 0, NULL); 0, 0, 0, 0, 0, 0, 0, 0, NULL);
@ -1810,25 +1803,26 @@ static int kinetis_write_sections(struct flash_bank *bank, const uint8_t *buffer
static int kinetis_write_inner(struct flash_bank *bank, const uint8_t *buffer, static int kinetis_write_inner(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count) uint32_t offset, uint32_t count)
{ {
int result, fallback = 0; int result;
bool fallback = false;
struct kinetis_flash_bank *k_bank = bank->driver_priv; struct kinetis_flash_bank *k_bank = bank->driver_priv;
struct kinetis_chip *k_chip = k_bank->k_chip; struct kinetis_chip *k_chip = k_bank->k_chip;
if (!(k_chip->flash_support & FS_PROGRAM_SECTOR)) { if (!(k_chip->flash_support & FS_PROGRAM_SECTOR)) {
/* fallback to longword write */ /* fallback to longword write */
fallback = 1; fallback = true;
LOG_INFO("This device supports Program Longword execution only."); LOG_INFO("This device supports Program Longword execution only.");
} else { } else {
result = kinetis_make_ram_ready(bank->target); result = kinetis_make_ram_ready(bank->target);
if (result != ERROR_OK) { if (result != ERROR_OK) {
fallback = 1; fallback = true;
LOG_WARNING("FlexRAM not ready, fallback to slow longword write."); LOG_WARNING("FlexRAM not ready, fallback to slow longword write.");
} }
} }
LOG_DEBUG("flash write @ " TARGET_ADDR_FMT, bank->base + offset); LOG_DEBUG("flash write @ " TARGET_ADDR_FMT, bank->base + offset);
if (fallback == 0) { if (!fallback) {
/* program section command */ /* program section command */
kinetis_write_sections(bank, buffer, offset, count); kinetis_write_sections(bank, buffer, offset, count);
} else if (k_chip->flash_support & FS_PROGRAM_LONGWORD) { } else if (k_chip->flash_support & FS_PROGRAM_LONGWORD) {
@ -2020,7 +2014,6 @@ static int kinetis_probe_chip(struct kinetis_chip *k_chip)
unsigned familyid = 0, subfamid = 0; unsigned familyid = 0, subfamid = 0;
unsigned cpu_mhz = 120; unsigned cpu_mhz = 120;
unsigned idx;
bool use_nvm_marking = false; bool use_nvm_marking = false;
char flash_marking[12], nvm_marking[2]; char flash_marking[12], nvm_marking[2];
char name[40]; char name[40];
@ -2115,7 +2108,7 @@ static int kinetis_probe_chip(struct kinetis_chip *k_chip)
LOG_ERROR("Unsupported K-family FAMID"); LOG_ERROR("Unsupported K-family FAMID");
} }
for (idx = 0; idx < ARRAY_SIZE(kinetis_types_old); idx++) { for (size_t idx = 0; idx < ARRAY_SIZE(kinetis_types_old); idx++) {
if (kinetis_types_old[idx].sdid == mcu_type) { if (kinetis_types_old[idx].sdid == mcu_type) {
strcpy(name, kinetis_types_old[idx].name); strcpy(name, kinetis_types_old[idx].name);
use_nvm_marking = true; use_nvm_marking = true;
@ -2621,7 +2614,7 @@ static int kinetis_probe_chip(struct kinetis_chip *k_chip)
static int kinetis_probe(struct flash_bank *bank) static int kinetis_probe(struct flash_bank *bank)
{ {
int result, i; int result;
uint8_t fcfg2_maxaddr0, fcfg2_pflsh, fcfg2_maxaddr1; uint8_t fcfg2_maxaddr0, fcfg2_pflsh, fcfg2_maxaddr1;
unsigned num_blocks, first_nvm_bank; unsigned num_blocks, first_nvm_bank;
uint32_t size_k; uint32_t size_k;
@ -2673,6 +2666,7 @@ static int kinetis_probe(struct flash_bank *bank)
if (k_chip->dflash_size == 0) { if (k_chip->dflash_size == 0) {
k_bank->protection_size = 0; k_bank->protection_size = 0;
} else { } else {
int i;
for (i = k_chip->dflash_size; ~i & 1; i >>= 1) for (i = k_chip->dflash_size; ~i & 1; i >>= 1)
; ;
if (i == 1) if (i == 1)
@ -2829,8 +2823,7 @@ static int kinetis_blank_check(struct flash_bank *bank)
if (block_dirty) { if (block_dirty) {
/* the whole bank is not erased, check sector-by-sector */ /* the whole bank is not erased, check sector-by-sector */
int i; for (int i = 0; i < bank->num_sectors; i++) {
for (i = 0; i < bank->num_sectors; i++) {
/* normal margin */ /* normal margin */
result = kinetis_ftfx_command(bank->target, FTFx_CMD_SECTSTAT, result = kinetis_ftfx_command(bank->target, FTFx_CMD_SECTSTAT,
k_bank->prog_base + bank->sectors[i].offset, k_bank->prog_base + bank->sectors[i].offset,
@ -2846,8 +2839,7 @@ static int kinetis_blank_check(struct flash_bank *bank)
} }
} else { } else {
/* the whole bank is erased, update all sectors */ /* the whole bank is erased, update all sectors */
int i; for (int i = 0; i < bank->num_sectors; i++)
for (i = 0; i < bank->num_sectors; i++)
bank->sectors[i].is_erased = 1; bank->sectors[i].is_erased = 1;
} }
} else { } else {