aboutsummaryrefslogtreecommitdiff
path: root/src/northbridge/intel/haswell
diff options
context:
space:
mode:
Diffstat (limited to 'src/northbridge/intel/haswell')
-rw-r--r--src/northbridge/intel/haswell/gma.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/northbridge/intel/haswell/gma.c b/src/northbridge/intel/haswell/gma.c
index 76da5a0080..f22ff48707 100644
--- a/src/northbridge/intel/haswell/gma.c
+++ b/src/northbridge/intel/haswell/gma.c
@@ -14,6 +14,7 @@
*/
#include <arch/io.h>
+#include <cbmem.h>
#include <console/console.h>
#include <bootmode.h>
#include <delay.h>
@@ -24,6 +25,7 @@
#include <drivers/intel/gma/i915.h>
#include <cpu/intel/haswell/haswell.h>
#include <northbridge/intel/common/gma_opregion.h>
+#include <southbridge/intel/lynxpoint/nvs.h>
#include <stdlib.h>
#include <string.h>
@@ -514,12 +516,22 @@ gma_write_acpi_tables(struct device *const dev,
struct acpi_rsdp *const rsdp)
{
igd_opregion_t *opregion = (igd_opregion_t *)current;
+ global_nvs_t *gnvs;
if (init_igd_opregion(opregion) != CB_SUCCESS)
return current;
current += sizeof(igd_opregion_t);
+ /* GNVS has been already set up */
+ gnvs = cbmem_find(CBMEM_ID_ACPI_GNVS);
+ if (gnvs) {
+ /* IGD OpRegion Base Address */
+ gnvs->aslb = (u32)(uintptr_t)opregion;
+ } else {
+ printk(BIOS_ERR, "Error: GNVS table not found.\n");
+ }
+
gma_enable_swsci();
current = acpi_align_current(current);