From 83b991afff40e12a8b6756af06a472842edb1a66 Mon Sep 17 00:00:00 2001 From: Eric Biederman Date: Sat, 11 Oct 2003 06:20:25 +0000 Subject: - O2, enums, and switch statements work in romcc - Support for compiling romcc on non x86 platforms - new romc options -msse and -mmmx for specifying extra registers to use - Bug fixes to device the device disable/enable framework and an amd8111 implementation - Move the link specification to the chip specification instead of the path - Allow specifying devices with internal bridges. - Initial via epia support - Opteron errata fixes git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1200 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/include/device/chip.h | 3 +++ src/include/device/device.h | 4 +++- src/include/device/path.h | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src/include/device') diff --git a/src/include/device/chip.h b/src/include/device/chip.h index a98625a7ab..dc078a96b7 100644 --- a/src/include/device/chip.h +++ b/src/include/device/chip.h @@ -49,6 +49,7 @@ enum chip_pass { */ struct chip; +struct device; /* there is one of these for each TYPE of chip */ struct chip_control { @@ -56,6 +57,7 @@ struct chip_control { char *name; void (*enable)(struct chip *, enum chip_pass); void (*enumerate)(struct chip *chip); + void (*enable_dev)(struct device *dev); }; @@ -72,6 +74,7 @@ struct bus; #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. */ diff --git a/src/include/device/device.h b/src/include/device/device.h index e7b0317db3..1b2b0169dc 100644 --- a/src/include/device/device.h +++ b/src/include/device/device.h @@ -35,6 +35,7 @@ struct bus { * combination: */ +struct chip; struct device { struct bus * bus; /* bus this device is on */ device_t sibling; /* next device on this bus */ @@ -72,6 +73,7 @@ struct device { unsigned long rom_address; struct device_operations *ops; + struct chip *chip; }; extern struct device dev_root; /* root bus */ @@ -94,7 +96,7 @@ extern void enumerate_static_device(void); extern const char *dev_path(device_t dev); /* Helper functions */ -device_t alloc_find_dev(struct bus *bus, struct device_path *path); +device_t alloc_find_dev(struct bus *parent, struct device_path *path); device_t dev_find_device (unsigned int vendor, unsigned int device, device_t from); device_t dev_find_class (unsigned int class, device_t from); device_t dev_find_slot (unsigned int bus, unsigned int devfn); diff --git a/src/include/device/path.h b/src/include/device/path.h index cf89a68466..20d76d1bbe 100644 --- a/src/include/device/path.h +++ b/src/include/device/path.h @@ -3,6 +3,7 @@ enum device_path_type { DEVICE_PATH_NONE = 0, + DEVICE_PATH_ROOT, DEVICE_PATH_PCI, DEVICE_PATH_PNP, DEVICE_PATH_I2C, @@ -10,6 +11,7 @@ enum device_path_type { struct pci_path { + unsigned bus; unsigned devfn; }; -- cgit v1.2.3