hal_cache.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /* SPDX-License-Identifier: BSD-3-Clause */
  2. /*
  3. * Copyright (c) 2020-2021 Rockchip Electronics Co., Ltd.
  4. */
  5. /** @addtogroup RK_HAL_Driver
  6. * @{
  7. */
  8. /** @addtogroup CACHE
  9. * @{
  10. */
  11. #ifndef _HAL_CACHE_H_
  12. #define _HAL_CACHE_H_
  13. #include "hal_def.h"
  14. #include "hal_debug.h"
  15. /***************************** MACRO Definition ******************************/
  16. /** @defgroup CACHE_Exported_Definition_Group1 Basic Definition
  17. * @{
  18. */
  19. /***************************** Structure Definition **************************/
  20. /**
  21. * performance measurement count for icache & dcache
  22. *
  23. */
  24. struct CACHE_PMU_CNT {
  25. uint32_t rdNum; /**< PMU read number counter */
  26. uint32_t wrNum; /**< PMU write number counter */
  27. uint32_t sramRdHit; /**< PMU SRAM hit counter */
  28. uint32_t hbRdHit; /**< PMU hot buffer hit */
  29. uint32_t stbRdHit; /**< PMU store buffer hit */
  30. uint32_t rdHit; /**< PMU read hit counter */
  31. uint32_t wrHit; /**< PMU write hit counter */
  32. uint32_t rdMissPenalty; /**< PMU read miss penalty counter */
  33. uint32_t wrMissPenalty; /**< PMU write miss penalty counter */
  34. uint32_t rdLat; /**< PMU read latency */
  35. uint32_t wrLat; /**< PMU write latency */
  36. };
  37. /** @} */
  38. /********************* Public Function Definition ****************************/
  39. /** @defgroup CACHE_Exported_Functions_Group5 Other Functions
  40. * @attention these APIs allow direct use in the HAL layer
  41. * @{
  42. */
  43. uint32_t HAL_CpuAddrToDmaAddr(uint32_t cpuAddr);
  44. HAL_Status HAL_ICACHE_Enable(void);
  45. HAL_Status HAL_ICACHE_Disable(void);
  46. HAL_Status HAL_ICACHE_Invalidate(void);
  47. HAL_Status HAL_ICACHE_InvalidateByRange(uint32_t address, uint32_t sizeByte);
  48. HAL_Status HAL_ICACHE_EnablePMU(void);
  49. HAL_Status HAL_ICACHE_DisablePMU(void);
  50. HAL_Status HAL_ICACHE_GetPMU(struct CACHE_PMU_CNT *stat);
  51. HAL_Status HAL_ICACHE_EnableInt(void);
  52. HAL_Status HAL_ICACHE_DisableInt(void);
  53. HAL_Check HAL_ICACHE_GetInt(void);
  54. uint32_t HAL_ICACHE_GetErrAddr(void);
  55. HAL_Status HAL_ICACHE_ClearInt(void);
  56. HAL_Status HAL_DCACHE_Enable(void);
  57. HAL_Status HAL_DCACHE_Disable(void);
  58. HAL_Status HAL_DCACHE_Invalidate(void);
  59. HAL_Status HAL_DCACHE_InvalidateByRange(uint32_t address, uint32_t sizeByte);
  60. HAL_Status HAL_DCACHE_CleanByRange(uint32_t address, uint32_t sizeByte);
  61. HAL_Status HAL_DCACHE_CleanInvalidateByRange(uint32_t address, uint32_t sizeByte);
  62. HAL_Status HAL_DCACHE_CleanInvalidate(void);
  63. HAL_Status HAL_DCACHE_EnablePMU(void);
  64. HAL_Status HAL_DCACHE_DisablePMU(void);
  65. HAL_Status HAL_DCACHE_GetPMU(struct CACHE_PMU_CNT *stat);
  66. HAL_Status HAL_DCACHE_EnableInt(void);
  67. HAL_Status HAL_DCACHE_DisableInt(void);
  68. HAL_Check HAL_DCACHE_GetInt(void);
  69. HAL_Status HAL_DCACHE_ClearInt(void);
  70. uint32_t HAL_DCACHE_GetErrAddr(void);
  71. /** @} */
  72. #endif
  73. /** @} */
  74. /** @} */