ck804 pref mem 4G above support
Signed-off-by: Yinghai Lu <yinghai.lu@amd.com> Acked-by: Yinghai Lu <yinghai.lu@amd.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2532 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
c2c8646584
commit
6c3874e8f8
|
@ -14,6 +14,10 @@ static void pci_init(struct device *dev)
|
|||
{
|
||||
|
||||
uint32_t dword;
|
||||
#if CONFIG_PCI_64BIT_PREF_MEM == 1
|
||||
device_t pci_domain_dev;
|
||||
struct resource *mem1, *mem2;
|
||||
#endif
|
||||
|
||||
/* System error enable */
|
||||
dword = pci_read_config32(dev, 0x04);
|
||||
|
@ -34,8 +38,27 @@ static void pci_init(struct device *dev)
|
|||
pci_write_config32(dev, 0x4c, dword);
|
||||
#endif
|
||||
|
||||
#if CONFIG_PCI_64BIT_PREF_MEM == 1
|
||||
pci_domain_dev = dev->bus->dev;
|
||||
while(pci_domain_dev) {
|
||||
if(pci_domain_dev->path.type == DEVICE_PATH_PCI_DOMAIN) break;
|
||||
pci_domain_dev = pci_domain_dev->bus->dev;
|
||||
}
|
||||
|
||||
if(!pci_domain_dev) return; // impossiable
|
||||
mem1 = find_resource(pci_domain_dev, 1); // prefmem, it could be 64bit
|
||||
mem2 = find_resource(pci_domain_dev, 2); // mem
|
||||
if(mem1->base > mem2->base) {
|
||||
dword = mem2->base & (0xffff0000UL);
|
||||
printk_debug("PCI DOMAIN mem2 base = 0x%010Lx\n", mem2->base);
|
||||
} else {
|
||||
dword = mem1->base & (0xffff0000UL);
|
||||
printk_debug("PCI DOMAIN mem1 (prefmem) base = 0x%010Lx\n", mem1->base);
|
||||
}
|
||||
#else
|
||||
dword = dev_root.resource[1].base & (0xffff0000UL);
|
||||
printk_debug("dev_root mem base = 0x%010Lx\n", dev_root.resource[1].base);
|
||||
printk_debug("dev_root mem base = 0x%010Lx\n", dev_root.resource[1].base);
|
||||
#endif
|
||||
|
||||
printk_debug("[0x50] <-- 0x%08x\n", dword);
|
||||
pci_write_config32(dev, 0x50, dword); //TOM
|
||||
|
|
Loading…
Reference in New Issue