summaryrefslogtreecommitdiff
path: root/src/soc/intel/braswell/acpi.c
diff options
context:
space:
mode:
authorMatt DeVillier <matt.devillier@gmail.com>2017-07-01 13:02:47 -0500
committerMartin Roth <martinroth@google.com>2018-03-30 07:20:38 +0000
commit132bbe6be537b5cb8e827e01f28086d3e3ce6677 (patch)
tree1ddef6690707b17c224430a4ce39878f8abbb922 /src/soc/intel/braswell/acpi.c
parentc7edf18f7c763762676eeb3bad084cd4c032cfcf (diff)
downloadcoreboot-132bbe6be537b5cb8e827e01f28086d3e3ce6677.tar.xz
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 <matt.devillier@gmail.com> Reviewed-on: https://review.coreboot.org/25197 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Diffstat (limited to 'src/soc/intel/braswell/acpi.c')
-rw-r--r--src/soc/intel/braswell/acpi.c3
1 files changed, 3 insertions, 0 deletions
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);