/* * linux/arch/unicore32/include/mach/dma.h * * Code specific to PKUnity SoC and UniCore ISA * * Copyright (C) 2001-2010 GUAN Xue-tao * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __MACH_PUV3_DMA_H__ #define __MACH_PUV3_DMA_H__ /* * The PKUnity has six internal DMA channels. */ #define MAX_DMA_CHANNELS 6 typedef enum { DMA_PRIO_HIGH = 0, DMA_PRIO_MEDIUM = 1, DMA_PRIO_LOW = 2 } puv3_dma_prio; /* * DMA registration */ extern int puv3_request_dma(char *name, puv3_dma_prio prio, void (*irq_handler)(int, void *), void (*err_handler)(int, void *), void *data); extern void puv3_free_dma(int dma_ch); static inline void puv3_stop_dma(int ch) { writel(readl(DMAC_CONFIG(ch)) & ~DMAC_CONFIG_EN, DMAC_CONFIG(ch)); } static inline void puv3_resume_dma(int ch) { writel(readl(DMAC_CONFIG(ch)) | DMAC_CONFIG_EN, DMAC_CONFIG(ch)); } #endif /* __MACH_PUV3_DMA_H__ */