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/devices/device.c | |
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/devices/device.c')
-rw-r--r-- | src/devices/device.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/devices/device.c b/src/devices/device.c index 289c0766ea..c6dd5fc4ad 100644 --- a/src/devices/device.c +++ b/src/devices/device.c @@ -115,6 +115,9 @@ static void read_resources(struct bus *bus) dev_path(curdev)); continue; } + if (!curdev->enable) { + continue; + } curdev->ops->read_resources(curdev); /* Read in subtractive resources behind the current device */ links = 0; @@ -251,16 +254,12 @@ void compute_allocate_resource( min_align = 0; base = bridge->base; - printk_spew("%s: bus %p, bridge %p, type_mask 0x%x, type 0x%x\n", - __FUNCTION__, - bus, bridge, type_mask, type); - printk_spew("vendor 0x%x device 0x%x class 0x%x \n", - bus->dev->vendor, bus->dev->device, bus->dev->class); - printk_spew("%s compute_allocate_%s: base: %08lx size: %08lx align: %d gran: %d\n", - dev_path(bus->dev), - (bridge->flags & IORESOURCE_IO)? "io": - (bridge->flags & IORESOURCE_PREFETCH)? "prefmem" : "mem", - base, bridge->size, bridge->align, bridge->gran); + printk_spew("%s compute_allocate_%s: base: %08lx size: %08lx align: %d gran: %d\n", + dev_path(bus->dev), + (bridge->flags & IORESOURCE_IO)? "io": + (bridge->flags & IORESOURCE_PREFETCH)? "prefmem" : "mem", + base, bridge->size, bridge->align, bridge->gran); + /* We want different minimum alignments for different kinds of * resources. These minimums are not device type specific @@ -406,6 +405,9 @@ void assign_resources(struct bus *bus) dev_path(curdev)); continue; } + if (!curdev->enable) { + continue; + } curdev->ops->set_resources(curdev); } printk_debug("ASSIGNED RESOURCES, bus %d\n", bus->secondary); @@ -422,6 +424,9 @@ void enable_resources(struct device *dev) dev_path(dev)); return; } + if (!dev->enable) { + return; + } dev->ops->enable_resources(dev); } @@ -444,13 +449,12 @@ void dev_enumerate(void) void dev_configure(void) { struct device *root = &dev_root; - printk_info("%s: Allocating resources...", __FUNCTION__); + printk_info("Allocating resources..."); printk_debug("\n"); root->ops->read_resources(root); - printk_spew("%s: done reading resources...\n", __FUNCTION__); /* Make certain the io devices are allocated somewhere * safe. */ @@ -465,10 +469,8 @@ void dev_configure(void) root->resource[1].flags |= IORESOURCE_SET; // now just set things into registers ... we hope ... root->ops->set_resources(root); - printk_spew("%s: done setting resources...\n", __FUNCTION__); allocate_vga_resource(); - printk_spew("%s: done vga resources...\n", __FUNCTION__); printk_info("done.\n"); } @@ -494,7 +496,7 @@ void dev_initialize(void) printk_info("Initializing devices...\n"); for (dev = all_devices; dev; dev = dev->next) { - if (dev->ops && dev->ops->init) { + if (dev->enable && dev->ops && dev->ops->init) { printk_debug("%s init\n", dev_path(dev)); dev->ops->init(dev); } |