ax_sys_api.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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 _AX_SYS_API_
  11. #define _AX_SYS_API_
  12. #include "ax_global_type.h"
  13. #include "ax_base_type.h"
  14. #include "ax_pool_type.h"
  15. /* flags */
  16. #define AX_MEM_CACHED (1 << 1) /* alloc mem is cached */
  17. #define AX_MEM_NONCACHED (1 << 2) /* alloc mem is not cached */
  18. /*Error Code*/
  19. #define AX_ERR_CMM_ILLEGAL_PARAM 0x800B000A
  20. #define AX_ERR_CMM_NULL_PTR 0x800B000B
  21. #define AX_ERR_CMM_NOTREADY 0x800B0010
  22. #define AX_ERR_CMM_NOMEM 0x800B0018
  23. #define AX_ERR_CMM_MMAP_FAIL 0x800B0080
  24. #define AX_ERR_CMM_MUNMAP_FAIL 0x800B0081
  25. #define AX_ERR_CMM_FREE_FAIL 0x800B0082
  26. #define AX_ERR_CMM_UNKNOWN 0x800B0083
  27. #define AX_ERR_PTS_ILLEGAL_PARAM 0x800B020A
  28. #define AX_ERR_PTS_NULL_PTR 0x800B020B
  29. #define AX_ERR_PTS_NOTREADY 0x800B0210
  30. #define AX_ERR_PTS_NOT_PERM 0x800B0215
  31. #define AX_ERR_LINK_ILLEGAL_PARAM 0x800B030A
  32. #define AX_ERR_LINK_NULL_PTR 0x800B030B
  33. #define AX_ERR_LINK_NOTREADY 0x800B0310
  34. #define AX_ERR_LINK_NOT_SUPPORT 0x800B0314
  35. #define AX_ERR_LINK_NOT_PERM 0x800B0315
  36. #define AX_ERR_LINK_UNEXIST 0x800B0317
  37. #define AX_ERR_LINK_TABLE_FULL 0x800B0380
  38. #define AX_ERR_LINK_TABLE_EMPTY 0x800B0381
  39. #define AX_ERR_LINK_UNKNOWN 0x800B0382
  40. #define AX_ERR_POWER_ILLEGAL_PARAM 0x800B040A
  41. #define AX_ERR_POWER_NULL_PTR 0x800B040B
  42. #define AX_ERR_POWER_NOTREADY 0x800B0410
  43. #define AX_ERR_POWER_NOT_SUPPORT 0x800B0414
  44. #define AX_ERR_POWER_NOT_PERM 0x800B0415
  45. #define AX_ERR_CLK_ILLEGAL_PARAM 0x800B050A
  46. #define AX_ERR_CLK_NOTREADY 0x800B0510
  47. /* PowerManager Notify Callback */
  48. typedef AX_S32 (*NotifyEventCallback)(const AX_NOTIFY_EVENT_E event,AX_VOID * pdata);
  49. #ifdef __cplusplus
  50. extern "C"
  51. {
  52. #endif
  53. AX_S32 AX_SYS_Init(AX_VOID);
  54. AX_S32 AX_SYS_Deinit(AX_VOID);
  55. /* CMM API */
  56. AX_S32 AX_SYS_MemAlloc(AX_U64 *phyaddr, AX_VOID **pviraddr, AX_U32 size, AX_U32 align, const AX_S8 *token);
  57. AX_S32 AX_SYS_MemAllocCached(AX_U64 *phyaddr, AX_VOID **pviraddr, AX_U32 size, AX_U32 align, const AX_S8 *token);
  58. AX_S32 AX_SYS_MemFlushCache(AX_U64 phyaddr, AX_VOID *pviraddr, AX_U32 size);
  59. AX_S32 AX_SYS_MemInvalidateCache(AX_U64 phyaddr, AX_VOID *pviraddr, AX_U32 size);
  60. AX_S32 AX_SYS_MemFree(AX_U64 phyaddr, AX_VOID *pviraddr);
  61. AX_VOID * AX_SYS_Mmap(AX_U64 phyaddr, AX_U32 size);
  62. AX_VOID * AX_SYS_MmapCache(AX_U64 phyaddr, AX_U32 size);
  63. AX_VOID * AX_SYS_MmapFast(AX_U64 phyaddr, AX_U32 size);
  64. AX_VOID * AX_SYS_MmapCacheFast(AX_U64 phyaddr, AX_U32 size);
  65. AX_S32 AX_SYS_Munmap(AX_VOID *pviraddr, AX_U32 size);
  66. AX_S32 AX_SYS_MflushCache(AX_U64 phyaddr, AX_VOID *pviraddr, AX_U32 size);
  67. AX_S32 AX_SYS_MinvalidateCache(AX_U64 phyaddr, AX_VOID *pviraddr, AX_U32 size);
  68. AX_S32 AX_SYS_MemGetBlockInfoByPhy(AX_U64 phyaddr, AX_S32 *pmemType, AX_VOID **pviraddr, AX_U32 *pblockSize);
  69. AX_S32 AX_SYS_MemGetBlockInfoByVirt(AX_VOID *pviraddr, AX_U64 *phyaddr, AX_S32 *pmemType);
  70. AX_S32 AX_SYS_MemGetPartitionInfo(AX_CMM_PARTITION_INFO_T *pCmmPartitionInfo);
  71. AX_S32 AX_SYS_MemSetConfig(const AX_MOD_INFO_S *pModInfo,const AX_S8 *pPartitionName);
  72. AX_S32 AX_SYS_MemGetConfig(const AX_MOD_INFO_S *pModInfo,AX_S8 *pPartitionName);
  73. /* LINK API */
  74. AX_S32 AX_SYS_Link(const AX_MOD_INFO_S *pSrc,const AX_MOD_INFO_S *pDest);
  75. AX_S32 AX_SYS_UnLink(const AX_MOD_INFO_S *pSrc,const AX_MOD_INFO_S *pDest);
  76. AX_S32 AX_SYS_GetLinkByDest(const AX_MOD_INFO_S *pDest,AX_MOD_INFO_S *pSrc);
  77. AX_S32 AX_SYS_GetLinkBySrc(const AX_MOD_INFO_S *pSrc,AX_LINK_DEST_S *pLinkDest);
  78. /* POOL API */
  79. AX_S32 AX_POOL_SetConfig(const AX_POOL_FLOORPLAN_T *pPoolFloorPlan);
  80. AX_S32 AX_POOL_GetConfig (AX_POOL_FLOORPLAN_T *pPoolFloorPlan);
  81. AX_S32 AX_POOL_Init (AX_VOID);
  82. AX_S32 AX_POOL_Exit (AX_VOID);
  83. AX_POOL AX_POOL_CreatePool(AX_POOL_CONFIG_T *pPoolConfig);
  84. AX_S32 AX_POOL_MarkDestroyPool(AX_POOL PoolId);
  85. AX_BLK AX_POOL_GetBlock(AX_POOL PoolId, AX_U64 BlkSize,const AX_S8 *pPartitionName);
  86. AX_S32 AX_POOL_ReleaseBlock(AX_BLK BlockId);
  87. AX_BLK AX_POOL_PhysAddr2Handle(AX_U64 PhysAddr);
  88. AX_U64 AX_POOL_Handle2PhysAddr(AX_BLK BlockId);
  89. AX_U64 AX_POOL_Handle2MetaPhysAddr(AX_BLK BlockId);
  90. AX_POOL AX_POOL_Handle2PoolId(AX_BLK BlockId);
  91. AX_S32 AX_POOL_MmapPool(AX_POOL PoolId);
  92. AX_S32 AX_POOL_MunmapPool(AX_POOL PoolId);
  93. AX_S32 AX_POOL_FlushCache(AX_U64 PhysAddr, AX_VOID *pVirAddr,AX_U32 Size);
  94. AX_VOID *AX_POOL_GetBlockVirAddr(AX_BLK BlockId);
  95. AX_VOID *AX_POOL_GetMetaVirAddr(AX_BLK BlockId);
  96. AX_S32 AX_POOL_IncreaseRefCnt (AX_BLK BlockId,AX_MOD_ID_E ModId);
  97. AX_S32 AX_POOL_DecreaseRefCnt (AX_BLK BlockId,AX_MOD_ID_E ModId);
  98. /* PTS API */
  99. AX_S32 AX_SYS_GetCurPTS(AX_U64 *pu64CurPTS);
  100. AX_S32 AX_SYS_InitPTSBase(AX_U64 u64PTSBase);
  101. AX_S32 AX_SYS_SyncPTS(AX_U64 u64PTSBase);
  102. /* LOG API */
  103. AX_S32 AX_SYS_SetLogLevel(AX_LOG_LEVEL_E target); /* local config */
  104. AX_S32 AX_SYS_SetLogTarget(AX_LOG_TARGET_E target); /* local config */
  105. AX_S32 AX_SYS_EnableTimestamp(AX_BOOL enable); /* global config */
  106. /* PM API */
  107. AX_S32 AX_SYS_Sleep(AX_VOID);
  108. AX_S32 AX_SYS_WakeLock(const AX_MOD_ID_E ModId);
  109. AX_S32 AX_SYS_WakeUnlock(const AX_MOD_ID_E ModId);
  110. AX_S32 AX_SYS_RegisterEventCb(const AX_MOD_ID_E ModId,NotifyEventCallback pFunction,AX_VOID * pData);
  111. AX_S32 AX_SYS_UnregisterEventCb(const AX_MOD_ID_E ModId);
  112. /* CLOCK API */
  113. AX_S32 AX_SYS_CLK_SetLevel(AX_SYS_CLK_LEVEL_E nLevel);
  114. AX_SYS_CLK_LEVEL_E AX_SYS_CLK_GetLevel(AX_VOID);
  115. AX_S32 AX_SYS_CLK_Single_RateSet(AX_SYS_CLK_ID_E clkId, AX_ULONG rate);
  116. #ifdef __cplusplus
  117. }
  118. #endif
  119. #endif //_AX_SYS_API_