From 19c2ad87588aff19a1213eedc3c34f14a99b1ad4 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Fri, 30 Jun 2017 14:52:01 +0200 Subject: drv/intel/gma/opregion: Add interface for GNVS ASLB handling Add and use new interface to set and get GNVS' ASLB register. To be used by Intel's gma driver to set ASLB at ACPI table creation and to get ASLB on S3 resume. Change-Id: If30c6b2270069783b0892774802f47406404da5f Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/20435 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/northbridge/intel/nehalem/gma.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/northbridge/intel/nehalem') diff --git a/src/northbridge/intel/nehalem/gma.c b/src/northbridge/intel/nehalem/gma.c index fa84f784e4..7489fd4ed2 100644 --- a/src/northbridge/intel/nehalem/gma.c +++ b/src/northbridge/intel/nehalem/gma.c @@ -304,6 +304,19 @@ int gtt_poll(u32 reg, u32 mask, u32 value) return 0; } +uintptr_t gma_get_gnvs_aslb(const void *gnvs) +{ + const global_nvs_t *gnvs_ptr = gnvs; + return (uintptr_t)(gnvs_ptr ? gnvs_ptr->aslb : 0); +} + +void gma_set_gnvs_aslb(void *gnvs, uintptr_t aslb) +{ + global_nvs_t *gnvs_ptr = gnvs; + if (gnvs_ptr) + gnvs_ptr->aslb = aslb; +} + static void gma_pm_init_pre_vbios(struct device *dev) { u32 reg32; @@ -1136,7 +1149,7 @@ gma_write_acpi_tables(struct device *const dev, gnvs = cbmem_find(CBMEM_ID_ACPI_GNVS); if (gnvs) { /* IGD OpRegion Base Address */ - gnvs->aslb = (u32)(uintptr_t)opregion; + gma_set_gnvs_aslb(gnvs, (uintptr_t)opregion); } else { printk(BIOS_ERR, "Error: GNVS table not found.\n"); } -- cgit v1.2.3