Factor out a few commonly duplicated functions from northbridge.c.
[coreboot.git] / src / northbridge / amd / amdfam10 / northbridge.c
index 727a5ba10c295dd91a827de47ee936c308b2f348..f8c8f26439dff655dfd67fefa0c1ad2436099fac 100644 (file)
@@ -689,33 +689,7 @@ static void amdfam10_domain_read_resources(device_t dev)
 #endif
 }
 
-static void ram_resource(device_t dev, unsigned long index,
-       resource_t basek, resource_t sizek)
-{
-       struct resource *resource;
-
-       if (!sizek) {
-               return;
-       }
-       resource = new_resource(dev, index);
-       resource->base = basek << 10;
-       resource->size = sizek << 10;
-       resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-               IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-       struct resource **best_p = gp;
-       struct resource *best;
-       best = *best_p;
-       if (!best || (best->base > new->base)) {
-               best = new;
-       }
-       *best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus, u32 tolm)
+static u32 my_find_pci_tolm(struct bus *bus, u32 tolm)
 {
        struct resource *min;
        min = 0;
@@ -865,9 +839,22 @@ static void disable_hoist_memory(unsigned long hole_startk, int node_id)
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64    // maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
+#endif
+
 #if CONFIG_GFXUMA == 1
 extern uint64_t uma_memory_base, uma_memory_size;
-#endif
+
+static void add_uma_resource(struct device *dev, int index)
+{
+       struct resource *resource;
+
+       printk(BIOS_DEBUG, "Adding UMA memory area\n");
+       resource = new_resource(dev, index);
+       resource->base = (resource_t) uma_memory_base;
+       resource->size = (resource_t) uma_memory_size;
+       resource->flags = IORESOURCE_MEM | IORESOURCE_RESERVE |
+           IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
+}
 #endif
 
 static void amdfam10_domain_set_resources(device_t dev)
@@ -938,7 +925,7 @@ static void amdfam10_domain_set_resources(device_t dev)
 
        pci_tolm = 0xffffffffUL;
        for(link = dev->link_list; link; link = link->next) {
-               pci_tolm = find_pci_tolm(link, pci_tolm);
+               pci_tolm = my_find_pci_tolm(link, pci_tolm);
        }
 
        // FIXME handle interleaved nodes. If you fix this here, please fix
@@ -1090,6 +1077,10 @@ static void amdfam10_domain_set_resources(device_t dev)
 #endif
        }
 
+#if CONFIG_GFXUMA == 1
+       add_uma_resource(dev, 7);
+#endif
+
        for(link = dev->link_list; link; link = link->next) {
                if (link->children) {
                        assign_resources(link);