DMA的demo
static void fsl_dma_test_callback(void *dma_async_param)
{
struct completion *cmp = dma_async_param;
printk( KERN_ERR "dma transfer done, end=%lu\n", jiffies );
complete(cmp);
}
static int fsl_dma_self_test(struct dma_chan *chan)
{
int i;
u8 *src;
u8 *dest;
struct dma_device *dma = chan->device;
struct device *dev = dma->dev;
struct dma_chan* dma_chan = chan;
struct dma_async_tx_descriptor *tx;
dma_addr_t dma_dest, dma_src;
dma_cookie_t cookie;
int err = 0;
struct completion cmp;
unsigned long tmo;
unsigned long flags;
u32 test_size = 1024*1024*4u;
src = kzalloc(sizeof(u8) * test_size, GFP_KERNEL);
if (!src)
return -ENOMEM;
dest = kzalloc(sizeof(u8) * test_size, GFP_KERNEL);
if (!dest) {
kfree(src);
return -ENOMEM;
}
/* Fill in src buffer */
for (i = 0; i < test_size; i+