ax_sys_dma_api.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /**********************************************************************************
  2. *
  3. * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved.
  4. *
  5. * This source file is the property of Beijing AXera Technology Co., Ltd. and
  6. * may not be copied or distributed in any isomorphic form without the prior
  7. * written consent of Beijing AXera Technology Co., Ltd.
  8. *
  9. **********************************************************************************/
  10. #ifndef _HAL_DMA_H_
  11. #define _HAL_DMA_H_
  12. #include <base_types.h>
  13. #include <ax_base_type.h>
  14. typedef unsigned int AXI_DMA_HAND_T;
  15. #ifndef AX_SUCCESS
  16. #define AX_SUCCESS 0
  17. #endif
  18. enum axi_dma_status {
  19. AX_ERR_DMA_BUSY = 0x80100011,
  20. AX_ERR_DMA_TIMEOUT = 0x80100027,
  21. AX_ERR_DMA_IO_FAIL = 0x80100081,
  22. };
  23. typedef enum axi_dma_xfer_mode {
  24. AX_DMA_TRF_SINGLE = 0,
  25. AX_DMA_TRF_LLI,
  26. } axi_dma_xfer_mode_t;
  27. typedef enum {
  28. AX_DMA_MEM_TO_MEM = 0,
  29. AX_DMA_MEM_TO_DEV,
  30. AX_DMA_DEV_TO_MEM,
  31. } axi_dma_xfer_direction_t;
  32. typedef struct {
  33. u64 src_addr;
  34. u64 dst_addr;
  35. u64 xfer_len;
  36. } AXI_DMA_XFER_T;
  37. typedef struct {
  38. axi_dma_xfer_mode_t xfer_mode;
  39. axi_dma_xfer_direction_t direction;
  40. u32 lli_num;
  41. u32 per_req_num;
  42. } AXI_DMA_CFG_T;
  43. #define AX_LLI_TRF_SIZE 0x1000000
  44. #define AX_DMA_POLL_MODE 0x0
  45. #define AX_DMA_BROKED_MODE 0x1
  46. #define AX_MAX_DMA_CHN 0x2
  47. #define AX_DMA_WAITING_FOREVER (-1)
  48. /* peripheral dma request interface */
  49. #define AX_SSI_DMA_RX_REQ 1
  50. #define AX_SSI_DMA_TX_REQ 0
  51. #define AX_SSI_S_DMA_RX_REQ 10
  52. #define AX_SSI_S_DMA_TX_REQ 11
  53. #define AX_UART0_RX_REQ 45
  54. #define AX_UART0_TX_REQ 46
  55. #define AX_UART1_RX_REQ 47
  56. #define AX_UART1_TX_REQ 48
  57. #define AX_UART2_RX_REQ 49
  58. #define AX_UART2_TX_REQ 50
  59. #define AX_UART3_RX_REQ 51
  60. #define AX_UART3_TX_REQ 52
  61. AXI_DMA_HAND_T AX_HAL_DMA_ChnOpen();
  62. AX_S32 AX_HAL_DMA_ChnCfg(AXI_DMA_HAND_T handle, AXI_DMA_CFG_T *dma_cfg, AXI_DMA_XFER_T *dma_xfer_cfg);
  63. AX_S32 AX_HAL_DMA_ChnStart(AXI_DMA_HAND_T handle);
  64. AX_S32 AX_HAL_DMA_ChnWaitDone(AXI_DMA_HAND_T handle, u32 blocked, u32 timeout);
  65. AX_S32 AX_HAL_DMA_ChnClose(AXI_DMA_HAND_T handle);
  66. AX_S32 AX_HAL_DMA_ChnLliNumCfg(AXI_DMA_HAND_T handle, u32 lli_num);
  67. #endif