
I think I got the mapping of memory space now, thanks.
A few questions though. I have noted that some boards map the PCI IO space to 0x0 and some use the same address space as the CPU. If I use the CPU address space as PCI IO space I get(in linux): PCI 0000:00 Cannot reserve Legacy IO [0x00-0xfff] I don't understand what is best to do here, stay on 0x0 or move to CPU address space?
PCI IO should normally be at 0 in the "PCI address space" and can be at any CPU physical address.
with CONFIG_PCI_QUIRKS=y Linux prints: PCI: Bus scan for 0000:00 returning with max=00 pci_bus 0000:00: resource 0 io: [0x00-0xfffff] pci_bus 0000:00: resource 1 mem: [0x80000000-0x8fffffff] pci_bus 0000:00: resource 2 mem: [0x90000000-0x9fffffff]
But if I turn off CONFIG_PCI_QUIRKS I get: PCI: Bus scan for 0000:00 returning with max=00 PCI: Cannot allocate resource region 0 of device 0000:00:00.0, will remap PCI: Cannot allocate resource region 2 of device 0000:00:00.0, will remap pci 0000:00:00.0: BAR 2: got res [0x80000000-0x87ffffff] bus [0x80000000-0x87ffffff] flags 0x2002120c pci 0000:00:00.0: BAR 2: moved to bus [0x80000000-0x87ffffff] flags 0x2120c pci 0000:00:00.0: BAR 0: got res [0x90000000-0x901fffff] bus [0x90000000-0x901fffff] flags 0x20020200 pci 0000:00:00.0: BAR 0: moved to bus [0x90000000-0x901fffff] flags 0x20200 pci_bus 0000:00: resource 0 io: [0x00-0xfffff] pci_bus 0000:00: resource 1 mem: [0x80000000-0x8fffffff] pci_bus 0000:00: resource 2 mem: [0x90000000-0x9fffffff]
The BAR ... printout feels a bit off. Why do I need quirks on for a clean boot?
Quirks are required for FSL based PCI controllers. I know I've got a change in current kernels to do:
config FSL_PCI bool select PPC_INDIRECT_PCI select PCI_QUIRKS
- k