summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
-rw-r--r--targets/arima/hdama/Config.kernelimage.lb2
5 files changed, 18 insertions, 7 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 = {
diff --git a/targets/arima/hdama/Config.kernelimage.lb b/targets/arima/hdama/Config.kernelimage.lb
index 8022ba6233..a9347233db 100644
--- a/targets/arima/hdama/Config.kernelimage.lb
+++ b/targets/arima/hdama/Config.kernelimage.lb
@@ -100,4 +100,4 @@ romimage "fallback"
# payload /usr/share/etherboot/5.1.9pre2-lnxi-lb/tg3--ide_disk.zelf
end
-buildrom ROM_SIZE "fallback"
+buildrom ./luxbios.rom ROM_SIZE "fallback"