PowerQUICC II PCIe dma

David Laight David.Laight at ACULAB.COM
Thu Nov 11 03:40:23 EST 2010


 
> I'm trying to get a ppc 831x to do PCIe dma transfers, PIO transfers
> work ok but are somewhat lethargic (partially due to the slave).

After much soul searching I've finally got it to work!
For the benefit of anyone else...

- The lowest address of the dma descriptor contains the 'command' bits.
- Set 'Next descriptor valid' with a zero pointer to get the chain to
complete.
- Set the dma descriptor status word to zero (might just need 'done'
clear).
- Set the 'snoop for CSB' bit in the descriptor command (errata).

My big problem was that I'd set the descriptor status to 0xdeadbeef in
order to detect writes :-(

I also used the st_le32() and ld_le32() defines from
arch/powerpc/include/asm/swab.h with explicit iosync() requests
rather than the out_le32() and in_le32() from io.h.
The latter (especially in_le32()) contain unwanted slow instructions.

Getting the correct swab.h included was a problem in itself!

	David




More information about the Linuxppc-dev mailing list