psoc4 flash driver: cleaned printf PRI... formats
[openocd.git] / src / flash / nor / psoc4.c
index 5bd00f5..10db783 100644 (file)
@@ -82,7 +82,7 @@ struct psoc4_chip_details {
        uint16_t id;
        const char *type;
        const char *package;
-       uint16_t flash_size_in_kb;
+       uint32_t flash_size_in_kb;
 };
 
 /* list of PSoC 4 chips
@@ -112,12 +112,12 @@ const struct psoc4_chip_details psoc4_devices[] = {
 
 
 struct psoc4_flash_bank {
-       uint16_t row_size;
+       uint32_t row_size;
        uint32_t user_bank_size;
        int probed;
        uint32_t silicon_id;
        uint8_t chip_protection;
-       uint16_t cmd_program_row;
+       uint8_t cmd_program_row;
 };
 
 
@@ -334,8 +334,8 @@ static int psoc4_get_silicon_id(struct target *target, uint32_t *silicon_id, uin
        if (protection)
                        *protection = prot;
 
-       LOG_DEBUG("silicon id: 0x%" PRIx32 "", silicon);
-       LOG_DEBUG("protection: 0x%" PRIx8 "", prot);
+       LOG_DEBUG("silicon id: 0x%08" PRIx32 "", silicon);
+       LOG_DEBUG("protection: 0x%02" PRIx8 "", prot);
        return retval;
 }
 
@@ -516,7 +516,7 @@ static int psoc4_write(struct flash_bank *bank, const uint8_t *buffer,
        }
 
        if (offset & 0x1) {
-               LOG_ERROR("offset 0x%" PRIx32 " breaks required 2-byte alignment", offset);
+               LOG_ERROR("offset 0x%08" PRIx32 " breaks required 2-byte alignment", offset);
                return ERROR_FLASH_DST_BREAKS_ALIGNMENT;
        }
 
@@ -542,7 +542,7 @@ static int psoc4_write(struct flash_bank *bank, const uint8_t *buffer,
                        memset(row_buffer + chunk_size, 0, psoc4_info->row_size - chunk_size);
                }
                memcpy(row_buffer + row_offset, buffer, chunk_size);
-               LOG_DEBUG("offset / row: 0x%" PRIx32 " / %d  size %d",
+               LOG_DEBUG("offset / row: 0x%08" PRIx32 " / %" PRIu32 ", size %" PRIu32 "",
                                offset, row_offset, chunk_size);
 
                /* Call "Load Latch" system ROM API */
@@ -581,12 +581,11 @@ static int psoc4_probe(struct flash_bank *bank)
 {
        struct psoc4_flash_bank *psoc4_info = bank->driver_priv;
        struct target *target = bank->target;
-       int i;
-       uint16_t flash_size_in_kb = 0;
-       uint16_t max_flash_size_in_kb;
+       uint32_t flash_size_in_kb = 0;
+       uint32_t max_flash_size_in_kb;
        uint32_t cpu_id;
        uint32_t silicon_id;
-       int row_size;
+       uint32_t row_size;
        uint32_t base_address = 0x00000000;
        uint8_t protection;
 
@@ -622,10 +621,11 @@ static int psoc4_probe(struct flash_bank *bank)
        if (retval == ERROR_OK) {
                row_size = 128 * ((spcif_geometry >> 22) & 3);
                flash_size_in_kb = (spcif_geometry & 0xffff) * 256 / 1024;
-               LOG_INFO("SPCIF geometry: %d kb flash, row %d bytes.", flash_size_in_kb, row_size);
+               LOG_INFO("SPCIF geometry: %" PRIu32 " kb flash, row %" PRIu32 " bytes.",
+                        flash_size_in_kb, row_size);
        }
 
-       /* ST-Link v2 has some problem reading PSOC4_SPCIF_GEOMETRY
+       /* Early revisions of ST-Link v2 have some problem reading PSOC4_SPCIF_GEOMETRY
                and an error is reported late. Dummy read gets this error. */
        uint32_t dummy;
        target_read_u32(target, PSOC4_CPUSS_SYSREQ, &dummy);
@@ -651,7 +651,7 @@ static int psoc4_probe(struct flash_bank *bank)
        /* failed reading flash size or flash size invalid (early silicon),
         * default to max target family */
        if (retval != ERROR_OK || flash_size_in_kb == 0xffff || flash_size_in_kb == 0) {
-               LOG_WARNING("PSoC 4 flash size failed, probe inaccurate - assuming %dk flash",
+               LOG_WARNING("PSoC 4 flash size failed, probe inaccurate - assuming %" PRIu32 " k flash",
                        max_flash_size_in_kb);
                flash_size_in_kb = max_flash_size_in_kb;
        }
@@ -663,13 +663,13 @@ static int psoc4_probe(struct flash_bank *bank)
                flash_size_in_kb = psoc4_info->user_bank_size / 1024;
        }
 
-       LOG_INFO("flash size = %d kbytes", flash_size_in_kb);
+       LOG_INFO("flash size = %" PRIu32 " kbytes", flash_size_in_kb);
 
        /* did we assign flash size? */
        assert(flash_size_in_kb != 0xffff);
 
        /* calculate numbers of pages */
-       int num_rows = flash_size_in_kb * 1024 / row_size;
+       uint32_t num_rows = flash_size_in_kb * 1024 / row_size;
 
        /* check that calculation result makes sense */
        assert(num_rows > 0);
@@ -680,10 +680,11 @@ static int psoc4_probe(struct flash_bank *bank)
        }
 
        bank->base = base_address;
-       bank->size = (num_rows * row_size);
+       bank->size = num_rows * row_size;
        bank->num_sectors = num_rows;
        bank->sectors = malloc(sizeof(struct flash_sector) * num_rows);
 
+       uint32_t i;
        for (i = 0; i < num_rows; i++) {
                bank->sectors[i].offset = i * row_size;
                bank->sectors[i].size = row_size;
@@ -691,7 +692,7 @@ static int psoc4_probe(struct flash_bank *bank)
                bank->sectors[i].is_protected = 1;
        }
 
-       LOG_INFO("flash bank set %d rows", num_rows);
+       LOG_INFO("flash bank set %" PRIu32 " rows", num_rows);
        psoc4_info->probed = 1;
 
        return ERROR_OK;
@@ -716,10 +717,11 @@ static int get_psoc4_info(struct flash_bank *bank, char *buf, int buf_size)
 
        const struct psoc4_chip_details *details = psoc4_details_by_id(psoc4_info->silicon_id);
 
-       if (details)
-               printed = snprintf(buf, buf_size, "PSoC 4 %s rev 0x%04" PRIx16 " package %s",
-                               details->type, psoc4_info->silicon_id & 0xffff, details->package);
-       else
+       if (details) {
+               uint32_t chip_revision = psoc4_info->silicon_id & 0xffff;
+               printed = snprintf(buf, buf_size, "PSoC 4 %s rev 0x%04" PRIx32 " package %s",
+                               details->type, chip_revision, details->package);
+       } else
                printed = snprintf(buf, buf_size, "PSoC 4 silicon id 0x%08" PRIx32 "",
                                psoc4_info->silicon_id);
 
@@ -727,7 +729,8 @@ static int get_psoc4_info(struct flash_bank *bank, char *buf, int buf_size)
        buf_size -= printed;
 
        const char *prot_txt = psoc4_decode_chip_protection(psoc4_info->chip_protection);
-       snprintf(buf, buf_size, " flash %d kb %s", bank->size / 1024, prot_txt);
+       uint32_t size_in_kb = bank->size / 1024;
+       snprintf(buf, buf_size, " flash %" PRIu32 " kb %s", size_in_kb, prot_txt);
        return ERROR_OK;
 }