dma.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. * The PKUnity has six internal DMA channels.
  16. */
  17. #define MAX_DMA_CHANNELS 6
  18. typedef enum {
  19. DMA_PRIO_HIGH = 0,
  20. DMA_PRIO_MEDIUM = 1,
  21. DMA_PRIO_LOW = 2
  22. } puv3_dma_prio;
  23. /*
  24. * DMA registration
  25. */
  26. extern int puv3_request_dma(char *name,
  27. puv3_dma_prio prio,
  28. void (*irq_handler)(int, void *),
  29. void (*err_handler)(int, void *),
  30. void *data);
  31. extern void puv3_free_dma(int dma_ch);
  32. static inline void puv3_stop_dma(int ch)
  33. {
  34. writel(readl(DMAC_CONFIG(ch)) & ~DMAC_CONFIG_EN, DMAC_CONFIG(ch));
  35. }
  36. static inline void puv3_resume_dma(int ch)
  37. {
  38. writel(readl(DMAC_CONFIG(ch)) | DMAC_CONFIG_EN, DMAC_CONFIG(ch));
  39. }
  40. #endif /* __MACH_PUV3_DMA_H__ */