struct ambiqmicro_flash_bank {
/* chip id register */
- uint32_t probed;
+ bool probed;
const char *target_name;
uint8_t target_class;
ambiqmicro_info->target_name = "Unknown target";
/* part wasn't probed yet */
- ambiqmicro_info->probed = 0;
+ ambiqmicro_info->probed = false;
return ERROR_OK;
}
-static int get_ambiqmicro_info(struct flash_bank *bank, char *buf, int buf_size)
+static int get_ambiqmicro_info(struct flash_bank *bank, struct command_invocation *cmd)
{
struct ambiqmicro_flash_bank *ambiqmicro_info = bank->driver_priv;
- int printed;
char *classname;
- if (ambiqmicro_info->probed == 0) {
+ if (!ambiqmicro_info->probed) {
LOG_ERROR("Target not probed");
return ERROR_FLASH_BANK_NOT_PROBED;
}
else
classname = ambiqmicroClassname[0];
- printed = snprintf(buf,
- buf_size,
- "\nAmbiq Micro information: Chip is "
+ command_print_sameline(cmd, "\nAmbiq Micro information: Chip is "
"class %d (%s) %s\n",
ambiqmicro_info->target_class,
classname,
ambiqmicro_info->target_name);
- if ((printed < 0))
- return ERROR_BUF_TOO_SMALL;
return ERROR_OK;
}
/* Set PartNum to default device */
PartNum = 0;
}
- LOG_DEBUG("Part number: 0x%x", PartNum);
+ LOG_DEBUG("Part number: 0x%" PRIx32, PartNum);
/*
* Determine device class.
}
- if (ambiqmicro_info->target_class <
- (sizeof(ambiqmicroParts)/sizeof(ambiqmicroParts[0])))
+ if (ambiqmicro_info->target_class < ARRAY_SIZE(ambiqmicroParts))
ambiqmicro_info->target_name =
ambiqmicroParts[ambiqmicro_info->target_class].partname;
else
ambiqmicro_info->target_name =
ambiqmicroParts[0].partname;
- LOG_DEBUG("num_pages: %d, pagesize: %d, flash: %d, sram: %d",
+ LOG_DEBUG("num_pages: %" PRIu32 ", pagesize: %" PRIu32 ", flash: %" PRIu32 ", sram: %" PRIu32,
ambiqmicro_info->num_pages,
ambiqmicro_info->pagesize,
ambiqmicro_info->flshsiz,
uint32_t i;
- if (ambiqmicro->probed == 0) {
+ if (!ambiqmicro->probed) {
LOG_ERROR("Target not probed");
return ERROR_FLASH_BANK_NOT_PROBED;
}
}
/* target flash failed, unknown cause. */
if (retflash != 0) {
- LOG_ERROR("Flash not happy: status(0x%x)", retflash);
+ LOG_ERROR("Flash not happy: status(0x%" PRIx32 ")", retflash);
return ERROR_FLASH_OPERATION_FAILED;
}
return ERROR_OK;
return ERROR_TARGET_NOT_HALTED;
}
- if (ambiqmicro_info->probed == 0) {
+ if (!ambiqmicro_info->probed) {
LOG_ERROR("Target not probed");
return ERROR_FLASH_BANK_NOT_PROBED;
}
}
-static int ambiqmicro_erase(struct flash_bank *bank, int first, int last)
+static int ambiqmicro_erase(struct flash_bank *bank, unsigned int first,
+ unsigned int last)
{
struct ambiqmicro_flash_bank *ambiqmicro_info = bank->driver_priv;
struct target *target = bank->target;
- uint32_t retval = ERROR_OK;
+ int retval;
if (bank->target->state != TARGET_HALTED) {
LOG_ERROR("Target not halted");
return ERROR_TARGET_NOT_HALTED;
}
- if (ambiqmicro_info->probed == 0) {
+ if (!ambiqmicro_info->probed) {
LOG_ERROR("Target not probed");
return ERROR_FLASH_BANK_NOT_PROBED;
}
* Check pages.
* Fix num_pages for the device.
*/
- if ((first < 0) || (last < first) || (last >= (int)ambiqmicro_info->num_pages))
+ if ((last < first) || (last >= ambiqmicro_info->num_pages))
return ERROR_FLASH_SECTOR_INVALID;
/*
* Just Mass Erase if all pages are given.
* TODO: Fix num_pages for the device
*/
- if ((first == 0) && (last == ((int)ambiqmicro_info->num_pages-1)))
+ if ((first == 0) && (last == (ambiqmicro_info->num_pages - 1)))
return ambiqmicro_mass_erase(bank);
/*
/*
* Erase the pages.
*/
- LOG_INFO("Erasing pages %d to %d on bank %d", first, last, bank->bank_number);
+ LOG_INFO("Erasing pages %u to %u on bank %u", first, last, bank->bank_number);
/*
* passed pc, addr = ROM function, handle breakpoints, not debugging.
if (retval != ERROR_OK)
return retval;
- LOG_INFO("%d pages erased!", 1+(last-first));
+ LOG_INFO("%u pages erased!", 1+(last-first));
if (first == 0) {
/*
return retval;
}
-static int ambiqmicro_protect(struct flash_bank *bank, int set, int first, int last)
+static int ambiqmicro_protect(struct flash_bank *bank, int set,
+ unsigned int first, unsigned int last)
{
/* struct ambiqmicro_flash_bank *ambiqmicro_info = bank->driver_priv;
* struct target *target = bank->target; */
break;
}
- LOG_DEBUG("address = 0x%08x", address);
+ LOG_DEBUG("address = 0x%08" PRIx32, address);
retval = ambiqmicro_exec_command(target, FLASH_PROGRAM_MAIN_FROM_SRAM, 0x1000000c);
CHECK_STATUS(retval, "error executing ambiqmicro flash write algorithm");
static int ambiqmicro_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
- uint32_t retval;
+ int retval;
/* try using a block write */
retval = ambiqmicro_write_block(bank, buffer, offset, count);
static int ambiqmicro_probe(struct flash_bank *bank)
{
struct ambiqmicro_flash_bank *ambiqmicro_info = bank->driver_priv;
- uint32_t retval;
+ int retval;
/* If this is a ambiqmicro chip, it has flash; probe() is just
* to figure out how much is present. Only do it once.
*/
- if (ambiqmicro_info->probed == 1) {
+ if (ambiqmicro_info->probed) {
LOG_INFO("Target already probed");
return ERROR_OK;
}
if (retval != ERROR_OK)
return retval;
- if (bank->sectors) {
- free(bank->sectors);
- bank->sectors = NULL;
- }
+ free(bank->sectors);
/* provide this for the benefit of the NOR flash framework */
bank->size = ambiqmicro_info->pagesize * ambiqmicro_info->num_pages;
bank->num_sectors = ambiqmicro_info->num_pages;
bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors);
- for (int i = 0; i < bank->num_sectors; i++) {
+ for (unsigned int i = 0; i < bank->num_sectors; i++) {
bank->sectors[i].offset = i * ambiqmicro_info->pagesize;
bank->sectors[i].size = ambiqmicro_info->pagesize;
bank->sectors[i].is_erased = -1;
/*
* Part has been probed.
*/
- ambiqmicro_info->probed = 1;
+ ambiqmicro_info->probed = true;
return retval;
}
{
struct target *target = NULL;
struct ambiqmicro_flash_bank *ambiqmicro_info = NULL;
- uint32_t retval = ERROR_OK;
+ int retval;
ambiqmicro_info = bank->driver_priv;
target = bank->target;
return ERROR_TARGET_NOT_HALTED;
}
- if (ambiqmicro_info->probed == 0) {
+ if (!ambiqmicro_info->probed) {
LOG_ERROR("Target not probed");
return ERROR_FLASH_BANK_NOT_PROBED;
}
/*
* Program OTP.
*/
- LOG_INFO("Programming OTP offset 0x%08x", offset);
+ LOG_INFO("Programming OTP offset 0x%08" PRIx32, offset);
/*
* passed pc, addr = ROM function, handle breakpoints, not debugging.
COMMAND_HANDLER(ambiqmicro_handle_mass_erase_command)
{
- int i;
-
if (CMD_ARGC < 1)
return ERROR_COMMAND_SYNTAX_ERROR;
struct flash_bank *bank;
- uint32_t retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
+ int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
if (ERROR_OK != retval)
return retval;
if (ambiqmicro_mass_erase(bank) == ERROR_OK) {
/* set all sectors as erased */
- for (i = 0; i < bank->num_sectors; i++)
+ for (unsigned int i = 0; i < bank->num_sectors; i++)
bank->sectors[i].is_erased = 1;
command_print(CMD, "ambiqmicro mass erase complete");
{
struct flash_bank *bank;
uint32_t first, last;
- uint32_t retval;
+ int retval;
if (CMD_ARGC < 3)
return ERROR_COMMAND_SYNTAX_ERROR;
{
struct flash_bank *bank;
uint32_t offset, count;
- uint32_t retval;
+ int retval;
if (CMD_ARGC < 3)
return ERROR_COMMAND_SYNTAX_ERROR;
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], offset);
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], count);
- command_print(CMD, "offset=0x%08x count=%d", offset, count);
+ command_print(CMD, "offset=0x%08" PRIx32 " count=%" PRIu32, offset, count);
CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);