X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fat91sam3.c;h=c8c4afe1fb6650b1195f7a80da2bd1477d4fb9e0;hb=e2315ccffd31757785130c3bf549a87d9be1689a;hp=69b8e3de887460e8e804e032b5f15111d33e95f8;hpb=d0e763ac7ef6aa17b17bd00ccdfbccfb4eacda69;p=openocd.git diff --git a/src/flash/nor/at91sam3.c b/src/flash/nor/at91sam3.c index 69b8e3de88..c8c4afe1fb 100644 --- a/src/flash/nor/at91sam3.c +++ b/src/flash/nor/at91sam3.c @@ -109,7 +109,7 @@ #define offset_EFC_FSR 8 #define offset_EFC_FRR 12 -extern struct flash_driver at91sam3_flash; +extern const struct flash_driver at91sam3_flash; static float _tomhz(uint32_t freq_hz) { @@ -187,7 +187,7 @@ struct sam3_cfg { */ struct sam3_bank_private { - int probed; + bool probed; /* DANGER: THERE ARE DRAGONS HERE.. */ /* NOTE: If you add more 'ghost' pointers */ /* be aware that you must *manually* update */ @@ -233,7 +233,7 @@ struct sam3_chip_details { struct sam3_chip { struct sam3_chip *next; - int probed; + bool probed; /* this is "initialized" from the global const structure */ struct sam3_chip_details details; @@ -249,14 +249,14 @@ struct sam3_reg_list { static struct sam3_chip *all_sam3_chips; -static struct sam3_chip *get_current_sam3(struct command_context *cmd_ctx) +static struct sam3_chip *get_current_sam3(struct command_invocation *cmd) { struct target *t; static struct sam3_chip *p; - t = get_current_target(cmd_ctx); + t = get_current_target(cmd->ctx); if (!t) { - command_print(cmd_ctx, "No current target?"); + command_print(cmd, "No current target?"); return NULL; } @@ -264,7 +264,7 @@ static struct sam3_chip *get_current_sam3(struct command_context *cmd_ctx) if (!p) { /* this should not happen */ /* the command is not registered until the chip is created? */ - command_print(cmd_ctx, "No SAM3 chips exist?"); + command_print(cmd, "No SAM3 chips exist?"); return NULL; } @@ -273,7 +273,7 @@ static struct sam3_chip *get_current_sam3(struct command_context *cmd_ctx) return p; p = p->next; } - command_print(cmd_ctx, "Cannot find SAM3 chip?"); + command_print(cmd, "Cannot find SAM3 chip?"); return NULL; } @@ -306,7 +306,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -322,7 +322,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -357,7 +357,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -373,7 +373,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -399,7 +399,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -416,7 +416,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -448,7 +448,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { { /* .bank[0] = { */ - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -463,7 +463,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -498,7 +498,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -514,7 +514,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -540,7 +540,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -556,7 +556,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -578,7 +578,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -594,7 +594,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -611,7 +611,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -627,7 +627,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -643,7 +643,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -659,7 +659,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -675,7 +675,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -691,7 +691,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -707,7 +707,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -723,7 +723,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -739,7 +739,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -754,7 +754,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -779,7 +779,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -794,7 +794,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -819,7 +819,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -834,7 +834,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -859,7 +859,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -875,7 +875,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -891,7 +891,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -907,7 +907,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -923,7 +923,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -939,7 +939,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -955,7 +955,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -971,7 +971,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -987,7 +987,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1003,7 +1003,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -1019,7 +1019,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1035,7 +1035,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -1051,7 +1051,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1067,7 +1067,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, @@ -1101,7 +1101,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1118,7 +1118,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1150,7 +1150,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1167,7 +1167,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1199,7 +1199,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1216,7 +1216,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1248,7 +1248,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1265,7 +1265,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1297,7 +1297,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1314,7 +1314,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1346,7 +1346,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1363,7 +1363,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1395,7 +1395,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1412,7 +1412,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1444,7 +1444,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1461,7 +1461,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1493,7 +1493,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1510,7 +1510,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1527,7 +1527,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1544,7 +1544,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1561,7 +1561,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1578,7 +1578,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1595,7 +1595,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1612,7 +1612,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1629,7 +1629,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[0] = { */ { { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1646,7 +1646,7 @@ static const struct sam3_chip_details all_sam3_details[] = { /* .bank[1] = { */ { .present = 0, - .probed = 0, + .probed = false, .bank_number = 1, }, }, @@ -1680,7 +1680,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1695,7 +1695,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -1721,7 +1721,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1736,7 +1736,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -1780,7 +1780,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1795,7 +1795,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -1822,7 +1822,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1837,7 +1837,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -1863,7 +1863,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1878,7 +1878,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -1904,7 +1904,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1919,11 +1919,11 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, - .base_address = FLASH_BANK1_BASE_512K_AX , + .base_address = FLASH_BANK1_BASE_512K_AX, .controller_address = 0x400e0c00, .flash_wait_states = 6, /* workaround silicon bug */ .present = 1, @@ -1945,7 +1945,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -1960,7 +1960,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -1986,7 +1986,7 @@ static const struct sam3_chip_details all_sam3_details[] = { { /* .bank[0] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 0, @@ -2001,7 +2001,7 @@ static const struct sam3_chip_details all_sam3_details[] = { }, /* .bank[1] = { */ { - .probed = 0, + .probed = false, .pChip = NULL, .pBank = NULL, .bank_number = 1, @@ -2175,7 +2175,7 @@ static int EFC_PerformCommand(struct sam3_bank_private *pPrivate, int r; uint32_t v; - long long ms_now, ms_end; + int64_t ms_now, ms_end; /* default */ if (status) @@ -2991,28 +2991,6 @@ static int sam3_GetInfo(struct sam3_chip *pChip) return ERROR_OK; } -static int sam3_erase_check(struct flash_bank *bank) -{ - int x; - - LOG_DEBUG("Here"); - if (bank->target->state != TARGET_HALTED) { - LOG_ERROR("Target not halted"); - return ERROR_TARGET_NOT_HALTED; - } - if (0 == bank->num_sectors) { - LOG_ERROR("Target: not supported/not probed"); - return ERROR_FAIL; - } - - LOG_INFO("sam3 - supports auto-erase, erase_check ignored"); - for (x = 0; x < bank->num_sectors; x++) - bank->sectors[x].is_erased = 1; - - LOG_DEBUG("Done"); - return ERROR_OK; -} - static int sam3_protect_check(struct flash_bank *bank) { int r; @@ -3073,7 +3051,7 @@ FLASH_BANK_COMMAND_HANDLER(sam3_flash_bank_command) pChip->target = bank->target; /* assumption is this runs at 32khz */ pChip->cfg.slow_freq = 32768; - pChip->probed = 0; + pChip->probed = false; } switch (bank->base) { @@ -3090,7 +3068,6 @@ FLASH_BANK_COMMAND_HANDLER(sam3_flash_bank_command) ((unsigned int)(FLASH_BANK1_BASE_256K_AX)), ((unsigned int)(FLASH_BANK1_BASE_512K_AX))); return ERROR_FAIL; - break; /* at91sam3s and at91sam3n series only has bank 0*/ /* at91sam3u and at91sam3ax series has the same address for bank 0*/ @@ -3117,6 +3094,22 @@ FLASH_BANK_COMMAND_HANDLER(sam3_flash_bank_command) return ERROR_OK; } +/** + * Remove all chips from the internal list without distingushing which one + * is owned by this bank. This simplification works only for one shot + * deallocation like current flash_free_all_banks() + */ +void sam3_free_driver_priv(struct flash_bank *bank) +{ + struct sam3_chip *chip = all_sam3_chips; + while (chip) { + struct sam3_chip *next = chip->next; + free(chip); + chip = next; + } + all_sam3_chips = NULL; +} + static int sam3_GetDetails(struct sam3_bank_private *pPrivate) { const struct sam3_chip_details *pDetails; @@ -3178,12 +3171,11 @@ static int sam3_GetDetails(struct sam3_bank_private *pPrivate) static int _sam3_probe(struct flash_bank *bank, int noise) { - unsigned x; int r; struct sam3_bank_private *pPrivate; - LOG_DEBUG("Begin: Bank: %d, Noise: %d", bank->bank_number, noise); + LOG_DEBUG("Begin: Bank: %u, Noise: %d", bank->bank_number, noise); if (bank->target->state != TARGET_HALTED) { LOG_ERROR("Target not halted"); return ERROR_TARGET_NOT_HALTED; @@ -3208,7 +3200,7 @@ static int _sam3_probe(struct flash_bank *bank, int noise) return r; /* update the flash bank size */ - for (x = 0; x < SAM3_MAX_FLASH_BANKS; x++) { + for (unsigned int x = 0; x < SAM3_MAX_FLASH_BANKS; x++) { if (bank->base == pPrivate->pChip->details.bank[x].base_address) { bank->size = pPrivate->pChip->details.bank[x].size_bytes; break; @@ -3223,7 +3215,7 @@ static int _sam3_probe(struct flash_bank *bank, int noise) } bank->num_sectors = pPrivate->nsectors; - for (x = 0; ((int)(x)) < bank->num_sectors; x++) { + for (unsigned int x = 0; x < bank->num_sectors; x++) { bank->sectors[x].size = pPrivate->sector_size; bank->sectors[x].offset = x * (pPrivate->sector_size); /* mark as unknown */ @@ -3232,7 +3224,7 @@ static int _sam3_probe(struct flash_bank *bank, int noise) } } - pPrivate->probed = 1; + pPrivate->probed = true; r = sam3_protect_check(bank); if (r != ERROR_OK) @@ -3259,7 +3251,8 @@ static int sam3_auto_probe(struct flash_bank *bank) return _sam3_probe(bank, 0); } -static int sam3_erase(struct flash_bank *bank, int first, int last) +static int sam3_erase(struct flash_bank *bank, unsigned int first, + unsigned int last) { struct sam3_bank_private *pPrivate; int r; @@ -3280,7 +3273,7 @@ static int sam3_erase(struct flash_bank *bank, int first, int last) if (!(pPrivate->probed)) return ERROR_FLASH_BANK_NOT_PROBED; - if ((first == 0) && ((last + 1) == ((int)(pPrivate->nsectors)))) { + if ((first == 0) && ((last + 1) == pPrivate->nsectors)) { /* whole chip */ LOG_DEBUG("Here"); return FLASHD_EraseEntireBank(pPrivate); @@ -3289,7 +3282,8 @@ static int sam3_erase(struct flash_bank *bank, int first, int last) return ERROR_OK; } -static int sam3_protect(struct flash_bank *bank, int set, int first, int last) +static int sam3_protect(struct flash_bank *bank, int set, unsigned int first, + unsigned int last) { struct sam3_bank_private *pPrivate; int r; @@ -3305,9 +3299,9 @@ static int sam3_protect(struct flash_bank *bank, int set, int first, int last) return ERROR_FLASH_BANK_NOT_PROBED; if (set) - r = FLASHD_Lock(pPrivate, (unsigned)(first), (unsigned)(last)); + r = FLASHD_Lock(pPrivate, first, last); else - r = FLASHD_Unlock(pPrivate, (unsigned)(first), (unsigned)(last)); + r = FLASHD_Unlock(pPrivate, first, last); LOG_DEBUG("End: r=%d", r); return r; @@ -3544,7 +3538,7 @@ done: COMMAND_HANDLER(sam3_handle_info_command) { struct sam3_chip *pChip; - pChip = get_current_sam3(CMD_CTX); + pChip = get_current_sam3(CMD); if (!pChip) return ERROR_OK; @@ -3555,7 +3549,7 @@ COMMAND_HANDLER(sam3_handle_info_command) if (pChip->details.bank[0].pBank == NULL) { x = 0; need_define: - command_print(CMD_CTX, + command_print(CMD, "Please define bank %d via command: flash bank %s ... ", x, at91sam3_flash.name); @@ -3604,7 +3598,7 @@ COMMAND_HANDLER(sam3_handle_gpnvm_command) int r, who; struct sam3_chip *pChip; - pChip = get_current_sam3(CMD_CTX); + pChip = get_current_sam3(CMD); if (!pChip) return ERROR_OK; @@ -3614,7 +3608,7 @@ COMMAND_HANDLER(sam3_handle_gpnvm_command) } if (pChip->details.bank[0].pBank == NULL) { - command_print(CMD_CTX, "Bank0 must be defined first via: flash bank %s ...", + command_print(CMD, "Bank0 must be defined first via: flash bank %s ...", at91sam3_flash.name); return ERROR_FAIL; } @@ -3627,10 +3621,8 @@ COMMAND_HANDLER(sam3_handle_gpnvm_command) switch (CMD_ARGC) { default: return ERROR_COMMAND_SYNTAX_ERROR; - break; case 0: goto showall; - break; case 1: who = -1; break; @@ -3653,22 +3645,23 @@ showall: r = FLASHD_GetGPNVM(&(pChip->details.bank[0]), x, &v); if (r != ERROR_OK) break; - command_print(CMD_CTX, "sam3-gpnvm%u: %u", x, v); + command_print(CMD, "sam3-gpnvm%u: %u", x, v); } return r; } if ((who >= 0) && (((unsigned)(who)) < pChip->details.n_gpnvms)) { r = FLASHD_GetGPNVM(&(pChip->details.bank[0]), who, &v); - command_print(CMD_CTX, "sam3-gpnvm%u: %u", who, v); + if (r == ERROR_OK) + command_print(CMD, "sam3-gpnvm%u: %u", who, v); return r; } else { - command_print(CMD_CTX, "sam3-gpnvm invalid GPNVM: %u", who); + command_print(CMD, "sam3-gpnvm invalid GPNVM: %u", who); return ERROR_COMMAND_SYNTAX_ERROR; } } if (who == -1) { - command_print(CMD_CTX, "Missing GPNVM number"); + command_print(CMD, "Missing GPNVM number"); return ERROR_COMMAND_SYNTAX_ERROR; } @@ -3678,7 +3671,7 @@ showall: (0 == strcmp("clear", CMD_ARGV[0]))) /* quietly accept both */ r = FLASHD_ClrGPNVM(&(pChip->details.bank[0]), who); else { - command_print(CMD_CTX, "Unknown command: %s", CMD_ARGV[0]); + command_print(CMD, "Unknown command: %s", CMD_ARGV[0]); r = ERROR_COMMAND_SYNTAX_ERROR; } return r; @@ -3688,7 +3681,7 @@ COMMAND_HANDLER(sam3_handle_slowclk_command) { struct sam3_chip *pChip; - pChip = get_current_sam3(CMD_CTX); + pChip = get_current_sam3(CMD); if (!pChip) return ERROR_OK; @@ -3703,7 +3696,7 @@ COMMAND_HANDLER(sam3_handle_slowclk_command) COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], v); if (v > 200000) { /* absurd slow clock of 200Khz? */ - command_print(CMD_CTX, "Absurd/illegal slow clock freq: %d\n", (int)(v)); + command_print(CMD, "Absurd/illegal slow clock freq: %d\n", (int)(v)); return ERROR_COMMAND_SYNTAX_ERROR; } pChip->cfg.slow_freq = v; @@ -3711,11 +3704,10 @@ COMMAND_HANDLER(sam3_handle_slowclk_command) } default: /* error */ - command_print(CMD_CTX, "Too many parameters"); + command_print(CMD, "Too many parameters"); return ERROR_COMMAND_SYNTAX_ERROR; - break; } - command_print(CMD_CTX, "Slowclk freq: %d.%03dkhz", + command_print(CMD, "Slowclk freq: %d.%03dkhz", (int)(pChip->cfg.slow_freq / 1000), (int)(pChip->cfg.slow_freq % 1000)); return ERROR_OK; @@ -3735,8 +3727,9 @@ static const struct command_registration at91sam3_exec_command_handlers[] = { .name = "info", .handler = sam3_handle_info_command, .mode = COMMAND_EXEC, - .help = "Print information about the current at91sam3 chip" + .help = "Print information about the current at91sam3 chip " "and its flash configuration.", + .usage = "", }, { .name = "slowclk", @@ -3759,7 +3752,7 @@ static const struct command_registration at91sam3_command_handlers[] = { COMMAND_REGISTRATION_DONE }; -struct flash_driver at91sam3_flash = { +const struct flash_driver at91sam3_flash = { .name = "at91sam3", .commands = at91sam3_command_handlers, .flash_bank_command = sam3_flash_bank_command, @@ -3769,6 +3762,7 @@ struct flash_driver at91sam3_flash = { .read = default_flash_read, .probe = sam3_probe, .auto_probe = sam3_auto_probe, - .erase_check = sam3_erase_check, + .erase_check = default_flash_blank_check, .protect_check = sam3_protect_check, + .free_driver_priv = sam3_free_driver_priv, };