From 580d29a9b13b828039ff58c2b3cc69a3d9bc2666 Mon Sep 17 00:00:00 2001 From: Carl-Daniel Hailfinger Date: Thu, 5 May 2011 07:12:40 +0000 Subject: Revamp board-specific quirk handling, allow for laptop support Handle board-specific quirks in three phases: 1. Before Super I/O probing (e.g. blacklisting of some Super I/O probes, or unhiding the Super I/O) 2. Before the laptop enforcement decision (e.g. whitelisting a laptop for flashing) 3. After chipset enabling (all current board enables) Implementation note: All entries in board_pciid_enables get an additional phase parameter. Alternative variants (3 tables instead of 1) also have their downsides, and I chose table bloat over table multiplication). With this patch, it should be possible to whitelist supported laptops with a matching entry (phase P2) in board_pciid_enables which points to a function setting laptop_ok=1. (In case DMI is broken, matching might be a little bit more difficult, but it is still doable.) Corresponding to flashrom svn r1294. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher --- internal.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'internal.c') diff --git a/internal.c b/internal.c index d3866ba..33a4150 100644 --- a/internal.c +++ b/internal.c @@ -125,6 +125,7 @@ int register_superio(struct superio s) #endif int is_laptop = 0; +int laptop_ok = 0; int internal_init(void) { @@ -198,6 +199,9 @@ int internal_init(void) dmi_init(); + /* In case Super I/O probing would cause pretty explosions. */ + board_handle_before_superio(); + /* Probe for the Super I/O chip and fill global struct superio. */ probe_superio(); #else @@ -208,10 +212,13 @@ int internal_init(void) */ #endif - /* Warn if a laptop is detected. */ - if (is_laptop) { + /* Check laptop whitelist. */ + board_handle_before_laptop(); + + /* Warn if a non-whitelisted laptop is detected. */ + if (is_laptop && !laptop_ok) { msg_perr("========================================================================\n" - "WARNING! You seem to be running flashrom on a laptop.\n" + "WARNING! You seem to be running flashrom on an unsupported laptop.\n" "Laptops, notebooks and netbooks are difficult to support and we recommend\n" "to use the vendor flashing utility. The embedded controller (EC) in these\n" "machines often interacts badly with flashing.\n" -- cgit v1.1