add support for naming flash banks

Requires users to name their flash banks, allowing them to be used
instead of bank numbers in script commands.
This commit is contained in:
Zachary T Welch 2009-11-17 14:04:25 -08:00
parent dd44ae18b4
commit fd654c8a3e
2 changed files with 10 additions and 2 deletions

View File

@ -189,6 +189,8 @@ struct flash_bank *get_flash_bank_by_name(const char *name)
struct flash_bank *bank; struct flash_bank *bank;
for (bank = flash_banks; NULL != bank; bank = bank->next) for (bank = flash_banks; NULL != bank; bank = bank->next)
{ {
if (strcmp(bank->name, name) == 0)
return bank;
if (!flash_driver_name_matches(bank->driver->name, name)) if (!flash_driver_name_matches(bank->driver->name, name))
continue; continue;
if (++found < requested) if (++found < requested)
@ -239,12 +241,15 @@ COMMAND_HELPER(flash_command_get_bank, unsigned name_index,
COMMAND_HANDLER(handle_flash_bank_command) COMMAND_HANDLER(handle_flash_bank_command)
{ {
if (CMD_ARGC < 6) if (CMD_ARGC < 7)
{ {
LOG_ERROR("usage: flash bank <driver> " LOG_ERROR("usage: flash bank <name> <driver> "
"<base> <size> <chip_width> <bus_width>"); "<base> <size> <chip_width> <bus_width>");
return ERROR_COMMAND_SYNTAX_ERROR; return ERROR_COMMAND_SYNTAX_ERROR;
} }
// save bank name and advance arguments for compatibility
const char *bank_name = *CMD_ARGV++;
CMD_ARGC--;
struct target *target; struct target *target;
if ((target = get_target(CMD_ARGV[5])) == NULL) if ((target = get_target(CMD_ARGV[5])) == NULL)
@ -269,6 +274,7 @@ COMMAND_HANDLER(handle_flash_bank_command)
} }
c = malloc(sizeof(struct flash_bank)); c = malloc(sizeof(struct flash_bank));
c->name = strdup(bank_name);
c->target = target; c->target = target;
c->driver = flash_drivers[i]; c->driver = flash_drivers[i];
c->driver_priv = NULL; c->driver_priv = NULL;

View File

@ -240,6 +240,8 @@ struct flash_driver
*/ */
struct flash_bank struct flash_bank
{ {
char *name;
struct target *target; /**< Target to which this bank belongs. */ struct target *target; /**< Target to which this bank belongs. */
struct flash_driver *driver; /**< Driver for this bank. */ struct flash_driver *driver; /**< Driver for this bank. */