flash/nor: Use proper data types in driver API
[openocd.git] / src / flash / nor / core.c
index 043ff13c8dfa69a087c213a08f265d79927a8b31..b1a36623d6151ab9f6228e1bb19c06444ed962db 100644 (file)
 
 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;

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)