#define SAMV_PAGE_SIZE 512
#define SAMV_FLASH_BASE 0x00400000
-extern struct flash_driver atsamv_flash;
+extern const struct flash_driver atsamv_flash;
struct samv_flash_bank {
int probed;
{
int r;
uint32_t v;
- long long ms_now, ms_end;
+ int64_t ms_now, ms_end;
if (status)
*status = 0;
uint8_t nvm_size_code = (device_id >> 8) & 0xf;
switch (nvm_size_code) {
+ case 10:
+ bank->size = 512 * 1024;
+ break;
case 12:
bank->size = 1024 * 1024;
break;
default:
LOG_ERROR("unrecognized flash size code: %d", nvm_size_code);
return ERROR_FAIL;
- break;
}
struct samv_flash_bank *samv_info = bank->driver_priv;
switch (CMD_ARGC) {
case 0:
goto showall;
- break;
case 1:
who = -1;
break;
break;
default:
return ERROR_COMMAND_SYNTAX_ERROR;
- break;
}
uint32_t v;
r = samv_get_gpnvm(target, x, &v);
if (r != ERROR_OK)
break;
- command_print(CMD_CTX, "samv-gpnvm%u: %u", x, v);
+ command_print(CMD, "samv-gpnvm%u: %u", x, v);
}
return r;
}
if ((who >= 0) && (((unsigned)who) < SAMV_NUM_GPNVM_BITS)) {
r = samv_get_gpnvm(target, who, &v);
- command_print(CMD_CTX, "samv-gpnvm%u: %u", who, v);
+ command_print(CMD, "samv-gpnvm%u: %u", who, v);
return r;
} else {
- command_print(CMD_CTX, "invalid gpnvm: %u", who);
+ command_print(CMD, "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;
}
else if (!strcmp("clr", CMD_ARGV[0]) || !strcmp("clear", CMD_ARGV[0]))
r = samv_clear_gpnvm(target, 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;
COMMAND_REGISTRATION_DONE
};
-struct flash_driver atsamv_flash = {
+const struct flash_driver atsamv_flash = {
.name = "atsamv",
.commands = atsamv_command_handlers,
.flash_bank_command = samv_flash_bank_command,
.erase_check = default_flash_blank_check,
.protect_check = samv_protect_check,
.info = samv_get_info,
+ .free_driver_priv = default_flash_free_driver_priv,
};