Merge remote-tracking branch 'moduleh/module.h-split'
[linux-2.6/next.git] / arch / unicore32 / include / mach / dma.h
blobd655c1b6e083dd491343850365289f5ea11071e5
1 /*
2 * linux/arch/unicore32/include/mach/dma.h
4 * Code specific to PKUnity SoC and UniCore ISA
6 * Copyright (C) 2001-2010 GUAN Xue-tao
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.
12 #ifndef __MACH_PUV3_DMA_H__
13 #define __MACH_PUV3_DMA_H__
16 * The PKUnity has six internal DMA channels.
18 #define MAX_DMA_CHANNELS 6
20 typedef enum {
21 DMA_PRIO_HIGH = 0,
22 DMA_PRIO_MEDIUM = 1,
23 DMA_PRIO_LOW = 2
24 } puv3_dma_prio;
27 * DMA registration
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);
36 extern void puv3_free_dma(int dma_ch);
38 static inline void puv3_stop_dma(int ch)
40 writel(readl(DMAC_CONFIG(ch)) & ~DMAC_CONFIG_EN, DMAC_CONFIG(ch));
43 static inline void puv3_resume_dma(int ch)
45 writel(readl(DMAC_CONFIG(ch)) | DMAC_CONFIG_EN, DMAC_CONFIG(ch));
48 #endif /* __MACH_PUV3_DMA_H__ */