aboutsummaryrefslogtreecommitdiff
path: root/src/flash/nor/lpc2900.c
diff options
context:
space:
mode:
authorMarc Schink <dev@zapb.de>2020-06-07 17:00:13 +0200
committerTomas Vanek <vanekt@fbl.cz>2020-07-07 05:23:54 +0100
commitef14384b681af4f731f768bb866457832af6925f (patch)
treea8cb953d765484d4cd627eaa7ea71d9be6699866 /src/flash/nor/lpc2900.c
parenta2e6982a1816a0229bd5644156f3025a0e8cb6ce (diff)
downloadriscv-openocd-ef14384b681af4f731f768bb866457832af6925f.zip
riscv-openocd-ef14384b681af4f731f768bb866457832af6925f.tar.gz
riscv-openocd-ef14384b681af4f731f768bb866457832af6925f.tar.bz2
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>
Diffstat (limited to 'src/flash/nor/lpc2900.c')
-rw-r--r--src/flash/nor/lpc2900.c63
1 files changed, 31 insertions, 32 deletions
diff --git a/src/flash/nor/lpc2900.c b/src/flash/nor/lpc2900.c
index 5412c93..af8bba0 100644
--- a/src/flash/nor/lpc2900.c
+++ b/src/flash/nor/lpc2900.c
@@ -283,9 +283,9 @@ static uint32_t lpc2900_read_security_status(struct flash_bank *bank)
* Anything else is undefined (is_protected = -1). This is treated as
* a protected sector!
*/
- int sector;
- int index_t;
- for (sector = 0; sector < bank->num_sectors; sector++) {
+ for (unsigned int sector = 0; sector < bank->num_sectors; sector++) {
+ unsigned int index_t;
+
/* Convert logical sector number to physical sector number */
if (sector <= 4)
index_t = sector + 11;
@@ -356,14 +356,13 @@ static uint32_t lpc2900_run_bist128(struct flash_bank *bank,
* @param bank Pointer to the flash bank descriptor
* @param offset Offset address relative to bank start
*/
-static uint32_t lpc2900_address2sector(struct flash_bank *bank,
+static unsigned int lpc2900_address2sector(struct flash_bank *bank,
uint32_t offset)
{
uint32_t address = bank->base + offset;
/* Run through all sectors of this bank */
- int sector;
- for (sector = 0; sector < bank->num_sectors; sector++) {
+ for (unsigned int sector = 0; sector < bank->num_sectors; sector++) {
/* Return immediately if address is within the current sector */
if (address < (bank->sectors[sector].offset + bank->sectors[sector].size))
return sector;
@@ -728,9 +727,9 @@ COMMAND_HANDLER(lpc2900_handle_secure_sector_command)
lpc2900_info->risky = 0;
/* Read sector range, and do a sanity check. */
- int first, last;
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], first);
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[2], last);
+ unsigned int first, last;
+ COMMAND_PARSE_NUMBER(uint, CMD_ARGV[1], first);
+ COMMAND_PARSE_NUMBER(uint, CMD_ARGV[2], last);
if ((first >= bank->num_sectors) ||
(last >= bank->num_sectors) ||
(first > last)) {
@@ -739,12 +738,11 @@ COMMAND_HANDLER(lpc2900_handle_secure_sector_command)
}
uint8_t page[FLASH_PAGE_SIZE];
- int sector;
/* Sectors in page 6 */
if ((first <= 4) || (last >= 8)) {
memset(&page, 0xff, FLASH_PAGE_SIZE);
- for (sector = first; sector <= last; sector++) {
+ for (unsigned int sector = first; sector <= last; sector++) {
if (sector <= 4)
memset(&page[0xB0 + 16*sector], 0, 16);
else if (sector >= 8)
@@ -761,7 +759,7 @@ COMMAND_HANDLER(lpc2900_handle_secure_sector_command)
/* Sectors in page 7 */
if ((first <= 7) && (last >= 5)) {
memset(&page, 0xff, FLASH_PAGE_SIZE);
- for (sector = first; sector <= last; sector++) {
+ for (unsigned int sector = first; sector <= last; sector++) {
if ((sector >= 5) && (sector <= 7))
memset(&page[0x00 + 16*(sector - 5)], 0, 16);
}
@@ -945,11 +943,12 @@ FLASH_BANK_COMMAND_HANDLER(lpc2900_flash_bank_command)
* @param first First sector to be erased
* @param last Last sector (including) to be erased
*/
-static int lpc2900_erase(struct flash_bank *bank, int first, int last)
+static int lpc2900_erase(struct flash_bank *bank, unsigned int first,
+ unsigned int last)
{
uint32_t status;
- int sector;
- int last_unsecured_sector;
+ unsigned int last_unsecured_sector;
+ bool has_unsecured_sector;
struct target *target = bank->target;
struct lpc2900_flash_bank *lpc2900_info = bank->driver_priv;
@@ -959,7 +958,7 @@ static int lpc2900_erase(struct flash_bank *bank, int first, int last)
return status;
/* Sanity check on sector range */
- if ((first < 0) || (last < first) || (last >= bank->num_sectors)) {
+ if ((last < first) || (last >= bank->num_sectors)) {
LOG_INFO("Bad sector range");
return ERROR_FLASH_SECTOR_INVALID;
}
@@ -974,16 +973,19 @@ static int lpc2900_erase(struct flash_bank *bank, int first, int last)
* a special way.
*/
last_unsecured_sector = -1;
- for (sector = first; sector <= last; sector++) {
- if (!bank->sectors[sector].is_protected)
+ has_unsecured_sector = false;
+ for (unsigned int sector = first; sector <= last; sector++) {
+ if (!bank->sectors[sector].is_protected) {
last_unsecured_sector = sector;
+ has_unsecured_sector = true;
+ }
}
/* Exit now, in case of the rare constellation where all sectors in range
* are secured. This is regarded a success, since erasing/programming of
* secured sectors shall be handled transparently.
*/
- if (last_unsecured_sector == -1)
+ if (!has_unsecured_sector)
return ERROR_OK;
/* Enable flash block and set the correct CRA clock of 66 kHz */
@@ -998,7 +1000,7 @@ static int lpc2900_erase(struct flash_bank *bank, int first, int last)
FLASH_ERASE_TIME));
/* Sectors are marked for erasure, then erased all together */
- for (sector = first; sector <= last_unsecured_sector; sector++) {
+ for (unsigned int sector = first; sector <= last_unsecured_sector; sector++) {
/* Only mark sectors that aren't secured. Any attempt to erase a group
* of sectors will fail if any single one of them is secured!
*/
@@ -1059,7 +1061,6 @@ static int lpc2900_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t num_bytes;
struct target *target = bank->target;
struct lpc2900_flash_bank *lpc2900_info = bank->driver_priv;
- int sector;
int retval;
static const uint32_t write_target_code[] = {
@@ -1111,7 +1112,7 @@ static int lpc2900_write(struct flash_bank *bank, const uint8_t *buffer,
lpc2900_read_security_status(bank);
/* Unprotect all involved sectors */
- for (sector = 0; sector < bank->num_sectors; sector++) {
+ for (unsigned int sector = 0; sector < bank->num_sectors; sector++) {
/* Start address in or before this sector?
* End address in or behind this sector? */
if (((bank->base + offset) <
@@ -1179,7 +1180,7 @@ static int lpc2900_write(struct flash_bank *bank, const uint8_t *buffer,
while (count != 0) {
uint32_t this_npages;
const uint8_t *this_buffer;
- int start_sector = lpc2900_address2sector(bank, offset);
+ unsigned int start_sector = lpc2900_address2sector(bank, offset);
/* First page / last page / rest */
if (offset % FLASH_PAGE_SIZE) {
@@ -1208,7 +1209,7 @@ static int lpc2900_write(struct flash_bank *bank, const uint8_t *buffer,
this_buffer = buffer;
/* Make sure we stop at the next secured sector */
- sector = start_sector + 1;
+ unsigned int sector = start_sector + 1;
while (sector < bank->num_sectors) {
/* Secured? */
if (bank->sectors[sector].is_protected) {
@@ -1230,7 +1231,7 @@ static int lpc2900_write(struct flash_bank *bank, const uint8_t *buffer,
/* Skip the current sector if it is secured */
if (bank->sectors[start_sector].is_protected) {
- LOG_DEBUG("Skip secured sector %d",
+ LOG_DEBUG("Skip secured sector %u",
start_sector);
/* Stop if this is the last sector */
@@ -1371,7 +1372,6 @@ static int lpc2900_probe(struct flash_bank *bank)
{
struct lpc2900_flash_bank *lpc2900_info = bank->driver_priv;
struct target *target = bank->target;
- int i = 0;
uint32_t offset;
@@ -1467,8 +1467,8 @@ static int lpc2900_probe(struct flash_bank *bank)
}
/* Show detected device */
- LOG_INFO("Flash bank %d: Device %s, %" PRIu32
- " KiB in %d sectors",
+ LOG_INFO("Flash bank %u: Device %s, %" PRIu32
+ " KiB in %u sectors",
bank->bank_number,
lpc2900_info->target_name, bank->size / KiB,
bank->num_sectors);
@@ -1487,7 +1487,7 @@ static int lpc2900_probe(struct flash_bank *bank)
bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors);
offset = 0;
- for (i = 0; i < bank->num_sectors; i++) {
+ for (unsigned int i = 0; i < bank->num_sectors; i++) {
bank->sectors[i].offset = offset;
bank->sectors[i].is_erased = -1;
bank->sectors[i].is_protected = -1;
@@ -1501,7 +1501,7 @@ static int lpc2900_probe(struct flash_bank *bank)
* that has more than 19 sectors. Politely ask for a fix then.
*/
bank->sectors[i].size = 0;
- LOG_ERROR("Never heard about sector %d", i);
+ LOG_ERROR("Never heard about sector %u", i);
}
offset += bank->sectors[i].size;
@@ -1538,8 +1538,7 @@ static int lpc2900_erase_check(struct flash_bank *bank)
/* Use the BIST (Built-In Selft Test) to generate a signature of each flash
* sector. Compare against the expected signature of an empty sector.
*/
- int sector;
- for (sector = 0; sector < bank->num_sectors; sector++) {
+ for (unsigned int sector = 0; sector < bank->num_sectors; sector++) {
uint32_t signature[4];
status = lpc2900_run_bist128(bank, bank->sectors[sector].offset,
bank->sectors[sector].offset + (bank->sectors[sector].size - 1), signature);