* Implements Tcl commands used to access NOR flash facilities.
*/
-COMMAND_HELPER(flash_command_get_bank, unsigned name_index,
- struct flash_bank **bank)
+COMMAND_HELPER(flash_command_get_bank_maybe_probe, unsigned name_index,
+ struct flash_bank **bank, bool do_probe)
{
const char *name = CMD_ARGV[name_index];
- int retval = get_flash_bank_by_name(name, bank);
+ int retval;
+ if (do_probe) {
+ retval = get_flash_bank_by_name(name, bank);
+ } else {
+ *bank = get_flash_bank_by_name_noprobe(name);
+ retval = ERROR_OK;
+ }
+
if (retval != ERROR_OK)
return retval;
if (*bank)
unsigned bank_num;
COMMAND_PARSE_NUMBER(uint, name, bank_num);
- return get_flash_bank_by_num(bank_num, bank);
+ if (do_probe) {
+ return get_flash_bank_by_num(bank_num, bank);
+ } else {
+ *bank = get_flash_bank_by_num_noprobe(bank_num);
+ retval = (bank) ? ERROR_OK : ERROR_FAIL;
+ return retval;
+ }
+}
+
+COMMAND_HELPER(flash_command_get_bank, unsigned name_index,
+ struct flash_bank **bank)
+{
+ return CALL_COMMAND_HANDLER(flash_command_get_bank_maybe_probe,
+ name_index, bank, true);
}
COMMAND_HANDLER(handle_flash_info_command)
if (CMD_ARGC != 1)
return ERROR_COMMAND_SYNTAX_ERROR;
- retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &p);
+ retval = CALL_COMMAND_HANDLER(flash_command_get_bank_maybe_probe, 0, &p, false);
if (retval != ERROR_OK)
return retval;
int retval;
- if (CMD_ARGC < 1)
- return ERROR_COMMAND_SYNTAX_ERROR;
-
/* flash auto-erase is disabled by default*/
int auto_erase = 0;
bool auto_unlock = false;
- for (;; ) {
+ while (CMD_ARGC) {
if (strcmp(CMD_ARGV[0], "erase") == 0) {
auto_erase = 1;
CMD_ARGV++;
int retval;
retval = CALL_COMMAND_HANDLER(driver->flash_bank_command, c);
if (ERROR_OK != retval) {
- LOG_ERROR("'%s' driver rejected flash bank at 0x%8.8" PRIx32 "Usage %s",
+ LOG_ERROR("'%s' driver rejected flash bank at 0x%8.8" PRIx32 "; usage: %s",
driver_name, c->base, driver->usage);
free(c);
return retval;