Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / unicore32 / include / mach / dma.h
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__ */