aboutsummaryrefslogtreecommitdiff
path: root/util/flashrom/board_enable.c
diff options
context:
space:
mode:
authorPeter Stuge <peter@stuge.se>2008-01-27 16:21:21 +0000
committerPeter Stuge <peter@stuge.se>2008-01-27 16:21:21 +0000
commite2bbcb10d1e477ce3965c5c4a0da902265239811 (patch)
treeb5c96f9cf96a20ea0b5a0a034860770b0ba574f4 /util/flashrom/board_enable.c
parent3bbf2ff789791ca6fe3eb9fc7d3c92ce1fc86367 (diff)
Make the vendor name optional in the -m flashrom parameter when there's only
one board name that matches. The full syntax still works, and is required when two vendors have boards with the same names. Signed-off-by: Peter Stuge <peter@stuge.se> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3082 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/flashrom/board_enable.c')
-rw-r--r--util/flashrom/board_enable.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/util/flashrom/board_enable.c b/util/flashrom/board_enable.c
index 27f431f513..e23b9eadf4 100644
--- a/util/flashrom/board_enable.c
+++ b/util/flashrom/board_enable.c
@@ -413,9 +413,10 @@ struct board_pciid_enable board_pciid_enables[] = {
static struct board_pciid_enable *board_match_coreboot_name(const char *vendor, const char *part)
{
struct board_pciid_enable *board = board_pciid_enables;
+ struct board_pciid_enable *partmatch = NULL;
for (; board->name; board++) {
- if (!board->lb_vendor || strcmp(board->lb_vendor, vendor))
+ if (vendor && (!board->lb_vendor || strcmp(board->lb_vendor, vendor)))
continue;
if (!board->lb_part || strcmp(board->lb_part, part))
@@ -427,9 +428,24 @@ static struct board_pciid_enable *board_match_coreboot_name(const char *vendor,
if (board->second_vendor &&
!pci_dev_find(board->second_vendor, board->second_device))
continue;
- return board;
+
+ if (vendor)
+ return board;
+
+ if (partmatch) {
+ /* a second entry has a matching part name */
+ printf("AMBIGUOUS BOARD NAME: %s\n", part);
+ printf("At least vendors '%s' and '%s' match.\n",
+ partmatch->lb_vendor, board->lb_vendor);
+ printf("Please use the full -m vendor:part syntax.\n");
+ return NULL;
+ }
+ partmatch = board;
}
+ if (partmatch)
+ return partmatch;
+
printf("NOT FOUND %s:%s\n", vendor, part);
return NULL;
@@ -477,7 +493,7 @@ int board_flash_enable(const char *vendor, const char *part)
struct board_pciid_enable *board = NULL;
int ret = 0;
- if (vendor && part)
+ if (part)
board = board_match_coreboot_name(vendor, part);
if (!board)