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 _______________________________________________ Linuxppc-embedded mailing list [email protected] https://ozlabs.org/mailman/listinfo/linuxppc-embedded
