To DMA or not to DMA
Swarthout Edward L-SWARTHOU
ed.swarthout at freescale.com
Sat Mar 3 06:28:09 EST 2007
It could be a lot of other things, but I see two things wrong:
> From: Charles Krinke
...
> origPotar = readl(POTAR2) //save outbound address translation
> writel(0x00040000, SATR0) //source attribute for normal read/write
> writel(0x00040000, DATR0) //dest attribute for normal read/write
> writel(destHigh32bits >> 8, POTAR2) //put address into window conside
> writel(destLow32bits, DAR0) //setup the destination address register
> writel(sourceLow32bits, SAR0) //setup the source address register
> writel(size, BCR0) //setup the number of words to transfer
Add a sync here to ensure the previous stores are out of the cpu.
> writel(1, MRx[CS]) //trigger the DMA to go
> writel(origPotar, POTAR2) //restor outbound address translation
Don't destroy the outbound window brefore the dma is complete!
> And I would expect the DMA to work, but it doesn't. Can someone help
me
> get my mind around how the DMA in the 8541 is supposed to work?
-EdS
More information about the Linuxppc-embedded
mailing list