x86: pci: Allow conditionally run VGA rom in S3
authorBin Meng <bmeng.cn@gmail.com>
Fri, 21 Apr 2017 14:24:46 +0000 (07:24 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Wed, 17 May 2017 09:11:46 +0000 (17:11 +0800)
Introduce a new CONFIG_S3_VGA_ROM_RUN option so that U-Boot can
bypass executing VGA roms in S3.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Stefan Roese <sr@denx.de>
arch/x86/Kconfig
drivers/pci/pci_rom.c

index 5322eff..0cd981e 100644 (file)
@@ -601,6 +601,18 @@ config HAVE_ACPI_RESUME
          is done, U-Boot needs to find out the wakeup vector provided by OSes
          and jump there.
 
+config S3_VGA_ROM_RUN
+       bool "Re-run VGA option ROMs on S3 resume"
+       depends on HAVE_ACPI_RESUME
+       default y if HAVE_ACPI_RESUME
+       help
+         Execute VGA option ROMs in U-Boot when resuming from S3. Normally
+         this is needed when graphics console is being used in the kernel.
+
+         Turning it off can reduce some resume time, but be aware that your
+         graphics console won't work without VGA options ROMs. Set it to N
+         if your kernel is only on a serial console.
+
 config STACK_SIZE
        hex
        depends on HAVE_ACPI_RESUME
index 57204c4..75fb093 100644 (file)
 #include <video_fb.h>
 #include <linux/screen_info.h>
 
+#ifdef CONFIG_X86
+#include <asm/acpi_s3.h>
+DECLARE_GLOBAL_DATA_PTR;
+#endif
+
 __weak bool board_should_run_oprom(struct udevice *dev)
 {
+#if defined(CONFIG_X86) && defined(CONFIG_HAVE_ACPI_RESUME)
+       if (gd->arch.prev_sleep_state == ACPI_S3) {
+               if (IS_ENABLED(CONFIG_S3_VGA_ROM_RUN))
+                       return true;
+               else
+                       return false;
+       }
+#endif
+
        return true;
 }