if (str9x_info->variant)
str9x_info->sector_bits[num_sectors++] = (1 << i);
else
- str9x_info->sector_bits[num_sectors++] = (1 << (i+8));
+ str9x_info->sector_bits[num_sectors++] = (1 << (i + 8));
}
return ERROR_OK;
if (str9x_info->bank1)
{
adr = bank1start + 0x18;
- if ((retval=target_write_u16(target, adr, 0x90)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0x90)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_read_u16(target, adr, &hstatus)) != ERROR_OK)
+ if ((retval = target_read_u16(target, adr, &hstatus)) != ERROR_OK)
{
return retval;
}
else
{
adr = bank1start + 0x14;
- if ((retval=target_write_u16(target, adr, 0x90)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0x90)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_read_u32(target, adr, &status)) != ERROR_OK)
+ if ((retval = target_read_u32(target, adr, &status)) != ERROR_OK)
{
return retval;
}
else
{
adr = bank1start + 0x10;
- if ((retval=target_write_u16(target, adr, 0x90)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0x90)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_read_u16(target, adr, &hstatus)) != ERROR_OK)
+ if ((retval = target_read_u16(target, adr, &hstatus)) != ERROR_OK)
{
return retval;
}
}
/* read array command */
- if ((retval=target_write_u16(target, adr, 0xFF)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0xFF)) != ERROR_OK)
{
return retval;
}
adr = bank->base + bank->sectors[i].offset;
/* erase sectors */
- if ((retval=target_write_u16(target, adr, erase_cmd)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, erase_cmd)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_write_u16(target, adr, 0xD0)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0xD0)) != ERROR_OK)
{
return retval;
}
/* get status */
- if ((retval=target_write_u16(target, adr, 0x70)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0x70)) != ERROR_OK)
{
return retval;
}
int timeout;
- for (timeout=0; timeout<1000; timeout++) {
- if ((retval=target_read_u8(target, adr, &status)) != ERROR_OK)
+ for (timeout = 0; timeout < 1000; timeout++) {
+ if ((retval = target_read_u8(target, adr, &status)) != ERROR_OK)
{
return retval;
}
- if ( status & 0x80 )
+ if (status & 0x80)
break;
alive_sleep(1);
}
- if (timeout==1000)
+ if (timeout == 1000)
{
LOG_ERROR("erase timed out");
return ERROR_FAIL;
}
/* clear status, also clear read array */
- if ((retval=target_write_u16(target, adr, 0x50)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0x50)) != ERROR_OK)
{
return retval;
}
/* read array command */
- if ((retval=target_write_u16(target, adr, 0xFF)) != ERROR_OK)
+ if ((retval = target_write_u16(target, adr, 0xFF)) != ERROR_OK)
{
return retval;
}
- if ( status & 0x22 )
+ if (status & 0x22)
{
LOG_ERROR("error erasing flash bank, status: 0x%x", status);
return ERROR_FLASH_OPERATION_FAILED;
adr = bank->base + bank->sectors[i].offset;
target_write_u16(target, adr, 0x60);
- if ( set )
+ if (set)
target_write_u16(target, adr, 0x01);
else
target_write_u16(target, adr, 0xD0);
target_write_u16(target, bank_adr, 0x70);
int timeout;
- for (timeout=0; timeout<1000; timeout++)
+ for (timeout = 0; timeout < 1000; timeout++)
{
target_read_u8(target, bank_adr, &status);
- if ( status & 0x80 )
+ if (status & 0x80)
break;
alive_sleep(1);
}
- if (timeout==1000)
+ if (timeout == 1000)
{
LOG_ERROR("write timed out");
return ERROR_FAIL;
target_write_u16(target, bank_adr, 0x70);
int timeout;
- for (timeout=0; timeout<1000; timeout++)
+ for (timeout = 0; timeout < 1000; timeout++)
{
target_read_u8(target, bank_adr, &status);
- if ( status & 0x80 )
+ if (status & 0x80)
break;
alive_sleep(1);
}
- if (timeout==1000)
+ if (timeout == 1000)
{
LOG_ERROR("write timed out");
return ERROR_FAIL;
static int str9x_info(struct flash_bank_s *bank, char *buf, int buf_size)
{
- snprintf(buf, buf_size, "str9x flash driver info" );
+ snprintf(buf, buf_size, "str9x flash driver info");
return ERROR_OK;
}
char *cmd, char **args, int argc)
{
str9x_flash_bank_t *str9x_info;
- flash_bank_t *bank;
target_t *target = NULL;
if (argc < 5)
return ERROR_COMMAND_SYNTAX_ERROR;
}
- bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
- if (!bank)
- {
- command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
- return ERROR_OK;
- }
+ flash_bank_t *bank;
+ int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ if (ERROR_OK != retval)
+ return retval;
+
+ uint32_t bbsr, nbbsr, bbadr, nbbadr;
+ COMMAND_PARSE_NUMBER(u32, args[1], bbsr);
+ COMMAND_PARSE_NUMBER(u32, args[2], nbbsr);
+ COMMAND_PARSE_NUMBER(u32, args[3], bbadr);
+ COMMAND_PARSE_NUMBER(u32, args[4], nbbadr);
str9x_info = bank->driver_priv;
}
/* config flash controller */
- target_write_u32(target, FLASH_BBSR, strtoul(args[1], NULL, 0));
- target_write_u32(target, FLASH_NBBSR, strtoul(args[2], NULL, 0));
- target_write_u32(target, FLASH_BBADR, (strtoul(args[3], NULL, 0) >> 2));
- target_write_u32(target, FLASH_NBBADR, (strtoul(args[4], NULL, 0) >> 2));
+ target_write_u32(target, FLASH_BBSR, bbsr);
+ target_write_u32(target, FLASH_NBBSR, nbbsr);
+ target_write_u32(target, FLASH_BBADR, bbadr >> 2);
+ target_write_u32(target, FLASH_NBBADR, nbbadr >> 2);
/* set bit 18 instruction TCM order as per flash programming manual */
arm966e_write_cp15(target, 62, 0x40000);