PageRenderTime 21ms CodeModel.GetById 15ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/cris/arch-v10/lib/dmacopy.c

https://bitbucket.org/evzijst/gittest
C | 43 lines | 27 code | 12 blank | 4 comment | 1 complexity | b4a4c4f4b2ab99361bf8b32c5c2faa74 MD5 | raw file
 1/* $Id: dmacopy.c,v 1.1 2001/12/17 13:59:27 bjornw Exp $ 
 2 *
 3 * memcpy for large blocks, using memory-memory DMA channels 6 and 7 in Etrax
 4 */
 5
 6#include <asm/svinto.h>
 7#include <asm/io.h>
 8
 9#define D(x)
10
11void *dma_memcpy(void *pdst,
12		 const void *psrc,
13		 unsigned int pn)
14{
15	static etrax_dma_descr indma, outdma;
16	
17	D(printk("dma_memcpy %d bytes... ", pn));
18
19#if 0
20	*R_GEN_CONFIG = genconfig_shadow = 
21		(genconfig_shadow & ~0x3c0000) |
22		IO_STATE(R_GEN_CONFIG, dma6, intdma7) |
23		IO_STATE(R_GEN_CONFIG, dma7, intdma6);
24#endif
25	indma.sw_len = outdma.sw_len = pn;
26	indma.ctrl = d_eol | d_eop;
27	outdma.ctrl = d_eol;
28	indma.buf = psrc;
29	outdma.buf = pdst;
30
31	*R_DMA_CH6_FIRST = &indma;
32	*R_DMA_CH7_FIRST = &outdma;
33	*R_DMA_CH6_CMD = IO_STATE(R_DMA_CH6_CMD, cmd, start);
34	*R_DMA_CH7_CMD = IO_STATE(R_DMA_CH7_CMD, cmd, start);
35	
36	while(*R_DMA_CH7_CMD == 1) /* wait for completion */ ;
37
38	D(printk("done\n"));
39
40}
41
42
43