fixed minor bug in APG bridge code. Use AGP_APERTURE_SIZE instead of IOMMU_APERTURE_SIZE
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1553 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
9f0d0f9669
commit
a60bf67b32
|
@ -740,6 +740,7 @@ end
|
||||||
define AGP_APERTURE_SIZE
|
define AGP_APERTURE_SIZE
|
||||||
default none
|
default none
|
||||||
export used
|
export used
|
||||||
|
format "0x%x"
|
||||||
comment "AGP graphics virtual memory aperture size"
|
comment "AGP graphics virtual memory aperture size"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
uses AGP_APERTURE_SIZE
|
||||||
|
default AGP_APERTURE_SIZE=0x4000000
|
||||||
|
|
||||||
config chip.h
|
config chip.h
|
||||||
object northbridge.o
|
object northbridge.o
|
||||||
driver misc_control.o
|
driver misc_control.o
|
||||||
|
|
|
@ -18,15 +18,15 @@
|
||||||
#include "./cpu_rev.c"
|
#include "./cpu_rev.c"
|
||||||
#include "amdk8.h"
|
#include "amdk8.h"
|
||||||
|
|
||||||
#define IOMMU_APETURE_SIZE (64*1024*1024) /* 64M */
|
|
||||||
static void mcf3_read_resources(device_t dev)
|
static void mcf3_read_resources(device_t dev)
|
||||||
{
|
{
|
||||||
struct resource *resource;
|
struct resource *resource;
|
||||||
|
|
||||||
/* Read the generic PCI resources */
|
/* Read the generic PCI resources */
|
||||||
pci_dev_read_resources(dev);
|
pci_dev_read_resources(dev);
|
||||||
|
|
||||||
/* If we are not the first processor don't allocate the gart apeture */
|
/* If we are not the first processor don't allocate the gart apeture */
|
||||||
if (dev->path.u.pci.devfn != PCI_DEVFN(24, 3)) {
|
if (dev->path.u.pci.devfn != PCI_DEVFN(0x18, 0x3)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,14 +35,13 @@ static void mcf3_read_resources(device_t dev)
|
||||||
resource = &dev->resource[dev->resources];
|
resource = &dev->resource[dev->resources];
|
||||||
dev->resources++;
|
dev->resources++;
|
||||||
resource->base = 0;
|
resource->base = 0;
|
||||||
resource->size = IOMMU_APETURE_SIZE;
|
resource->size = AGP_APERTURE_SIZE;
|
||||||
resource->align = log2(resource->size);
|
resource->align = log2(resource->size);
|
||||||
resource->gran = log2(resource->size);
|
resource->gran = log2(resource->size);
|
||||||
resource->limit = 0xffffffff; /* 4G */
|
resource->limit = 0xffffffff; /* 4G */
|
||||||
resource->flags = IORESOURCE_MEM;
|
resource->flags = IORESOURCE_MEM;
|
||||||
resource->index = 0x94;
|
resource->index = 0x94;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
printk_err("%s Unexpeted resource shortage\n", dev_path(dev));
|
printk_err("%s Unexpeted resource shortage\n", dev_path(dev));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,9 +56,9 @@ static void mcf3_set_resources(device_t dev)
|
||||||
uint32_t base;
|
uint32_t base;
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
|
|
||||||
size = (0<<6)|(0<<5)|(0<<4)|((log2(resource->size) - 25) << 1)|(0<<0);
|
size = (0<<6)|(0<<5)|(0<<4)|
|
||||||
|
((log2(resource->size) - 25) << 1)|(0<<0);
|
||||||
base = ((resource->base) >> 25) & 0x00007fff;
|
base = ((resource->base) >> 25) & 0x00007fff;
|
||||||
|
|
||||||
pdev = 0;
|
pdev = 0;
|
||||||
while (pdev = dev_find_device(PCI_VENDOR_ID_AMD, 0x1103, pdev)) {
|
while (pdev = dev_find_device(PCI_VENDOR_ID_AMD, 0x1103, pdev)) {
|
||||||
/* I want a 64M GART apeture */
|
/* I want a 64M GART apeture */
|
||||||
|
@ -69,15 +68,12 @@ static void mcf3_set_resources(device_t dev)
|
||||||
/* Don't set the GART Table base address */
|
/* Don't set the GART Table base address */
|
||||||
pci_write_config32(pdev, 0x98, 0);
|
pci_write_config32(pdev, 0x98, 0);
|
||||||
|
|
||||||
printk_debug(
|
printk_debug("%s %02x <- [0x%08lx - 0x%08lx] mem <gart>\n",
|
||||||
"%s %02x <- [0x%08lx - 0x%08lx] mem <gart>\n",
|
dev_path(pdev), resource->index, resource->base,
|
||||||
dev_path(pdev),
|
resource->base + resource->size - 1);
|
||||||
resource->index,
|
|
||||||
resource->base, resource->base + resource->size - 1);
|
|
||||||
}
|
}
|
||||||
/* Remember this resource has been stored */
|
/* Remember this resource has been stored */
|
||||||
resource->flags |= IORESOURCE_STORED;
|
resource->flags |= IORESOURCE_STORED;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Set the generic PCI resources */
|
/* Set the generic PCI resources */
|
||||||
|
|
|
@ -13,13 +13,15 @@ static void agp3bridge_init(device_t dev)
|
||||||
{
|
{
|
||||||
uint8_t byte;
|
uint8_t byte;
|
||||||
|
|
||||||
|
/* Enable BM and IO */
|
||||||
byte = pci_read_config32(dev, 0x04);
|
byte = pci_read_config32(dev, 0x04);
|
||||||
byte |= 0x07;
|
byte |= 0x07;
|
||||||
pci_write_config8(dev, 0x04, byte);
|
pci_write_config8(dev, 0x04, byte);
|
||||||
|
|
||||||
byte = pci_read_config32(dev, 0xce);
|
/* Eable VGA/ISA decoding */
|
||||||
|
byte = pci_read_config32(dev, 0x3e);
|
||||||
byte |= 3<<2;
|
byte |= 3<<2;
|
||||||
pci_write_config8(dev, 0xce, byte);
|
pci_write_config8(dev, 0x3e, byte);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +40,6 @@ static struct pci_driver agp3bridge_driver __pci_driver = {
|
||||||
.device = 0x7455, // AGP Bridge
|
.device = 0x7455, // AGP Bridge
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void agp3dev_enable(device_t dev)
|
static void agp3dev_enable(device_t dev)
|
||||||
{
|
{
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
|
|
Loading…
Reference in New Issue