Commit | Line | Data |
---|---|---|
2f941a1b | 1 | /* |
1da177e4 LT |
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; | |
2f941a1b JN |
15 | |
16 | D(printk(KERN_DEBUG "dma_memcpy %d bytes... ", pn)); | |
1da177e4 LT |
17 | |
18 | #if 0 | |
2f941a1b | 19 | *R_GEN_CONFIG = genconfig_shadow = |
1da177e4 LT |
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); | |
1da177e4 | 34 | |
2f941a1b JN |
35 | while (*R_DMA_CH7_CMD == 1) |
36 | /* wait for completion */; | |
1da177e4 | 37 | |
2f941a1b | 38 | D(printk(KERN_DEBUG "done\n")); |
1da177e4 LT |
39 | } |
40 | ||
41 | ||
42 |