How to get a safe range of PCI addresses?
Oliver Korpilla
okorpil at fh-landshut.de
Tue May 25 19:26:02 EST 2004
Hello!
I'm currently doing development for basic support of a MVME2100 with a
MPC8240 CPU on it, but my question is more general for the PowerPC.
How do I get a range of safe PCI addresses?
By safe I mean:
All these addresses should resolve to PCI bus cycles when accessed, but
not conflict with any device present in the system. Or the other way
round: These addresses must not (!) correspond to any device present.
The purpose is generating cycles a PCI-VME bridge can catch (it stores
in its registers to which addresses it will respond to by satisfying the
requests from VME bus transfers).
I tried allocate_resource(&iomem_resource, ...); , but it does not
actually provide what needed. In order to give meaningful results it
needs to be properly bounded - at least I guess so.
What I am needing is:
1.) a way to discover ranges of addresses, that resolve to PCI accesses,
without a device already occupying that range
2.) a way to reserve and free parts of that space
3.) either the physical address of that space to ioremap_nocache() it or
the virtual address if present
4.) the bus address of that space to store it in the the device registers
Can somebody please explain to me, what the PCI I/O Space is? Does this
correspond to I/O memory?
I attached some /proc info (mostly showing the Ethernet (Tulip) and the
bridge (Tundra Universe)).
Thanks in advance,
Oliver Korpilla
# cat /proc/pci
PCI devices found:
Bus 0, device 13, function 0 (10e3:0000):
Bridge: Tundra Semiconductor Corp. CA91C042 [Universe] (rev 2).
IRQ 21.
Master Capable. Latency=128. Min Gnt=3.
Non-prefetchable 32 bit memory at 0xbffff000 [0xbfffffff].
I/O at 0xbff000 [0xbfffff].
Bus 0, device 14, function 0 (1011:0019):
Ethernet controller: Digital Equipment Corporation DECchip 21142/43
(rev 65).
IRQ 16.
Master Capable. Latency=128. Min Gnt=20.Max Lat=40.
I/O at 0xbfef80 [0xbfefff].
Non-prefetchable 32 bit memory at 0xbfffec00 [0xbfffefff].
# cat proc/iomem
80000000-ffffffff : PCI host bridge
bfffec00-bfffefff : Digital Equipment Corporation DECchip 21142/43
bfffec00-bfffefff : tulip
bffff000-bfffffff : Tundra Semiconductor Corp. CA91C042 [Universe]
# cat proc/ioports
00000000-00bfffff : PCI host bridge
00bfef80-00bfefff : Digital Equipment Corporation DECchip 21142/43
00bfef80-00bfefff : tulip
00bff000-00bfffff : Tundra Semiconductor Corp. CA91C042 [Universe]
ffe10000-ffe10007 : serial(auto)
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list