{
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;
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
register "lpt" = "{1}"
end
end
- southbridge amd/amd8151 "amd8151" link 1
- pci 0:0.0
- pci 0:1.0
- end
end
cpu k8 "cpu0"
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);
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 = {