Use lists instead of arrays for resources in devices to reduce memory usage.
Signed-off-by: Myles Watson <mylesgw@gmail.com>
Acked-by: Patrick Georgi <patrick.georgi@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5576 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
diff --git a/src/include/device/device.h b/src/include/device/device.h
index 59dd081..6ac2d10 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -74,11 +74,10 @@
u8 command;
/* Base registers for this device. I/O, MEM and Expansion ROM */
- struct resource resource[MAX_RESOURCES];
- unsigned int resources;
+ struct resource *resource_list;
/* links are (downstream) buses attached to the device, usually a leaf
- * device with no children have 0 buses attached and a bridge has 1 bus
+ * device with no children has 0 buses attached and a bridge has 1 bus
*/
struct bus link[MAX_LINKS];
/* number of buses attached to the device */
@@ -96,6 +95,7 @@
extern struct device dev_root;
extern struct device *all_devices; /* list of all devices */
+extern struct resource *free_resources;
/* Generic device interface functions */
device_t alloc_dev(struct bus *parent, struct device_path *path);
diff --git a/src/include/device/resource.h b/src/include/device/resource.h
index 5452d43..49e2185 100644
--- a/src/include/device/resource.h
+++ b/src/include/device/resource.h
@@ -68,6 +68,7 @@
resource_t base; /* Base address of the resource */
resource_t size; /* Size of the resource */
resource_t limit; /* Largest valid value base + size -1 */
+ struct resource* next; /* Next resource in the list */
unsigned long flags; /* Descriptions of the kind of resource */
unsigned long index; /* Bus specific per device resource id */
unsigned char align; /* Required alignment (log 2) of the resource */