Eric,
Please check the northbridge.c attached.
It seems you should modify the e0 before you do the hypertransport_scan_chain. Otherwise you can not access the buses.
YH.
config_busses &= 0x000fc88; config_busses |= (3 << 0) | /* rw enable, no device compare */ (( nodeid & 7) << 4) | (( link & 3 ) << 8) | ((dev->link[link].secondary) << 16) | ((dev->link[link].subordinate) << 24); f1_write_config32(config_reg, config_busses);
#if 1 printk_debug("Hyper transport scan link: %d max: %d\n", link, max); #endif /* Now we can scan all of the subordinate busses i.e. the chain on the hypertranport link */ max = hypertransport_scan_chain(&dev->link[link], max);
YhLu YhLu@tyan.com writes:
Eric,
Please check the northbridge.c attached.
It seems you should modify the e0 before you do the hypertransport_scan_chain. Otherwise you can not access the buses.
Unless I am mistaken that is what f1_write_config32 is doing... config_reg is one of 0xe0, 0xe4, 0xe8, or 0xec
I think the only differences I am seeing are in, amdk8_scan_root_bus and I just unconditionally zero 0xe0 - 0xec where you handle it conditionally
Eric
YH.
config_busses &= 0x000fc88; config_busses |= (3 << 0) | /* rw enable, no device compare */ (( nodeid & 7) << 4) | (( link & 3 ) << 8) | ((dev->link[link].secondary) << 16) | ((dev->link[link].subordinate) << 24); f1_write_config32(config_reg, config_busses);
#if 1 printk_debug("Hyper transport scan link: %d max: %d\n", link, max); #endif /* Now we can scan all of the subordinate busses i.e. the chain on the hypertranport link */ max = hypertransport_scan_chain(&dev->link[link], max);