diff options
author | Li-Ta Lo <ollie@lanl.gov> | 2004-12-23 21:48:01 +0000 |
---|---|---|
committer | Li-Ta Lo <ollie@lanl.gov> | 2004-12-23 21:48:01 +0000 |
commit | 9a5b4962a7202ac9ba6eeef8ac9550c7907cfb2a (patch) | |
tree | 1308b20c0b7f3347f9f4de296534a43121c656b1 /src/northbridge | |
parent | a804a713a23ec9662933f7452f1d3235f7a69474 (diff) |
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')
-rw-r--r-- | src/northbridge/amd/amdk8/northbridge.c | 23 |
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) { |