• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
puv3_stop_dma(int ch)38 static inline void puv3_stop_dma(int ch)
39 {
40 	writel(readl(DMAC_CONFIG(ch)) & ~DMAC_CONFIG_EN, DMAC_CONFIG(ch));
41 }
42 
puv3_resume_dma(int ch)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__ */
49