From e2bbcb10d1e477ce3965c5c4a0da902265239811 Mon Sep 17 00:00:00 2001 From: Peter Stuge Date: Sun, 27 Jan 2008 16:21:21 +0000 Subject: 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 Acked-by: Stefan Reinauer git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3082 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/flashrom/board_enable.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'util/flashrom/board_enable.c') 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) -- cgit v1.2.3