nb/i945/gma.c: Set the MSAC register correctly

This fixes an instability on 945gc where the IGD completely locks
up the system, when for instance tasked to do something with
compositing (like GNOME or GDM).

TESTED on ga-945gcm-s2l and d945gclf
TEST: launch GDM (gnome display manager)

Change-Id: Iec49bccf3e3164df9dc1e0b54460a616fe92e04d
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/17094
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins)
This commit is contained in:
Arthur Heymans 2016-10-22 14:16:48 +02:00 committed by Martin Roth
parent ab5d6902fd
commit c057a0611b
1 changed files with 15 additions and 1 deletions

View File

@ -32,6 +32,7 @@
#include "chip.h"
#define GDRST 0xc0
#define MSAC 0x62 /* Multi Size Aperture Control */
#define LVDS_CLOCK_A_POWERUP_ALL (3 << 8)
#define LVDS_CLOCK_B_POWERUP_ALL (3 << 4)
@ -707,12 +708,25 @@ static void gma_ssdt(device_t device)
drivers_intel_gma_displays_ssdt_generate(gfx);
}
static void gma_func0_read_resources(device_t dev)
{
u8 reg8;
/* Set Untrusted Aperture Size to 256mb */
reg8 = pci_read_config8(dev, MSAC);
reg8 &= ~0x3;
reg8 |= 0x2;
pci_write_config8(dev, MSAC, reg8);
pci_dev_read_resources(dev);
}
static struct pci_operations gma_pci_ops = {
.set_subsystem = gma_set_subsystem,
};
static struct device_operations gma_func0_ops = {
.read_resources = pci_dev_read_resources,
.read_resources = gma_func0_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = gma_func0_init,