diff options
author | Eric Biederman <ebiederm@xmission.com> | 2003-10-14 02:36:51 +0000 |
---|---|---|
committer | Eric Biederman <ebiederm@xmission.com> | 2003-10-14 02:36:51 +0000 |
commit | ad1b35a12b724b2083102fce493d4b03937a0cb1 (patch) | |
tree | 8dd0803fdd7c0e0740fd3480d8ba87ef6aab495e /src | |
parent | fb3e1edc0003f0f56954ab4f82fe4a290ff9bdb9 (diff) |
- Minor bugfixes
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1215 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/hypertransport.c | 1 | ||||
-rw-r--r-- | src/devices/pci_device.c | 4 | ||||
-rw-r--r-- | src/mainboard/amd/solo/Config.lb | 8 | ||||
-rw-r--r-- | src/northbridge/amd/amdk8/northbridge.c | 10 |
4 files changed, 17 insertions, 6 deletions
diff --git a/src/devices/hypertransport.c b/src/devices/hypertransport.c index 326f343662..ba57bc830e 100644 --- a/src/devices/hypertransport.c +++ b/src/devices/hypertransport.c @@ -14,6 +14,7 @@ static device_t ht_scan_get_devs(device_t *old_devices) first = *old_devices; last = first; while(last && last->sibling && + (last->sibling->path.type == DEVICE_PATH_PCI) && (last->sibling->path.u.pci.devfn > last->path.u.pci.devfn)) { last = last->sibling; } diff --git a/src/devices/pci_device.c b/src/devices/pci_device.c index 031d855fbf..ffa420739a 100644 --- a/src/devices/pci_device.c +++ b/src/devices/pci_device.c @@ -475,6 +475,10 @@ static struct device *pci_scan_get_dev(struct device **list, unsigned int devfn) { struct device *dev = 0; for(; *list; list = &(*list)->sibling) { + if ((*list)->path.type != DEVICE_PATH_PCI) { + printk_err("child %s not a pci device\n", dev_path(*list)); + continue; + } if ((*list)->path.u.pci.devfn == devfn) { /* Unlink from the list */ dev = *list; diff --git a/src/mainboard/amd/solo/Config.lb b/src/mainboard/amd/solo/Config.lb index 8a43951eb6..70082ed124 100644 --- a/src/mainboard/amd/solo/Config.lb +++ b/src/mainboard/amd/solo/Config.lb @@ -228,6 +228,10 @@ northbridge amd/amdk8 "mc0" pci 0:18.1 pci 0:18.2 pci 0:18.3 + southbridge amd/amd8151 "amd8151" link 0 + pci 0:0.0 + pci 0:1.0 + end southbridge amd/amd8111 "amd8111" link 0 pci 0:0.0 pci 0:1.0 on @@ -256,10 +260,6 @@ northbridge amd/amdk8 "mc0" register "lpt" = "{1}" end end - southbridge amd/amd8151 "amd8151" link 1 - pci 0:0.0 - pci 0:1.0 - end end cpu k8 "cpu0" diff --git a/src/northbridge/amd/amdk8/northbridge.c b/src/northbridge/amd/amdk8/northbridge.c index 13845c5a70..aed38557d4 100644 --- a/src/northbridge/amd/amdk8/northbridge.c +++ b/src/northbridge/amd/amdk8/northbridge.c @@ -166,7 +166,7 @@ static unsigned int amdk8_scan_chains(device_t dev, unsigned int max) for(link = 0; link < dev->links; link++) { uint32_t link_type; uint32_t busses, config_busses; - unsigned free_reg, config_reg; + unsigned free_reg, config_reg, other_reg; dev->link[link].cap = 0x80 + (link *0x20); do { link_type = pci_read_config32(dev, dev->link[link].cap + 0x18); @@ -455,7 +455,13 @@ static void amdk8_set_resources(device_t dev) unsigned int amdk8_scan_root_bus(device_t root, unsigned int max) { - return pci_scan_bus(&root->link[0], PCI_DEVFN(0x18, 0), 0xff, max); + unsigned reg; + max = pci_scan_bus(&root->link[0], PCI_DEVFN(0x18, 0), 0xff, max); + /* Unmap all of the other pci busses */ + for(reg = 0xe0; reg <= 0xec; reg += 4) { + f1_write_config32(reg, 0); + } + return max; } static struct device_operations northbridge_operations = { |