DMA take 4

From: Charles Krinke <hidden>
Date: 2007-03-07 15:20:29

I have gotten to the point where u-boot performs dma transactions
repeatedly and reliably with the 8541 and have moved back to my Linux
driver.

When I complete the DMA transaction in the Linux driver, the SR0
registers tends to have 0x00000024 in it, meaning SR0[CH] & SR0[CB] are
both set and MR0[CS] is set.

I start out with:

Set SR0   to 0xFFFF_FFFF
Set SATR0 to 0x0005_0000
Set DATR0 to 0x0005_0000
Set MR0   to 0x0F03_C404
Set SAR0 to the physical address in local memory
Set DAR0 to the physical address of the PCI window at 0x8800_0000 which
is been previously setup with POTAR2, POWAR2 & POWBAR2.

It seems that the DMA transaction in Linux, using the same 8541 register
settings as are in u-boot is not completing.

So, this leads me to wondering about ioremap_nocache() perhaps. Although
here, I think I want physical addresses for the source and destination
of the DMA.

What other things can I look into to understand why a DMA in Linux using
the 8541 is going awry?

Charles
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help