if (CMD_ARGC < 7)
{
- LOG_WARNING("incomplete flash_bank str7x configuration");
- return ERROR_FLASH_BANK_INVALID;
+ return ERROR_COMMAND_SYNTAX_ERROR;
}
str7x_info = malloc(sizeof(struct str7x_flash_bank));
static int str7x_result(struct flash_bank *bank)
{
struct target *target = bank->target;
- uint32_t retval;
+ uint32_t flash_flags;
- int err;
- err = target_read_u32(target, str7x_get_flash_adr(bank, FLASH_ER), &retval);
- if (err != ERROR_OK)
- return err;
+ int retval;
+ retval = target_read_u32(target, str7x_get_flash_adr(bank, FLASH_ER), &flash_flags);
+ if (retval != ERROR_OK)
+ return retval;
- if (retval & FLASH_WPF)
+ if (flash_flags & FLASH_WPF)
{
LOG_ERROR("str7x hw write protection set");
- err = ERROR_FAIL;
+ retval = ERROR_FAIL;
}
- if (retval & FLASH_RESER)
+ if (flash_flags & FLASH_RESER)
{
LOG_ERROR("str7x suspended program erase not resumed");
- err = ERROR_FAIL;
+ retval = ERROR_FAIL;
}
- if (retval & FLASH_10ER)
+ if (flash_flags & FLASH_10ER)
{
LOG_ERROR("str7x trying to set bit to 1 when it is already 0");
- err = ERROR_FAIL;
+ retval = ERROR_FAIL;
}
- if (retval & FLASH_PGER)
+ if (flash_flags & FLASH_PGER)
{
LOG_ERROR("str7x program error");
- err = ERROR_FAIL;
+ retval = ERROR_FAIL;
}
- if (retval & FLASH_ERER)
+ if (flash_flags & FLASH_ERER)
{
LOG_ERROR("str7x erase error");
- err = ERROR_FAIL;
+ retval = ERROR_FAIL;
}
- if (err == ERROR_OK)
+ if (retval == ERROR_OK)
{
- if (retval & FLASH_ERR)
+ if (flash_flags & FLASH_ERR)
{
/* this should always be set if one of the others are set... */
LOG_ERROR("str7x write operation failed / bad setup");
- err = ERROR_FAIL;
+ retval = ERROR_FAIL;
}
}
- if (err != ERROR_OK)
- {
- LOG_ERROR("FLASH_ER register contents: 0x%" PRIx32, retval);
- }
return retval;
}
struct target *target = bank->target;
int i;
- uint32_t retval;
+ uint32_t flash_flags;
if (bank->target->state != TARGET_HALTED)
{
return ERROR_TARGET_NOT_HALTED;
}
- target_read_u32(target, str7x_get_flash_adr(bank, FLASH_NVWPAR), &retval);
+ int retval;
+ retval = target_read_u32(target, str7x_get_flash_adr(bank, FLASH_NVWPAR), &flash_flags);
+ if (retval != ERROR_OK)
+ return retval;
for (i = 0; i < bank->num_sectors; i++)
{
- if (retval & str7x_info->sector_bits[i])
+ if (flash_flags & str7x_info->sector_bits[i])
bank->sectors[i].is_protected = 0;
else
bank->sectors[i].is_protected = 1;
if (bytes_remaining)
{
uint8_t last_dword[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
- i = 0;
- while (bytes_remaining > 0)
- {
- last_dword[i++] = *(buffer + bytes_written);
- bytes_remaining--;
- bytes_written++;
- }
+ /* copy the last remaining bytes into the write buffer */
+ memcpy(last_dword, buffer+bytes_written, bytes_remaining);
/* command */
cmd = FLASH_DWPG;
/* data word 1 */
target_write_memory(target, str7x_get_flash_adr(bank, FLASH_DR0),
4, 1, last_dword);
- bytes_written += 4;
/* data word 2 */
target_write_memory(target, str7x_get_flash_adr(bank, FLASH_DR1),
4, 1, last_dword + 4);
- bytes_written += 4;
/* start programming cycle */
cmd = FLASH_DWPG | FLASH_WMS;
if (CMD_ARGC < 1)
{
- command_print(CMD_CTX, "str7x disable_jtag <bank>");
- return ERROR_OK;
+ return ERROR_COMMAND_SYNTAX_ERROR;
}
struct flash_bank *bank;
static const struct command_registration str7x_exec_command_handlers[] = {
{
.name = "disable_jtag",
+ .usage = "<bank>",
.handler = str7x_handle_disable_jtag_command,
.mode = COMMAND_EXEC,
.help = "disable jtag access",