diff options
author | Eric Biederman <ebiederm@xmission.com> | 2003-10-11 06:20:25 +0000 |
---|---|---|
committer | Eric Biederman <ebiederm@xmission.com> | 2003-10-11 06:20:25 +0000 |
commit | 83b991afff40e12a8b6756af06a472842edb1a66 (patch) | |
tree | a441ff0d88afcb0a07cf22dc3653db3e07a05c98 /src/include/device | |
parent | 080038bfbd8fdf08bac12476a3789495e6f705ca (diff) |
- 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
Diffstat (limited to 'src/include/device')
-rw-r--r-- | src/include/device/chip.h | 3 | ||||
-rw-r--r-- | src/include/device/device.h | 4 | ||||
-rw-r--r-- | src/include/device/path.h | 2 |
3 files changed, 8 insertions, 1 deletions
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; }; |