summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEric Biederman <ebiederm@xmission.com>2003-10-14 02:36:51 +0000
committerEric Biederman <ebiederm@xmission.com>2003-10-14 02:36:51 +0000
commitad1b35a12b724b2083102fce493d4b03937a0cb1 (patch)
tree8dd0803fdd7c0e0740fd3480d8ba87ef6aab495e /src
parentfb3e1edc0003f0f56954ab4f82fe4a290ff9bdb9 (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.c1
-rw-r--r--src/devices/pci_device.c4
-rw-r--r--src/mainboard/amd/solo/Config.lb8
-rw-r--r--src/northbridge/amd/amdk8/northbridge.c10
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 = {