> In the IDE layer driver, the guard is: > > if (north && north->vendor != PCI_VENDOR_ID_AL) > goto out; > > This means the programming is done iff: > > 1) We find no device at PCI_DEVFN(0,0) > > 2) We find a device and vendor is ALI > > I suspect case #1 triggers on sparc64. The guard in the PATA > driver is: > > north = pci_get_bus_and_slot(0, PCI_DEVFN(0,0)); > if (north && north->vendor == PCI_VENDOR_ID_AL && ali_isa_bridge) { > > which is different. It won't do the programming if we find no > device at PCI_DEVFN(0,0). > > This might be the critical difference, I don't know, just pointing > it out. The logic in pata_ali is the intended logic there (and the comments in drivers/ide match the code in pata_ali but the code doesn't) What docs I have say you need to program the isa enable bit if you are using an ALi north bridge (which always appears at 0,0,0). The other PC case is the Transmeta systems, and in that case the setup is done by the firmware and undocumented entirely. I have exactly zero Sparc64 documentation on the subject. The only Sparc related material I have is the C2/C3 post reset stuff. That *might* be a relevant difference in behaviour for C2 and C3 devices but only with an ALi bridge (ali_c2_c3_postreset) Alan -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html