i945: Disable IGD if plugin VGA is preferred
It's shut down, but UMA memory is not reclaimed. A later extension could optionally do the magic register dance that allows initialization of IGD as secondary graphics device. Change-Id: I2a92bb71755005b886a8e1825325c678a9991bf2 Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com> Reviewed-on: http://review.coreboot.org/1252 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
a555e55d15
commit
ce6e9fed2e
|
@ -23,6 +23,7 @@
|
|||
#include <device/pci.h>
|
||||
#include <device/pci_ids.h>
|
||||
#include <pc80/mc146818rtc.h>
|
||||
#include "i945.h"
|
||||
|
||||
#define GDRST 0xc0
|
||||
|
||||
|
@ -44,6 +45,22 @@ static void gma_func0_init(struct device *dev)
|
|||
pci_dev_init(dev);
|
||||
}
|
||||
|
||||
/* This doesn't reclaim stolen UMA memory, but IGD could still
|
||||
be reenabled later. */
|
||||
static void gma_func0_disable(struct device *dev)
|
||||
{
|
||||
struct device *dev_host = dev_find_slot(0, PCI_DEVFN(0x0, 0));
|
||||
|
||||
pci_write_config16(dev, GCFC, 0xa00);
|
||||
pci_write_config16(dev_host, GGC, (1 << 1));
|
||||
|
||||
unsigned int reg32 = pci_read_config32(dev_host, DEVEN);
|
||||
reg32 &= ~(DEVEN_D2F0 | DEVEN_D2F1);
|
||||
pci_write_config32(dev_host, DEVEN, reg32);
|
||||
|
||||
dev->enabled = 0;
|
||||
}
|
||||
|
||||
static void gma_func1_init(struct device *dev)
|
||||
{
|
||||
u32 reg32;
|
||||
|
@ -82,6 +99,7 @@ static struct device_operations gma_func0_ops = {
|
|||
.init = gma_func0_init,
|
||||
.scan_bus = 0,
|
||||
.enable = 0,
|
||||
.disable = gma_func0_disable,
|
||||
.ops_pci = &gma_pci_ops,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue