From fd654c8a3e3dbd5ab97eb6b3834ee462dd509a66 Mon Sep 17 00:00:00 2001
From: Zachary T Welch <zw@superlucidity.net>
Date: Tue, 17 Nov 2009 14:04:25 -0800
Subject: 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.
---
 src/flash/flash.c | 10 ++++++++--
 src/flash/flash.h |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/flash/flash.c b/src/flash/flash.c
index e93aa636..ef6c6da0 100644
--- a/src/flash/flash.c
+++ b/src/flash/flash.c
@@ -189,6 +189,8 @@ struct flash_bank *get_flash_bank_by_name(const char *name)
 	struct flash_bank *bank;
 	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))
 			continue;
 		if (++found < requested)
@@ -239,12 +241,15 @@ COMMAND_HELPER(flash_command_get_bank, unsigned name_index,
 
 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>");
 		return ERROR_COMMAND_SYNTAX_ERROR;
 	}
+	// save bank name and advance arguments for compatibility
+	const char *bank_name = *CMD_ARGV++;
+	CMD_ARGC--;
 
 	struct target *target;
 	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->name = strdup(bank_name);
 		c->target = target;
 		c->driver = flash_drivers[i];
 		c->driver_priv = NULL;
diff --git a/src/flash/flash.h b/src/flash/flash.h
index 1235a419..ac1600e4 100644
--- a/src/flash/flash.h
+++ b/src/flash/flash.h
@@ -240,6 +240,8 @@ struct flash_driver
  */
 struct flash_bank
 {
+	char *name;
+
 	struct target *target; /**< Target to which this bank belongs. */
 
 	struct flash_driver *driver; /**< Driver for this bank. */
-- 
cgit v1.2.3