retval = target_write_u32(target, FLASH_KEY, KEY);
if (retval != ERROR_OK)
- goto reset_pg_and_lock;
+ return retval;
retval = target_read_u32(target, FLASH_CMD, &flash_cmd);
if (retval != ERROR_OK)
return ERROR_OK;
}
-static int mdr_write_block(struct flash_bank *bank, uint8_t *buffer,
+static int mdr_write_block(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
};
retval = target_write_buffer(target, write_algorithm->address,
- sizeof(mdr32fx_flash_write_code), (uint8_t *)mdr32fx_flash_write_code);
+ sizeof(mdr32fx_flash_write_code), mdr32fx_flash_write_code);
if (retval != ERROR_OK)
return retval;
return retval;
}
-static int mdr_write(struct flash_bank *bank, uint8_t *buffer,
+static int mdr_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
LOG_INFO("odd number of bytes to write, padding with 0xff");
buffer = memcpy(new_buffer, buffer, count);
while (rem--)
- buffer[count++] = 0xff;
+ new_buffer[count++] = 0xff;
}
uint32_t flash_cmd, cur_per_clock;
retval = target_read_u32(target, MD_PER_CLOCK, &cur_per_clock);
if (retval != ERROR_OK)
- return retval;
+ goto free_buffer;
if (!(cur_per_clock & MD_PER_CLOCK_RST_CLK)) {
/* Something's very wrong if the RST_CLK module is not clocked */
LOG_ERROR("Target needs reset before flash operations");
- return ERROR_FLASH_OPERATION_FAILED;
+ retval = ERROR_FLASH_OPERATION_FAILED;
+ goto free_buffer;
}
retval = target_write_u32(target, MD_PER_CLOCK, cur_per_clock | MD_PER_CLOCK_EEPROM);
if (retval != ERROR_OK)
- return retval;
+ goto free_buffer;
retval = target_write_u32(target, FLASH_KEY, KEY);
if (retval != ERROR_OK)
- goto reset_pg_and_lock;
+ goto free_buffer;
retval = target_read_u32(target, FLASH_CMD, &flash_cmd);
if (retval != ERROR_OK)
if (retval == ERROR_OK)
retval = retval2;
+free_buffer:
if (new_buffer)
free(new_buffer);