Li-Ta Lo ollie@lanl.gov writes:
Eric,
From my memory of the LXNI visit, the pci_domain represents different
ways to access PCI CS (0xcf8, 0xcfc). So the very low level of PCI access method will be different depends on the domain. Now the question is why not the pci_set_method() a device method of the PCI_DOMAIN device ? It is in the hardwarmain() now.
Because no one has done the work :)
The immediate reason for introducing the concept was so that we would not need to override the root device methods, as chipsets have different requirements when scanning their busses.
pci_set_method is not something that we really want as a method. Because if we know what the hardware is we don't need to auto-detect the method. Although having scanbus call pci_set_method may not be the worst way to go.
I suspect what we want is a pci_read/write_config... set of methods that the code will keep looking to parent busses to provide if the current bus not provide the operations.
An alternative is to provide pci_read/write_config.... methods that also take a domain parameter. And just have the northbridge provide those.
The practical case where something like this comes soon is accessing the extra configuration bytes from pci-express devices.
So my immediate suggestion would be to call pci_set_method from the pci_domain's scan_bus method before it does anything. We can worry about the rest later.
Eric