summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Menzel <pmenzel@molgen.mpg.de>2018-04-14 20:08:54 +0200
committerNico Huber <nico.h@gmx.de>2018-04-28 08:44:20 +0000
commit5e7ad65f6f2583b1f8e46848918e36a31928f7c9 (patch)
treeefecaaf90407685f22223de651ce229b4df745d7
parentb23833fb296b1b8867db5c572b87e824ce024f72 (diff)
downloadcoreboot-5e7ad65f6f2583b1f8e46848918e36a31928f7c9.tar.xz
nb/intel/i945/gma: Skip native VGA init for ACPI S3 resume
Currently, native VGA initialization takes 90 ms during resume. But, it is not needed. So, skip it to save that time. Note, it is assumed that ACPI aware operating systems ship the appropriate drivers to initialize the graphics device. With Linux, if the module/driver *i915* is not loaded, then the display will stay black. TEST=On Lenovo X60t with Debian and Linux 4.15.11-1~bpo9+1, suspend and resume system and notice display is correctly initialized by the driver i915 after resume. Notice the messages below. ``` PCI: 00:02.0 init ... Skipping native VGA initialization when resuming from ACPI S3. PCI: 00:02.0 init finished in 56 usecs PCI: 00:02.1 init ... ``` Change-Id: I6cc9dde94c18671d077132daf648e8ba557e7887 Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-on: https://review.coreboot.org/25676 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/northbridge/intel/i945/gma.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/northbridge/intel/i945/gma.c b/src/northbridge/intel/i945/gma.c
index 48a0867003..5ca06a9098 100644
--- a/src/northbridge/intel/i945/gma.c
+++ b/src/northbridge/intel/i945/gma.c
@@ -701,7 +701,11 @@ static void gma_func0_init(struct device *dev)
| PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
if (IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT)) {
- gma_ngi(dev);
+ if (acpi_is_wakeup_s3())
+ printk(BIOS_INFO,
+ "Skipping native VGA initialization when resuming from ACPI S3.\n");
+ else
+ gma_ngi(dev);
} else {
/* PCI Init, will run VBIOS */
pci_dev_init(dev);