[OpenBIOS] [commit] r1226 - in trunk/openbios-devel: arch/ppc/qemu arch/sparc64 drivers include/drivers

repository service svn at openbios.org
Mon Sep 2 15:46:02 CEST 2013


Author: mcayland
Date: Mon Sep  2 15:46:01 2013
New Revision: 1226
URL: http://tracker.coreboot.org/trac/openbios/changeset/1226

Log:
PCI: switch calculation of host PCI memory base to use an offset

Instead of using two different variables to track the absolute values of the
PCI memory base and the host memory base, change the host memory base to be
an offset which is added to the PCI memory base during conversion. As a
consequence of this, the code in pci_bus_addr_to_host_addr() can be unified
to be consistent across all architectures.

Note that this commit also renames arch->host_mem_base to arch->host_pci_base
in order to better describe its function.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>

Modified:
   trunk/openbios-devel/arch/ppc/qemu/init.c
   trunk/openbios-devel/arch/sparc64/openbios.c
   trunk/openbios-devel/drivers/pci.c
   trunk/openbios-devel/include/drivers/pci.h

Modified: trunk/openbios-devel/arch/ppc/qemu/init.c
==============================================================================
--- trunk/openbios-devel/arch/ppc/qemu/init.c	Mon Sep  2 15:45:56 2013	(r1225)
+++ trunk/openbios-devel/arch/ppc/qemu/init.c	Mon Sep  2 15:46:01 2013	(r1226)
@@ -99,7 +99,7 @@
         .cfg_data = 0x800c0000,
         .cfg_base = 0x80000000,
         .cfg_len = 0x00100000,
-        .host_mem_base = 0xf0000000,
+        .host_pci_base = 0x0,
         .pci_mem_base = 0xf0000000,
         .mem_len = 0x10000000,
         .io_base = 0x80000000,
@@ -116,7 +116,7 @@
         .cfg_data = 0xf2c00000,
         .cfg_base = 0xf2000000,
         .cfg_len = 0x02000000,
-        .host_mem_base = 0x80000000,
+        .host_pci_base = 0x0,
         .pci_mem_base = 0x80000000,
         .mem_len = 0x10000000,
         .io_base = 0xf2000000,
@@ -133,7 +133,7 @@
         .cfg_data = 0xf0c00000,
         .cfg_base = 0xf0000000,
         .cfg_len = 0x02000000,
-        .host_mem_base = 0x80000000,
+        .host_pci_base = 0x0,
         .pci_mem_base = 0x80000000,
         .mem_len = 0x10000000,
         .io_base = 0xf2000000,
@@ -150,7 +150,7 @@
         .cfg_data = 0xfee00000,
         .cfg_base = 0x80000000,
         .cfg_len = 0x7f000000,
-        .host_mem_base = 0x80000000,
+        .host_pci_base = 0x0,
         .pci_mem_base = 0x80000000,
         .mem_len = 0x10000000,
         .io_base = 0xfe000000,

Modified: trunk/openbios-devel/arch/sparc64/openbios.c
==============================================================================
--- trunk/openbios-devel/arch/sparc64/openbios.c	Mon Sep  2 15:45:56 2013	(r1225)
+++ trunk/openbios-devel/arch/sparc64/openbios.c	Mon Sep  2 15:46:01 2013	(r1226)
@@ -59,7 +59,7 @@
             .cfg_data = APB_MEM_BASE,                    // PCI bus memory space
             .cfg_base = APB_SPECIAL_BASE,
             .cfg_len = 0x2000000,
-            .host_mem_base = APB_MEM_BASE,
+            .host_pci_base = APB_MEM_BASE,
             .pci_mem_base = 0x100000, /* avoid VGA at 0xa0000 */
             .mem_len = 0x10000000,
             .io_base = APB_SPECIAL_BASE + 0x2000000ULL, // PCI Bus I/O space

Modified: trunk/openbios-devel/drivers/pci.c
==============================================================================
--- trunk/openbios-devel/drivers/pci.c	Mon Sep  2 15:45:56 2013	(r1225)
+++ trunk/openbios-devel/drivers/pci.c	Mon Sep  2 15:46:01 2013	(r1226)
@@ -143,11 +143,7 @@
 
 static unsigned long pci_bus_addr_to_host_addr(uint32_t ba)
 {
-#ifdef CONFIG_SPARC64
-    return arch->cfg_data + (unsigned long)ba;
-#else
-    return (unsigned long)ba;
-#endif
+    return arch->host_pci_base + (unsigned long)ba;
 }
 
 static void
@@ -525,11 +521,12 @@
         ncells += host_encode_phys_addr(props + ncells, arch->rbase);
         ncells += pci_encode_size(props + ncells, arch->rlen);
 	}
-	if (arch->host_mem_base) {
+	if (arch->pci_mem_base) {
 	    ncells += pci_encode_phys_addr(props + ncells, 0, MEMORY_SPACE_32,
 				     config->dev, 0, arch->pci_mem_base);
-        ncells += host_encode_phys_addr(props + ncells, arch->host_mem_base);
-        ncells += pci_encode_size(props + ncells, arch->mem_len);
+        ncells += host_encode_phys_addr(props + ncells, arch->host_pci_base +
+				     arch->pci_mem_base);
+	ncells += pci_encode_size(props + ncells, arch->mem_len);
 	}
 	set_property(dev, "ranges", (char *)props, ncells * sizeof(props[0]));
 }

Modified: trunk/openbios-devel/include/drivers/pci.h
==============================================================================
--- trunk/openbios-devel/include/drivers/pci.h	Mon Sep  2 15:45:56 2013	(r1225)
+++ trunk/openbios-devel/include/drivers/pci.h	Mon Sep  2 15:46:01 2013	(r1226)
@@ -13,7 +13,7 @@
 	unsigned long cfg_data;
 	unsigned long cfg_base;
 	unsigned long cfg_len;
-	unsigned long host_mem_base; /* in host memory space */
+	unsigned long host_pci_base; /* offset of PCI memory space within host memory space */
 	unsigned long pci_mem_base; /* in PCI memory space */
 	unsigned long mem_len;
 	unsigned long io_base;



More information about the OpenBIOS mailing list