- First stab at running linuxbios without the old static device tree.
Things are close but not quite there yet.
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1681 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
diff --git a/src/include/device/chip.h b/src/include/device/chip.h
deleted file mode 100644
index 5f4e36b..0000000
--- a/src/include/device/chip.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef DEVICE_CHIP_H
-#define DEVICE_CHIP_H
-
-#include <device/path.h>
-#include <device/device.h>
-
-/* chips are arbitrary chips (superio, southbridge, etc.)
- * They have private structures that define chip resources and default
- * settings. They have four externally visible functions for control.
- * They have a generic component which applies to all chips for
- * path, etc.
- */
-
-/* some of the types of resources chips can control */
-#if CONFIG_CHIP_CONFIGURE == 1
-#define CONFIGURE(pass) chip_configure(&static_root, pass)
-#else
-#define CONFIGURE(pass)
-#endif
-
-enum chip_pass {
- CONF_PASS_PRE_CONSOLE,
- CONF_PASS_PRE_PCI,
- CONF_PASS_PRE_DEVICE_ENUMERATE,
- CONF_PASS_PRE_DEVICE_CONFIGURE,
- CONF_PASS_PRE_DEVICE_ENABLE,
- CONF_PASS_PRE_DEVICE_INITIALIZE,
- CONF_PASS_POST_PCI,
- CONF_PASS_PRE_BOOT
-};
-
-
-/* linkages from devices of a type (e.g. superio devices)
- * to the actual physical PCI device. This type is used in an array of
- * structs built by NLBConfig.py. We owe this idea to Plan 9.
- */
-
-struct chip;
-struct device;
-
-/* there is one of these for each TYPE of chip */
-struct chip_control {
- /* This is the print name for debugging */
- char *name;
- void (*enable)(struct chip *, enum chip_pass);
- void (*enumerate)(struct chip *chip);
- void (*enable_dev)(struct device *dev);
-};
-
-struct chip_resource {
- unsigned long flags;
- unsigned long index;
- unsigned long base;
-};
-
-struct chip_device_path {
- struct device_path path;
- unsigned channel;
- int enabled;
- struct chip_resource resource[MAX_RESOURCES];
-};
-
-struct device;
-struct bus;
-
-#ifndef MAX_CHIP_PATHS
-#define MAX_CHIP_PATHS 16
-#endif
-struct chip {
- unsigned link;
- struct chip_control *control; /* for this device */
- struct chip_device_path path[MAX_CHIP_PATHS]; /* can be 0, in which case the default is taken */
- char *configuration; /* can be 0. */
- struct chip *next, *children;
- /* there is one of these for each INSTANCE of a chip */
- void *chip_info; /* the dreaded "void *" */
- /* bus and device links into the device tree */
- struct bus *bus;
- struct device *dev;
-};
-
-extern struct chip static_root;
-extern void chip_configure(struct chip *, enum chip_pass);
-extern void chip_enumerate(struct chip *chip);
-#endif /* DEVICE_CHIP_H */
diff --git a/src/include/device/device.h b/src/include/device/device.h
index c5a18c2..d5d2e8d 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -5,11 +5,18 @@
#include <device/resource.h>
#include <device/path.h>
+
struct device;
typedef struct device * device_t;
struct pci_operations;
struct smbus_bus_operations;
+/* Chip operations */
+struct chip_operations {
+ char *name; /* This is the print name for debugging */
+ void (*enable_dev)(struct device *dev);
+};
+
struct device_operations {
void (*read_resources)(device_t dev);
void (*set_resources)(device_t dev);
@@ -67,7 +74,7 @@
unsigned long rom_address;
struct device_operations *ops;
- struct chip_control *chip_control;
+ struct chip_operations *chip_ops;
void *chip_info;
};
diff --git a/src/include/device/path.h b/src/include/device/path.h
index 9df1d9f..cdb98ee 100644
--- a/src/include/device/path.h
+++ b/src/include/device/path.h
@@ -10,7 +10,7 @@
DEVICE_PATH_I2C,
DEVICE_PATH_APIC,
DEVICE_PATH_PCI_DOMAIN,
- DEVICE_APIC_CLUSTER,
+ DEVICE_PATH_APIC_CLUSTER,
};
struct pci_domain_path
diff --git a/src/include/device/pnp.h b/src/include/device/pnp.h
index 89c0a73..757b240 100644
--- a/src/include/device/pnp.h
+++ b/src/include/device/pnp.h
@@ -4,7 +4,6 @@
#include <stdint.h>
#include <device/device.h>
#include <device/pnp_def.h>
-#include <device/chip.h>
/* Primitive pnp resource manipulation */
void pnp_write_config(device_t dev, uint8_t reg, uint8_t value);
@@ -45,7 +44,7 @@
struct io_info io0, io1, io2, io3;
};
struct resource *pnp_get_resource(device_t dev, unsigned index);
-void pnp_enumerate(struct chip *chip, unsigned functions,
- struct device_operations *ops, struct pnp_info *info);
+void pnp_enable_devices(struct device *dev, struct device_operations *ops,
+ unsigned functions, struct pnp_info *info);
#endif /* DEVICE_PNP_H */
diff --git a/src/include/device/smbus.h b/src/include/device/smbus.h
index 230f061..40e49ee 100644
--- a/src/include/device/smbus.h
+++ b/src/include/device/smbus.h
@@ -4,7 +4,6 @@
#include <stdint.h>
#include <device/device.h>
#include <device/path.h>
-#include <device/chip.h>
#include <device/smbus_def.h>
/* Common smbus bus operations */