dma_sun4i.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * (C) Copyright 2015 Roy Spliet <rspliet@ultimaker.com>
  4. */
  5. #ifndef _SUNXI_DMA_SUN4I_H
  6. #define _SUNXI_DMA_SUN4I_H
  7. struct sunxi_dma_cfg
  8. {
  9. u32 ctl; /* 0x00 Control */
  10. u32 src_addr; /* 0x04 Source address */
  11. u32 dst_addr; /* 0x08 Destination address */
  12. u32 bc; /* 0x0C Byte counter */
  13. u32 res0[2];
  14. u32 ddma_para; /* 0x18 extra parameter (dedicated DMA only) */
  15. u32 res1;
  16. };
  17. struct sunxi_dma
  18. {
  19. u32 irq_en; /* 0x000 IRQ enable */
  20. u32 irq_pend; /* 0x004 IRQ pending */
  21. u32 auto_gate; /* 0x008 auto gating */
  22. u32 res0[61];
  23. struct sunxi_dma_cfg ndma[8]; /* 0x100 Normal DMA */
  24. u32 res1[64];
  25. struct sunxi_dma_cfg ddma[8]; /* 0x300 Dedicated DMA */
  26. };
  27. enum ddma_drq_type {
  28. DDMA_DST_DRQ_SRAM = 0,
  29. DDMA_SRC_DRQ_SRAM = 0,
  30. DDMA_DST_DRQ_SDRAM = 1,
  31. DDMA_SRC_DRQ_SDRAM = 1,
  32. DDMA_DST_DRQ_PATA = 2,
  33. DDMA_SRC_DRQ_PATA = 2,
  34. DDMA_DST_DRQ_NAND = 3,
  35. DDMA_SRC_DRQ_NAND = 3,
  36. DDMA_DST_DRQ_USB0 = 4,
  37. DDMA_SRC_DRQ_USB0 = 4,
  38. DDMA_DST_DRQ_ETHERNET_MAC_TX = 6,
  39. DDMA_SRC_DRQ_ETHERNET_MAC_RX = 7,
  40. DDMA_DST_DRQ_SPI1_TX = 8,
  41. DDMA_SRC_DRQ_SPI1_RX = 9,
  42. DDMA_DST_DRQ_SECURITY_SYS_TX = 10,
  43. DDMA_SRC_DRQ_SECURITY_SYS_RX = 11,
  44. DDMA_DST_DRQ_TCON0 = 14,
  45. DDMA_DST_DRQ_TCON1 = 15,
  46. DDMA_DST_DRQ_MSC = 23,
  47. DDMA_SRC_DRQ_MSC = 23,
  48. DDMA_DST_DRQ_SPI0_TX = 26,
  49. DDMA_SRC_DRQ_SPI0_RX = 27,
  50. DDMA_DST_DRQ_SPI2_TX = 28,
  51. DDMA_SRC_DRQ_SPI2_RX = 29,
  52. DDMA_DST_DRQ_SPI3_TX = 30,
  53. DDMA_SRC_DRQ_SPI3_RX = 31,
  54. };
  55. #define SUNXI_DMA_CTL_SRC_DRQ(a) ((a) & 0x1f)
  56. #define SUNXI_DMA_CTL_MODE_IO (1 << 5)
  57. #define SUNXI_DMA_CTL_SRC_DATA_WIDTH_32 (2 << 9)
  58. #define SUNXI_DMA_CTL_DST_DRQ(a) (((a) & 0x1f) << 16)
  59. #define SUNXI_DMA_CTL_DST_DATA_WIDTH_32 (2 << 25)
  60. #define SUNXI_DMA_CTL_TRIGGER (1 << 31)
  61. #endif /* _SUNXI_DMA_SUN4I_H */