dma.h 965 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. #define puv3_stop_dma(ch) (DMAC_CONFIG(ch) &= ~DMAC_CONFIG_EN)
  33. #define puv3_resume_dma(ch) (DMAC_CONFIG(ch) |= DMAC_CONFIG_EN)
  34. #endif /* __MACH_PUV3_DMA_H__ */