[LinuxBIOS] r2532 - trunk/LinuxBIOSv2/src/southbridge/nvidia/ck804

svn at openbios.org svn at openbios.org
Wed Dec 20 21:15:34 CET 2006


Author: yhlu
Date: 2006-12-20 21:15:33 +0100 (Wed, 20 Dec 2006)
New Revision: 2532

Modified:
   trunk/LinuxBIOSv2/src/southbridge/nvidia/ck804/ck804_pci.c
Log:
ck804 pref mem 4G above support

Signed-off-by: Yinghai Lu <yinghai.lu at amd.com>
Acked-by: Yinghai Lu <yinghai.lu at amd.com>



Modified: trunk/LinuxBIOSv2/src/southbridge/nvidia/ck804/ck804_pci.c
===================================================================
--- trunk/LinuxBIOSv2/src/southbridge/nvidia/ck804/ck804_pci.c	2006-12-20 14:59:56 UTC (rev 2531)
+++ trunk/LinuxBIOSv2/src/southbridge/nvidia/ck804/ck804_pci.c	2006-12-20 20:15:33 UTC (rev 2532)
@@ -14,6 +14,10 @@
 {
 
 	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 @@
         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





More information about the coreboot mailing list