kinetis: Clean up how kl_gen_flash_done builds the command buffers to send to ensure the security byte is OK

This commit is contained in:
dragonmux 2022-06-28 23:30:19 -04:00 committed by Piotr Esden-Tempski
parent f0566979b0
commit 4bc68409f8
1 changed files with 8 additions and 8 deletions

View File

@ -493,16 +493,16 @@ static int kinetis_flash_done(struct target_flash *const f)
* vs 4 byte phrases). * vs 4 byte phrases).
*/ */
if (kf->write_len == K64_WRITE_LEN) { if (kf->write_len == K64_WRITE_LEN) {
uint32_t vals[2]; uint32_t vals[2] = {
vals[0] = target_mem_read32(f->t, FLASH_SECURITY_BYTE_ADDRESS - 4); target_mem_read32(f->t, FLASH_SECURITY_BYTE_ADDRESS - 4),
vals[1] = target_mem_read32(f->t, FLASH_SECURITY_BYTE_ADDRESS); target_mem_read32(f->t, FLASH_SECURITY_BYTE_ADDRESS)
vals[1] = (vals[1] & 0xffffff00) | FLASH_SECURITY_BYTE_UNSECURED; };
vals[1] = (vals[1] & 0xffffff00U) | FLASH_SECURITY_BYTE_UNSECURED;
kinetis_fccob_cmd(f->t, FTFx_CMD_PROGRAM_PHRASE, FLASH_SECURITY_BYTE_ADDRESS - 4, vals, 2); kinetis_fccob_cmd(f->t, FTFx_CMD_PROGRAM_PHRASE, FLASH_SECURITY_BYTE_ADDRESS - 4, vals, 2);
} else { } else {
uint32_t vals[1]; uint32_t val = target_mem_read32(f->t, FLASH_SECURITY_BYTE_ADDRESS);
vals[0] = target_mem_read32(f->t, FLASH_SECURITY_BYTE_ADDRESS); val = (val & 0xffffff00U) | FLASH_SECURITY_BYTE_UNSECURED;
vals[0] = (vals[0] & 0xffffff00) | FLASH_SECURITY_BYTE_UNSECURED; kinetis_fccob_cmd(f->t, FTFx_CMD_PROGRAM_LONGWORD, FLASH_SECURITY_BYTE_ADDRESS, &val, 1);
kinetis_fccob_cmd(f->t, FTFx_CMD_PROGRAM_LONGWORD, FLASH_SECURITY_BYTE_ADDRESS, vals, 1);
} }
return 0; return 0;