static int max32xxx_mass_erase(struct flash_bank *bank);
struct max32xxx_flash_bank {
- int probed;
+ bool probed;
int max326xx;
unsigned int flash_size;
unsigned int flc_base;
unsigned int sector_size;
unsigned int clkdiv_value;
- unsigned int int_state;
+ uint32_t int_state;
unsigned int burst_size_bits;
};
-/* see contib/loaders/flash/max32xxx/max32xxx.s for src */
+/* see contrib/loaders/flash/max32xxx/max32xxx.s for src */
static const uint8_t write_code[] = {
-#include "../../contrib/loaders/flash/max32xxx/max32xxx.inc"
+#include "../../../contrib/loaders/flash/max32xxx/max32xxx.inc"
};
/* Config Command: flash bank name driver base size chip_width bus_width target [driver_option]
}
info = calloc(sizeof(struct max32xxx_flash_bank), 1);
- COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], info->flash_size);
- COMMAND_PARSE_NUMBER(u32, CMD_ARGV[6], info->flc_base);
- COMMAND_PARSE_NUMBER(u32, CMD_ARGV[7], info->sector_size);
- COMMAND_PARSE_NUMBER(u32, CMD_ARGV[8], info->clkdiv_value);
+ COMMAND_PARSE_NUMBER(uint, CMD_ARGV[2], info->flash_size);
+ COMMAND_PARSE_NUMBER(uint, CMD_ARGV[6], info->flc_base);
+ COMMAND_PARSE_NUMBER(uint, CMD_ARGV[7], info->sector_size);
+ COMMAND_PARSE_NUMBER(uint, CMD_ARGV[8], info->clkdiv_value);
if (CMD_ARGC > 9)
- COMMAND_PARSE_NUMBER(u32, CMD_ARGV[9], info->burst_size_bits);
+ COMMAND_PARSE_NUMBER(uint, CMD_ARGV[9], info->burst_size_bits);
else
info->burst_size_bits = 32;
return ERROR_OK;
}
-static int get_info(struct flash_bank *bank, char *buf, int buf_size)
+static int get_info(struct flash_bank *bank, struct command_invocation *cmd)
{
- int printed;
struct max32xxx_flash_bank *info = bank->driver_priv;
- if (info->probed == 0)
+ if (!info->probed)
return ERROR_FLASH_BANK_NOT_PROBED;
- printed = snprintf(buf, buf_size, "\nMaxim Integrated max32xxx flash driver\n");
- buf += printed;
- buf_size -= printed;
+ command_print_sameline(cmd, "\nMaxim Integrated max32xxx flash driver\n");
return ERROR_OK;
}
struct target *target = bank->target;
uint32_t temp_reg;
- if (info->probed == 0)
+ if (!info->probed)
return ERROR_FLASH_BANK_NOT_PROBED;
if (!info->max326xx) {
return ERROR_TARGET_NOT_HALTED;
}
- if (info->probed == 0)
+ if (!info->probed)
return ERROR_FLASH_BANK_NOT_PROBED;
if ((last < first) || (last >= bank->num_sectors))
max32xxx_flash_op_post(bank);
return ERROR_FLASH_OPERATION_FAILED;
}
-
- bank->sectors[banknr].is_erased = 1;
}
if (!erased) {
return ERROR_TARGET_NOT_HALTED;
}
- if (info->probed == 0)
+ if (!info->probed)
return ERROR_FLASH_BANK_NOT_PROBED;
if (!info->max326xx)
LOG_DEBUG("bank=%p buffer=%p offset=%08" PRIx32 " count=%08" PRIx32 "",
bank, buffer, offset, count);
- if (info->probed == 0)
+ if (!info->probed)
return ERROR_FLASH_BANK_NOT_PROBED;
if (offset & 0x3) {
} while ((--retry > 0) && (flsh_cn & FLSH_CN_PEND));
if (retry <= 0) {
- LOG_ERROR("Timed out waiting for flash write @ 0x%08x", address);
+ LOG_ERROR("Timed out waiting for flash write @ 0x%08" PRIx32, address);
return ERROR_FLASH_OPERATION_FAILED;
}
while (remaining >= 16) {
if ((address & 0xFFF) == 0)
- LOG_DEBUG("Writing @ 0x%08x", address);
+ LOG_DEBUG("Writing @ 0x%08" PRIx32, address);
target_write_buffer(target, info->flc_base + FLSH_DATA0, 16, buffer);
flsh_cn |= 0x00000001;
} while ((--retry > 0) && (flsh_cn & FLSH_CN_PEND));
if (retry <= 0) {
- LOG_ERROR("Timed out waiting for flash write @ 0x%08x", address);
+ LOG_ERROR("Timed out waiting for flash write @ 0x%08" PRIx32, address);
return ERROR_FLASH_OPERATION_FAILED;
}
} while ((--retry > 0) && (flsh_cn & FLSH_CN_PEND));
if (retry <= 0) {
- LOG_ERROR("Timed out waiting for flash write @ 0x%08x", address);
+ LOG_ERROR("Timed out waiting for flash write @ 0x%08" PRIx32, address);
return ERROR_FLASH_OPERATION_FAILED;
}
} while ((--retry > 0) && (flsh_cn & FLSH_CN_PEND));
if (retry <= 0) {
- LOG_ERROR("Timed out waiting for flash write @ 0x%08x", address);
+ LOG_ERROR("Timed out waiting for flash write @ 0x%08" PRIx32, address);
return ERROR_FLASH_OPERATION_FAILED;
}
}
/* Check access violations */
target_read_u32(target, info->flc_base + FLSH_INT, &flsh_int);
if (flsh_int & FLSH_INT_AF) {
- LOG_ERROR("Flash Error writing 0x%x bytes at 0x%08x", count, offset);
+ LOG_ERROR("Flash Error writing 0x%" PRIx32 " bytes at 0x%08" PRIx32, count, offset);
max32xxx_flash_op_post(bank);
return ERROR_FLASH_OPERATION_FAILED;
}
uint32_t arm_id[2];
uint16_t arm_pid;
- if (bank->sectors) {
- free(bank->sectors);
- bank->sectors = NULL;
- }
+ free(bank->sectors);
/* provide this for the benefit of the NOR flash framework */
bank->size = info->flash_size;
if ((arm_pid == ARM_PID_DEFAULT_CM3) || arm_pid == ARM_PID_DEFAULT_CM4) {
uint32_t max326xx_id;
target_read_u32(target, MAX326XX_ID_REG, &max326xx_id);
- LOG_DEBUG("max326xx_id = 0x%x", max326xx_id);
+ LOG_DEBUG("max326xx_id = 0x%" PRIx32, max326xx_id);
max326xx_id = ((max326xx_id & 0xFF000000) >> 24);
if (max326xx_id == MAX326XX_ID)
info->max326xx = 1;
if (max32xxx_protect_check(bank) == ERROR_FLASH_OPER_UNSUPPORTED)
LOG_WARNING("Flash protection not supported on this device");
- info->probed = 1;
+ info->probed = true;
return ERROR_OK;
}
return ERROR_TARGET_NOT_HALTED;
}
- if (info->probed == 0)
+ if (!info->probed)
return ERROR_FLASH_BANK_NOT_PROBED;
int not_protected = 0;
return ERROR_OK;
}
- if (ERROR_OK != retval)
+ if (retval != ERROR_OK)
return retval;
- if (max32xxx_mass_erase(bank) == ERROR_OK) {
- /* set all sectors as erased */
- for (unsigned i = 0; i < bank->num_sectors; i++)
- bank->sectors[i].is_erased = 1;
-
+ if (max32xxx_mass_erase(bank) == ERROR_OK)
command_print(CMD, "max32xxx mass erase complete");
- } else
+ else
command_print(CMD, "max32xxx mass erase failed");
return ERROR_OK;
}
retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
- if (ERROR_OK != retval)
+ if (retval != ERROR_OK)
return retval;
info = bank->driver_priv;
/* Convert the range to the page numbers */
- if (1 != sscanf(CMD_ARGV[1], "0x%"SCNx32, &addr)) {
+ if (sscanf(CMD_ARGV[1], "0x%"SCNx32, &addr) != 1) {
LOG_WARNING("Error parsing address");
command_print(CMD, "max32xxx protection_set <bank> <addr> <size>");
return ERROR_FAIL;
/* Mask off the top portion on the address */
addr = (addr & 0x0FFFFFFF);
- if (1 != sscanf(CMD_ARGV[2], "0x%"SCNx32, &len)) {
+ if (sscanf(CMD_ARGV[2], "0x%"SCNx32, &len) != 1) {
LOG_WARNING("Error parsing length");
command_print(CMD, "max32xxx protection_set <bank> <addr> <size>");
return ERROR_FAIL;
}
retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
- if (ERROR_OK != retval)
+ if (retval != ERROR_OK)
return retval;
info = bank->driver_priv;
/* Convert the range to the page numbers */
- if (1 != sscanf(CMD_ARGV[1], "0x%"SCNx32, &addr)) {
+ if (sscanf(CMD_ARGV[1], "0x%"SCNx32, &addr) != 1) {
LOG_WARNING("Error parsing address");
command_print(CMD, "max32xxx protection_clr <bank> <addr> <size>");
return ERROR_FAIL;
/* Mask off the top portion on the address */
addr = (addr & 0x0FFFFFFF);
- if (1 != sscanf(CMD_ARGV[2], "0x%"SCNx32, &len)) {
+ if (sscanf(CMD_ARGV[2], "0x%"SCNx32, &len) != 1) {
LOG_WARNING("Error parsing length");
command_print(CMD, "max32xxx protection_clr <bank> <addr> <size>");
return ERROR_FAIL;
}
retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
- if (ERROR_OK != retval)
+ if (retval != ERROR_OK)
return retval;
info = bank->driver_priv;
/* Update the protection array */
retval = max32xxx_protect_check(bank);
- if (ERROR_OK != retval) {
+ if (retval != ERROR_OK) {
LOG_WARNING("Error updating the protection array");
return retval;
}