Factor out a few commonly duplicated functions from northbridge.c.
[coreboot.git] / src / devices / device_util.c
index c845ecd35d1d8466e1f23a9e7a6625d52ba97f08..2c46884d9e7e0c3e0fd5d5f68f03d72a29a82dd7 100644 (file)
@@ -730,3 +730,47 @@ void show_all_devs_resources(int debug_level, const char* msg)
                        show_one_resource(debug_level, dev, res, "");
        }
 }
+
+void ram_resource(device_t dev, unsigned long index,
+                 unsigned long basek, unsigned long sizek)
+{
+       struct resource *resource;
+
+       if (!sizek)
+               return;
+
+       resource = new_resource(dev, index);
+       resource->base = ((resource_t)basek) << 10;
+       resource->size = ((resource_t)sizek) << 10;
+       resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
+               IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
+}
+
+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;
+}
+
+u32 find_pci_tolm(struct bus *bus)
+{
+       struct resource *min = NULL;
+       u32 tolm;
+
+       search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM,
+                            tolm_test, &min);
+
+       tolm = 0xffffffffUL;
+
+       if (min && tolm > min->base)
+               tolm = min->base;
+
+       return tolm;
+}