
On Thu, May 21, 2009 at 03:49:29PM -0500, Peter Tyser wrote:
On Thu, 2009-05-21 at 12:37 -0700, Ira Snyder wrote:
On Thu, May 21, 2009 at 12:09:58PM -0500, Peter Tyser wrote:
This patch series attempts to clean up the DMA implementation for the 85xx and 86xx architectures. The changes include:
- consolidate 85xx and 86xx structures and code
- add defines for bitfields
- use proper IO accessors
- add support for arbitrarily large transfer sizes
- rename dma_xfer() to dmacpy() and make dmacpy's prototype similar to memcpy()
The patches are based on the mainline "next" branch.
I've tested the code on MPC8572 and MPC8640-based boards.
I'm not initimately familar with the 83xx platform, but at a glance it looked like the fsl_dma driver could be extended to support it with some ifdeffery.
I've been doing some Linux work with the 83xx DMA controller. The only real differences between the 83xx/85xx controller are the register endianness and snoop bits. The 83xx controller's registers are all little-endian, while the 85xx is all big-endian.
Also, there are some snoop bits that need to be enabled on 83xx as well, in the control register as well as in each descriptor if you're running in chaining mode.
That's everything that I've noticed that is different. I don't have an 85xx/86xx to test anything with, but I'm happy to run some tests on my mpc8349emds if you want to try adding support for 83xx.
Thanks!
I believe some of the register locations are slightly different too, for example the source address on the 85xx is at offset 0x114 while its at 0x110 on the 83xx.
I don't think any 83xx boards currently use the 83xx DMA implementation in cpu/mpc83xx/cpu.c. Before spending any time on the 83xx, is there any good reason to support the 83xx in U-Boot? There would be no users of the updated implementation as is.
I think there is an option for the mpc8349emds to use the DMA controller to initialize the RAM for ECC mode. I tried using it, and it was much slower than using the CPU.
I'll probably end up writing a virtual network driver for U-Boot eventually. In the Linux version, I've used the DMA controller to handle transferring data over PCI. It is much faster than the CPU, but I'll only be transferring a few megabytes from within U-Boot anyway.
In short, having the driver ported to 83xx would make some of my future development easier, but there aren't any serious in-tree users at the moment (to the best of my knowledge).
Ira