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