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 20typedef 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 30extern 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 36extern void puv3_free_dma(int dma_ch); 37 38static inline void puv3_stop_dma(int ch) 39{ 40 writel(readl(DMAC_CONFIG(ch)) & ~DMAC_CONFIG_EN, DMAC_CONFIG(ch)); 41} 42 43static 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