summaryrefslogtreecommitdiff
path: root/src/northbridge/amd
diff options
context:
space:
mode:
authorLi-Ta Lo <ollie@lanl.gov>2004-12-23 21:48:01 +0000
committerLi-Ta Lo <ollie@lanl.gov>2004-12-23 21:48:01 +0000
commit9a5b4962a7202ac9ba6eeef8ac9550c7907cfb2a (patch)
tree1308b20c0b7f3347f9f4de296534a43121c656b1 /src/northbridge/amd
parenta804a713a23ec9662933f7452f1d3235f7a69474 (diff)
downloadcoreboot-9a5b4962a7202ac9ba6eeef8ac9550c7907cfb2a.tar.xz
Allocating resource for Expansion ROM
More correct resource allocation for legacy VGA on K8 git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1829 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/northbridge/amd')
-rw-r--r--src/northbridge/amd/amdk8/northbridge.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/northbridge/amd/amdk8/northbridge.c b/src/northbridge/amd/amdk8/northbridge.c
index 788d698bac..7612d398ae 100644
--- a/src/northbridge/amd/amdk8/northbridge.c
+++ b/src/northbridge/amd/amdk8/northbridge.c
@@ -424,6 +424,8 @@ static void amdk8_create_vga_resource(device_t dev, unsigned nodeid)
{
struct resource *resource;
unsigned link;
+ uint32_t base, limit;
+ unsigned reg;
for (link = 0; link < dev->links; link++) {
if (dev->link[link].bridge_ctrl & PCI_BRIDGE_CTL_VGA) {
printk_info("%s: bridge on link %d has VGA device\n",
@@ -433,12 +435,29 @@ static void amdk8_create_vga_resource(device_t dev, unsigned nodeid)
resource = amdk8_find_mempair(dev, nodeid, link);
printk_info("MEM pair register %x\n", resource->index - 0x100);
resource->base = 0xa0000;
- resource->size = 0x00000;
+ resource->size = 0x20000;
resource->gran = 16;
resource->align = 16;
- resource->flags = IORESOURCE_PREFETCH | IORESOURCE_MEM | IORESOURCE_FIXED | IORESOURCE_ASSIGNED;
+ resource->flags = IORESOURCE_MEM | IORESOURCE_FIXED | IORESOURCE_ASSIGNED;
}
}
+#if 1
+ reg = resource->index & 0xfc;
+ base = f1_read_config32(reg);
+ limit = f1_read_config32(reg + 0x4);
+ base &= 0x000000f0;
+ base |= (resource->base >> 8) & 0xffffff00;
+ base |= 3;
+ limit &= 0x00000048;
+ limit |= ((resource->base + resource->size) >> 8) & 0xffffff00;
+ limit |= (resource->index & 3) << 4;
+ limit |= (nodeid & 7);
+ f1_write_config32(reg + 0x4, limit);
+ f1_write_config32(reg, base);
+
+ /* release the resource */
+ resource->flags = 0;
+#endif
}
static void amdk8_set_resources(device_t dev)
{