From 132bbe6be537b5cb8e827e01f28086d3e3ce6677 Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Sat, 1 Jul 2017 13:02:47 -0500 Subject: soc/intel/braswell: Save/restore GMA OpRegion address Add global/ACPI nvs variables required for IGD OpRegion. Add functions necessary to save the ACPI OpRegion table address in ASLB, and restore table address upon S3 resume. Implementation modeled on existing Baytrail code. Test: boot Windows 10 on google/edgar with Tianocore payload and GOP display init, observe display driver loaded and functional, display not black screen when resuming from S3 suspend. Change-Id: I7c1fbf818510949420f70e93ed4780e94e598508 Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/25197 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Rudolph --- src/soc/intel/braswell/acpi.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/soc/intel/braswell/acpi.c') diff --git a/src/soc/intel/braswell/acpi.c b/src/soc/intel/braswell/acpi.c index 61ad03d388..9ac5574c6f 100644 --- a/src/soc/intel/braswell/acpi.c +++ b/src/soc/intel/braswell/acpi.c @@ -486,6 +486,7 @@ unsigned long southcluster_write_acpi_tables(device_t device, struct acpi_rsdp *rsdp) { acpi_header_t *ssdt2; + global_nvs_t *gnvs = cbmem_find(CBMEM_ID_ACPI_GNVS); current = acpi_write_hpet(device, current, rsdp); current = acpi_align_current(current); @@ -496,6 +497,8 @@ unsigned long southcluster_write_acpi_tables(device_t device, printk(BIOS_DEBUG, "ACPI: * IGD OpRegion\n"); opregion = (igd_opregion_t *)current; intel_gma_init_igd_opregion(opregion); + if (gnvs) + gnvs->aslb = (u32)opregion; update_igd_opregion(opregion); current += sizeof(igd_opregion_t); current = acpi_align_current(current); -- cgit v1.2.3