diff options
Diffstat (limited to 'arch/unicore32/include/mach/dma.h')
-rw-r--r-- | arch/unicore32/include/mach/dma.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/unicore32/include/mach/dma.h b/arch/unicore32/include/mach/dma.h new file mode 100644 index 00000000000..d655c1b6e08 --- /dev/null +++ b/arch/unicore32/include/mach/dma.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * linux/arch/unicore32/include/mach/dma.h | ||
3 | * | ||
4 | * Code specific to PKUnity SoC and UniCore ISA | ||
5 | * | ||
6 | * Copyright (C) 2001-2010 GUAN Xue-tao | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | #ifndef __MACH_PUV3_DMA_H__ | ||
13 | #define __MACH_PUV3_DMA_H__ | ||
14 | |||
15 | /* | ||
16 | * The PKUnity has six internal DMA channels. | ||
17 | */ | ||
18 | #define MAX_DMA_CHANNELS 6 | ||
19 | |||
20 | typedef enum { | ||
21 | DMA_PRIO_HIGH = 0, | ||
22 | DMA_PRIO_MEDIUM = 1, | ||
23 | DMA_PRIO_LOW = 2 | ||
24 | } puv3_dma_prio; | ||
25 | |||
26 | /* | ||
27 | * DMA registration | ||
28 | */ | ||
29 | |||
30 | extern int puv3_request_dma(char *name, | ||
31 | puv3_dma_prio prio, | ||
32 | void (*irq_handler)(int, void *), | ||
33 | void (*err_handler)(int, void *), | ||
34 | void *data); | ||
35 | |||
36 | extern void puv3_free_dma(int dma_ch); | ||
37 | |||
38 | static inline void puv3_stop_dma(int ch) | ||
39 | { | ||
40 | writel(readl(DMAC_CONFIG(ch)) & ~DMAC_CONFIG_EN, DMAC_CONFIG(ch)); | ||
41 | } | ||
42 | |||
43 | static inline void puv3_resume_dma(int ch) | ||
44 | { | ||
45 | writel(readl(DMAC_CONFIG(ch)) | DMAC_CONFIG_EN, DMAC_CONFIG(ch)); | ||
46 | } | ||
47 | |||
48 | #endif /* __MACH_PUV3_DMA_H__ */ | ||