"Gleb O. Raiko" wrote:
> Could somebody, please, explain me what arch/mips/pci* stuff is for? My
> understanding is drivers/pci code shall setup everything except proper
> placing in PCI MEM/IO spaces and irqs. The code in arch/mips/pci*
> contains much more.
> Anyway, drivers/pci code provides enough fixup interface, doesn't it ?
> BTW, if the code in arch/mips/pci* is really required how about
> fine-grained placing, like in sparc64?
Traditionally, people do the following for their PCI subsystem:
0. PCI BIOS or firmware goes through PCI bus and assign resources
1. PCI driver calls pci_scan_bus() to discover all the assigned resources,
including serveral hooks for various fixups.
2. optionally, if some PCI devices have not be assigned any device, either
because there is no PCI BIOS or firware did not do a good job, people would
then call pci_assign_unassigned_resources().
The new pci code is invoked between step 0 and step 1. It totally ignore the
current PCI resource assignment, and does a complete walk-through with new
assignments. Then we move on with step 1, pci_scan_bus().
Because we trust our own PCI assignment, we don't need to do step 2 anymore.
A side benefit of the new code is to allow an easy support for multiple PCI