| Jesper Nilsson | 2f941a1 | 2010-05-25 14:55:54 +0200 | [diff] [blame] | 1 | /* | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 |  * memcpy for large blocks, using memory-memory DMA channels 6 and 7 in Etrax | 
 | 3 |  */ | 
 | 4 |  | 
 | 5 | #include <asm/svinto.h> | 
 | 6 | #include <asm/io.h> | 
 | 7 |  | 
 | 8 | #define D(x) | 
 | 9 |  | 
 | 10 | void *dma_memcpy(void *pdst, | 
 | 11 | 		 const void *psrc, | 
 | 12 | 		 unsigned int pn) | 
 | 13 | { | 
 | 14 | 	static etrax_dma_descr indma, outdma; | 
| Jesper Nilsson | 2f941a1 | 2010-05-25 14:55:54 +0200 | [diff] [blame] | 15 |  | 
 | 16 | 	D(printk(KERN_DEBUG "dma_memcpy %d bytes... ", pn)); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 |  | 
 | 18 | #if 0 | 
| Jesper Nilsson | 2f941a1 | 2010-05-25 14:55:54 +0200 | [diff] [blame] | 19 | 	*R_GEN_CONFIG = genconfig_shadow = | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 | 		(genconfig_shadow & ~0x3c0000) | | 
 | 21 | 		IO_STATE(R_GEN_CONFIG, dma6, intdma7) | | 
 | 22 | 		IO_STATE(R_GEN_CONFIG, dma7, intdma6); | 
 | 23 | #endif | 
 | 24 | 	indma.sw_len = outdma.sw_len = pn; | 
 | 25 | 	indma.ctrl = d_eol | d_eop; | 
 | 26 | 	outdma.ctrl = d_eol; | 
 | 27 | 	indma.buf = psrc; | 
 | 28 | 	outdma.buf = pdst; | 
 | 29 |  | 
 | 30 | 	*R_DMA_CH6_FIRST = &indma; | 
 | 31 | 	*R_DMA_CH7_FIRST = &outdma; | 
 | 32 | 	*R_DMA_CH6_CMD = IO_STATE(R_DMA_CH6_CMD, cmd, start); | 
 | 33 | 	*R_DMA_CH7_CMD = IO_STATE(R_DMA_CH7_CMD, cmd, start); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 34 |  | 
| Jesper Nilsson | 2f941a1 | 2010-05-25 14:55:54 +0200 | [diff] [blame] | 35 | 	while (*R_DMA_CH7_CMD == 1) | 
 | 36 | 		/* wait for completion */; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 37 |  | 
| Jesper Nilsson | 2f941a1 | 2010-05-25 14:55:54 +0200 | [diff] [blame] | 38 | 	D(printk(KERN_DEBUG "done\n")); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 39 | } | 
 | 40 |  | 
 | 41 |  | 
 | 42 |  |