diff options
author | Peter Stuge <peter@stuge.se> | 2008-01-27 16:21:21 +0000 |
---|---|---|
committer | Peter Stuge <peter@stuge.se> | 2008-01-27 16:21:21 +0000 |
commit | e2bbcb10d1e477ce3965c5c4a0da902265239811 (patch) | |
tree | b5c96f9cf96a20ea0b5a0a034860770b0ba574f4 /util/flashrom/board_enable.c | |
parent | 3bbf2ff789791ca6fe3eb9fc7d3c92ce1fc86367 (diff) | |
download | coreboot-e2bbcb10d1e477ce3965c5c4a0da902265239811.tar.xz |
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.c | 22 |
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) |