Re: understanding an IO question
From: Kumar Gala <hidden>
Date: 2007-02-23 16:12:38
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