On Tuesday 15 May 2012, Ben Dooks wrote:
quoted
* Maybe those mappings can be done using a normal ioremap() rather
than in ->map_io(), according to DT informations (but most other ARM
SoC support at the moment seem to do PCI mappings using static
mappings in ->map_io)
That's a very old way of doing it. I'm pretty sure there's no reason to
get these allocated so early.
Well, you might actually still want to use static mappings for any large
areas that are accessed a lot in the kernel, because that lets you
use larger page TLB entries, which ioremap by itself cannot. The host
driver should however still use ioremap, it will now just get the area
that was set up with map_io.
I believe you can probably leave the PCI/PCIe bindings until you have
enough kernel state to do ioremap() or similar and then associate the
necessary mappings with the bus creation.
I think it was Stephen Warrent who told me that he can actually do
a PCI host driver as a loadable module now, with only a few changes
in the ARM core code.
Arnd