understanding an IO question
Kumar Gala
galak at kernel.crashing.org
Sat Feb 24 03:11:32 EST 2007
On Feb 23, 2007, at 8:16 AM, Charles Krinke wrote:
>
> Dear Kumar:
>
> Thank you very much for your advice on addressing our PCI device. It
> turned out that the OutboundTranslation windows were the key.
>
> In uboot, I setup two windows to allow accesses to 32bit cpu space
> 0x8400_000 & 0x8800_0000 to be translated to 64bit DAC (Dual Address
> Cycles) at 0x3_0000_0000 & 0x1_0000_0000 respectively, and both the
> 8241
> and 8541 do this quite well.
>
> Once the potar, powbar and other outbound translation address windows
> were reset to the same values in Linux that they had in uboot,
> outbound
> transactions work fine and address the registers and memory in our
> ASIC.
Good to hear.
> Next, I need to study the difference between the DMA engines in the
> 8241
> and 8541 to accomplish a similar mission. This one may be a bit
> trickier
> and you advice would be greatly appreciated.
>
> The 8241 DMA engine understands 64bit DMA in that it has a high
> source
> & destination address register for the upper 32bits of a 64bit
> address.
> Unfortunately, the 8541 does not. It only supports 32bit DMA.
This is doable, however I haven't done it myself.
> So, my assumption is that there is some way to use a different
> outbound
> address translation window and emulate 64bit DMA transactions using
> the
> 32bit DMA engine in the 8541.
Yep. If you have the POTARs setup to access the 64 bit PCI address
space you want than you just DMA to the 'internal' address that the
POTAR is pointing to.
I suggest a simple direct mode test first to make sure everything
appears to be working properly (maybe via hand in u-boot with memory
write commands)
> I don't know if you have studied this part at all, but if you or
> anyone
> would be willing to offer a few hints, I would be appreciative.
- k
More information about the Linuxppc-embedded
mailing list