flash/nor: Use proper data types in driver API

Use 'unsigned int' and 'bool' instead of 'int' where appropriate.
While at it, fix some coding style issues.

No new Clang analyzer warnings.

Change-Id: I700802c9ee81c3c7ae73108f0f8f06b15a4345f8
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/4929
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
Marc Schink
2020-06-07 17:00:13 +02:00
committed by Tomas Vanek
parent a2e6982a18
commit ef14384b68
70 changed files with 773 additions and 755 deletions

View File

@@ -37,21 +37,23 @@
static struct flash_bank *flash_banks;
int flash_driver_erase(struct flash_bank *bank, int first, int last)
int flash_driver_erase(struct flash_bank *bank, unsigned int first,
unsigned int last)
{
int retval;
retval = bank->driver->erase(bank, first, last);
if (retval != ERROR_OK)
LOG_ERROR("failed erasing sectors %d to %d", first, last);
LOG_ERROR("failed erasing sectors %u to %u", first, last);
return retval;
}
int flash_driver_protect(struct flash_bank *bank, int set, int first, int last)
int flash_driver_protect(struct flash_bank *bank, int set, unsigned int first,
unsigned int last)
{
int retval;
int num_blocks;
unsigned int num_blocks;
if (bank->num_prot_blocks)
num_blocks = bank->num_prot_blocks;
@@ -60,7 +62,7 @@ int flash_driver_protect(struct flash_bank *bank, int set, int first, int last)
/* callers may not supply illegal parameters ... */
if (first < 0 || first > last || last >= num_blocks) {
if (first > last || last >= num_blocks) {
LOG_ERROR("illegal protection block range");
return ERROR_FAIL;
}
@@ -86,7 +88,7 @@ int flash_driver_protect(struct flash_bank *bank, int set, int first, int last)
*/
retval = bank->driver->protect(bank, set, first, last);
if (retval != ERROR_OK)
LOG_ERROR("failed setting protection for blocks %d to %d", first, last);
LOG_ERROR("failed setting protection for blocks %u to %u", first, last);
return retval;
}
@@ -157,10 +159,10 @@ struct flash_bank *flash_bank_list(void)
return flash_banks;
}
struct flash_bank *get_flash_bank_by_num_noprobe(int num)
struct flash_bank *get_flash_bank_by_num_noprobe(unsigned int num)
{
struct flash_bank *p;
int i = 0;
unsigned int i = 0;
for (p = flash_banks; p; p = p->next) {
if (i++ == num)
@@ -170,10 +172,10 @@ struct flash_bank *get_flash_bank_by_num_noprobe(int num)
return NULL;
}
int flash_get_bank_count(void)
unsigned int flash_get_bank_count(void)
{
struct flash_bank *p;
int i = 0;
unsigned int i = 0;
for (p = flash_banks; p; p = p->next)
i++;
return i;
@@ -249,7 +251,7 @@ int get_flash_bank_by_name(const char *name, struct flash_bank **bank_result)
return ERROR_OK;
}
int get_flash_bank_by_num(int num, struct flash_bank **bank)
int get_flash_bank_by_num(unsigned int num, struct flash_bank **bank)
{
struct flash_bank *p = get_flash_bank_by_num_noprobe(num);
int retval;
@@ -306,7 +308,6 @@ static int default_flash_mem_blank_check(struct flash_bank *bank)
{
struct target *target = bank->target;
const int buffer_size = 1024;
int i;
uint32_t nBytes;
int retval = ERROR_OK;
@@ -317,7 +318,7 @@ static int default_flash_mem_blank_check(struct flash_bank *bank)
uint8_t *buffer = malloc(buffer_size);
for (i = 0; i < bank->num_sectors; i++) {
for (unsigned int i = 0; i < bank->num_sectors; i++) {
uint32_t j;
bank->sectors[i].is_erased = 1;
@@ -353,7 +354,6 @@ done:
int default_flash_blank_check(struct flash_bank *bank)
{
struct target *target = bank->target;
int i;
int retval;
if (bank->target->state != TARGET_HALTED) {
@@ -366,14 +366,14 @@ int default_flash_blank_check(struct flash_bank *bank)
if (block_array == NULL)
return default_flash_mem_blank_check(bank);
for (i = 0; i < bank->num_sectors; i++) {
for (unsigned int i = 0; i < bank->num_sectors; i++) {
block_array[i].address = bank->base + bank->sectors[i].offset;
block_array[i].size = bank->sectors[i].size;
block_array[i].result = UINT32_MAX; /* erase state unknown */
}
bool fast_check = true;
for (i = 0; i < bank->num_sectors; ) {
for (unsigned int i = 0; i < bank->num_sectors; ) {
retval = target_blank_check_memory(target,
block_array + i, bank->num_sectors - i,
bank->erased_value);
@@ -388,7 +388,7 @@ int default_flash_blank_check(struct flash_bank *bank)
}
if (fast_check) {
for (i = 0; i < bank->num_sectors; i++)
for (unsigned int i = 0; i < bank->num_sectors; i++)
bank->sectors[i].is_erased = block_array[i].result;
retval = ERROR_OK;
} else {
@@ -418,7 +418,8 @@ int default_flash_blank_check(struct flash_bank *bank)
static int flash_iterate_address_range_inner(struct target *target,
char *pad_reason, target_addr_t addr, uint32_t length,
bool iterate_protect_blocks,
int (*callback)(struct flash_bank *bank, int first, int last))
int (*callback)(struct flash_bank *bank, unsigned int first,
unsigned int last))
{
struct flash_bank *c;
struct flash_sector *block_array;
@@ -547,7 +548,8 @@ static int flash_iterate_address_range_inner(struct target *target,
static int flash_iterate_address_range(struct target *target,
char *pad_reason, target_addr_t addr, uint32_t length,
bool iterate_protect_blocks,
int (*callback)(struct flash_bank *bank, int first, int last))
int (*callback)(struct flash_bank *bank, unsigned int first,
unsigned int last))
{
struct flash_bank *c;
int retval = ERROR_OK;
@@ -585,7 +587,8 @@ int flash_erase_address_range(struct target *target,
addr, length, false, &flash_driver_erase);
}
static int flash_driver_unprotect(struct flash_bank *bank, int first, int last)
static int flash_driver_unprotect(struct flash_bank *bank, unsigned int first,
unsigned int last)
{
return flash_driver_protect(bank, 0, first, last);
}
@@ -627,8 +630,7 @@ target_addr_t flash_write_align_start(struct flash_bank *bank, target_addr_t add
if (bank->write_start_alignment == FLASH_WRITE_ALIGN_SECTOR) {
uint32_t offset = addr - bank->base;
uint32_t aligned = 0;
int sect;
for (sect = 0; sect < bank->num_sectors; sect++) {
for (unsigned int sect = 0; sect < bank->num_sectors; sect++) {
if (bank->sectors[sect].offset > offset)
break;
@@ -652,8 +654,7 @@ target_addr_t flash_write_align_end(struct flash_bank *bank, target_addr_t addr)
if (bank->write_end_alignment == FLASH_WRITE_ALIGN_SECTOR) {
uint32_t offset = addr - bank->base;
uint32_t aligned = 0;
int sect;
for (sect = 0; sect < bank->num_sectors; sect++) {
for (unsigned int sect = 0; sect < bank->num_sectors; sect++) {
aligned = bank->sectors[sect].offset + bank->sectors[sect].size - 1;
if (aligned >= offset)
break;
@@ -676,7 +677,7 @@ static bool flash_write_check_gap(struct flash_bank *bank,
return false;
if (bank->minimal_write_gap == FLASH_WRITE_GAP_SECTOR) {
int sect;
unsigned int sect;
uint32_t offset1 = addr1 - bank->base;
/* find the sector following the one containing addr1 */
for (sect = 0; sect < bank->num_sectors; sect++) {
@@ -697,7 +698,7 @@ static bool flash_write_check_gap(struct flash_bank *bank,
int flash_write_unlock(struct target *target, struct image *image,
uint32_t *written, int erase, bool unlock)
uint32_t *written, bool erase, bool unlock)
{
int retval = ERROR_OK;
@@ -847,12 +848,11 @@ int flash_write_unlock(struct target *target, struct image *image,
/* If we're applying any sector automagic, then pad this
* (maybe-combined) segment to the end of its last sector.
*/
int sector;
uint32_t offset_start = run_address - c->base;
uint32_t offset_end = offset_start + run_size;
uint32_t end = offset_end, delta;
for (sector = 0; sector < c->num_sectors; sector++) {
for (unsigned int sector = 0; sector < c->num_sectors; sector++) {
end = c->sectors[sector].offset
+ c->sectors[sector].size;
if (offset_end <= end)
@@ -955,20 +955,19 @@ done:
}
int flash_write(struct target *target, struct image *image,
uint32_t *written, int erase)
uint32_t *written, bool erase)
{
return flash_write_unlock(target, image, written, erase, false);
}
struct flash_sector *alloc_block_array(uint32_t offset, uint32_t size, int num_blocks)
struct flash_sector *alloc_block_array(uint32_t offset, uint32_t size,
unsigned int num_blocks)
{
int i;
struct flash_sector *array = calloc(num_blocks, sizeof(struct flash_sector));
if (array == NULL)
return NULL;
for (i = 0; i < num_blocks; i++) {
for (unsigned int i = 0; i < num_blocks; i++) {
array[i].offset = offset;
array[i].size = size;
array[i].is_erased = -1;