dma.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #ifndef __ASM_ARCH_DMA_H
  2. #define __ASM_ARCH_DMA_H
  3. #define MAX_DMA_ADDRESS (0xFFFFFFFF)
  4. #define MAX_DMA_CHANNELS (0)
  5. #endif /* !__ASM_ARCH_DMA_H */
  6. #ifndef __MT_DMA_H__
  7. #define __MT_DMA_H__
  8. /* define DMA channels */
  9. enum {
  10. G_DMA_1 = 0, G_DMA_2,
  11. P_DMA_AP_HIF, P_DMA_MD_HIF,
  12. P_DMA_SIM1, P_DMA_SIM2,
  13. P_DMA_IRDA,
  14. P_DMA_UART1_TX, P_DMA_UART1_RX,
  15. P_DMA_UART2_TX, P_DMA_UART2_RX,
  16. P_DMA_UART3_TX, P_DMA_UART3_RX,
  17. };
  18. /* define DMA error code */
  19. enum {
  20. DMA_ERR_CH_BUSY = 1,
  21. DMA_ERR_INVALID_CH = 2,
  22. DMA_ERR_CH_FREE = 3,
  23. DMA_ERR_NO_FREE_CH = 4,
  24. DMA_ERR_INV_CONFIG = 5,
  25. };
  26. /* define DMA ISR callback function's prototype */
  27. typedef void (*DMA_ISR_CALLBACK) (void *);
  28. /*
  29. * NoteXXX: Implementation below is obsolete and deprecated.
  30. */
  31. #include <linux/types.h>
  32. typedef u32 INFO;
  33. typedef enum {
  34. DMA_FALSE = 0,
  35. DMA_TRUE
  36. } DMA_BOOL;
  37. typedef enum {
  38. DMA_OK = 0,
  39. DMA_FAIL
  40. } DMA_STATUS;
  41. typedef enum {
  42. REMAINING_LENGTH = 0, /* not valid for virtual FIFO */
  43. VF_READPTR, /* only valid for virtual FIFO */
  44. VF_WRITEPTR, /* only valid for virtual FIFO */
  45. VF_FFCNT, /* only valid for virtual FIFO */
  46. VF_ALERT, /* only valid for virtual FIFO */
  47. VF_EMPTY, /* only valid for virtual FIFO */
  48. VF_FULL, /* only valid for virtual FIFO */
  49. VF_PORT
  50. } INFO_TYPE;
  51. typedef enum {
  52. GDMA_1 = 0,
  53. GDMA_2,
  54. GDMA_ANY
  55. } DMA_CHAN;
  56. typedef enum {
  57. ALL = 0,
  58. SRC,
  59. DST,
  60. SRC_AND_DST
  61. } DMA_CONF_FLAG;
  62. /* define GDMA configurations */
  63. struct mt_gdma_conf {
  64. unsigned int count;
  65. int iten;
  66. unsigned int burst;
  67. int dfix;
  68. int sfix;
  69. unsigned int limiter;
  70. dma_addr_t src;
  71. dma_addr_t dst;
  72. int wpen;
  73. int wpsd;
  74. unsigned int wplen;
  75. unsigned int wpto;
  76. /* unsigned int cohen; */
  77. unsigned int sec;
  78. unsigned int domain;
  79. void (*isr_cb)(void *);
  80. void *data;
  81. unsigned int LPAE_en;
  82. };
  83. /* burst */
  84. #define DMA_CON_BURST_SINGLE (0x00000000)
  85. #define DMA_CON_BURST_2BEAT (0x00010000)
  86. #define DMA_CON_BURST_3BEAT (0x00020000)
  87. #define DMA_CON_BURST_4BEAT (0x00030000)
  88. #define DMA_CON_BURST_5BEAT (0x00040000)
  89. #define DMA_CON_BURST_6BEAT (0x00050000)
  90. #define DMA_CON_BURST_7BEAT (0x00060000)
  91. #define DMA_CON_BURST_8BEAT (0x00070000)
  92. /* size */
  93. /* keep for backward compatibility only */
  94. #define DMA_CON_SIZE_BYTE (0x00000000)
  95. #define DMA_CON_SIZE_SHORT (0x00000001)
  96. #define DMA_CON_SIZE_LONG (0x00000002)
  97. extern int mt65xx_free_gdma(int channel);
  98. extern int mt65xx_req_gdma(DMA_ISR_CALLBACK cb, void *data);
  99. extern int mt65xx_start_gdma(int channel);
  100. extern int mt65xx_stop_gdma(int channel);
  101. extern void mt_reset_dma(const unsigned int iChannel);
  102. extern void mt65xx_dma_running_status(void);
  103. extern void mt_reset_gdma_conf(const unsigned int iChannel);
  104. extern int mt_config_gdma(int channel, struct mt_gdma_conf *config, DMA_CONF_FLAG flag);
  105. extern int mt_free_gdma(int channel);
  106. extern int mt_req_gdma(DMA_CHAN chan);
  107. extern int mt_start_gdma(int channel);
  108. extern int mt_polling_gdma(int channel, unsigned long timeout);
  109. extern int mt_stop_gdma(int channel);
  110. extern int mt_dump_gdma(int channel);
  111. extern int mt_warm_reset_gdma(int channel);
  112. extern int mt_hard_reset_gdma(int channel);
  113. extern int mt_reset_gdma(int channel);
  114. extern void mt_dma_running_status(void);
  115. /* This channel is used for APDMA Dummy READ.
  116. in MT6592 this channel will be used by Frequency hopping all the time
  117. .Owner: Chieh-Jay Liu
  118. */
  119. #define DFS_APDMA_CHANNEL 0
  120. #endif /* !__MT_DMA_H__ */