1 /* 2 * Copyright 2021-2023 NXP 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 #ifndef FSL_CACHE_LPCAC_H_ 8 #define FSL_CACHE_LPCAC_H_ 9 10 #include "fsl_common.h" 11 12 /*! 13 * @addtogroup cache_lpcac 14 * @{ 15 */ 16 17 /******************************************************************************* 18 * Definitions 19 ******************************************************************************/ 20 21 /*! @name Driver version */ 22 /*@{*/ 23 /*! @brief cache driver version */ 24 #define FSL_CACHE_LPCAC_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) 25 /*@}*/ 26 /******************************************************************************* 27 * API 28 ******************************************************************************/ 29 30 #if defined(__cplusplus) 31 extern "C" { 32 #endif 33 34 /*! 35 * @name cache control for the L1 low power cache controller 36 *@{ 37 */ 38 39 /*! 40 * @brief Enables the processor code bus cache. 41 * 42 */ L1CACHE_EnableCodeCache(void)43static inline void L1CACHE_EnableCodeCache(void) 44 { 45 SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_DIS_LPCAC_MASK; 46 } 47 48 /*! 49 * @brief Disables the processor code bus cache. 50 * 51 */ L1CACHE_DisableCodeCache(void)52static inline void L1CACHE_DisableCodeCache(void) 53 { 54 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_DIS_LPCAC_MASK; 55 } 56 57 /*! 58 * @brief Clears cache. 59 * 60 */ L1CACHE_InvalidateCodeCache(void)61static inline void L1CACHE_InvalidateCodeCache(void) 62 { 63 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_CLR_LPCAC_MASK; 64 } 65 66 /*! 67 * @brief Enables allocation. 68 * 69 */ L1CACHE_EnableAllocation(void)70static inline void L1CACHE_EnableAllocation(void) 71 { 72 SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_FRC_NO_ALLOC_MASK; 73 } 74 75 /*! 76 * @brief Disables allocation. 77 * 78 */ L1CACHE_DisableAllocation(void)79static inline void L1CACHE_DisableAllocation(void) 80 { 81 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_FRC_NO_ALLOC_MASK; 82 } 83 84 /*! 85 * @brief Enables parity. 86 * 87 */ L1CACHE_EnableParity(void)88static inline void L1CACHE_EnableParity(void) 89 { 90 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_PARITY_MISS_EN_MASK; 91 } 92 93 /*! 94 * @brief Disable parity. 95 * 96 */ L1CACHE_DisableParity(void)97static inline void L1CACHE_DisableParity(void) 98 { 99 SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_PARITY_MISS_EN_MASK; 100 } 101 102 #if defined(FSL_FEATURE_LPCAC_SUPPORT_WRITE_BUFFER_CONTROL) && FSL_FEATURE_LPCAC_SUPPORT_WRITE_BUFFER_CONTROL 103 /*! 104 * @brief Enables write through buffer. 105 * 106 */ L1CACHE_EnableWriteBuffer(void)107static inline void L1CACHE_EnableWriteBuffer(void) 108 { 109 SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_DIS_LPCAC_WTBF_MASK; 110 } 111 112 /*! 113 * @brief Disables write through buffer. 114 * 115 */ L1CACHE_DisableWriteBuffer(void)116static inline void L1CACHE_DisableWriteBuffer(void) 117 { 118 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_DIS_LPCAC_WTBF_MASK; 119 } 120 121 /*! 122 * @brief Limits write through buffer. 123 * 124 */ L1CACHE_LimitWriteBuffer(void)125static inline void L1CACHE_LimitWriteBuffer(void) 126 { 127 SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_LIM_LPCAC_WTBF_MASK; 128 } 129 130 /*! 131 * @brief Unlimits write through buffer. 132 * 133 */ L1CACHE_UnlimitParity(void)134static inline void L1CACHE_UnlimitParity(void) 135 { 136 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_LIM_LPCAC_WTBF_MASK; 137 } 138 139 /*! 140 * @brief Enables parity error report. 141 * 142 */ L1CACHE_EnableParityErrorReport(void)143static inline void L1CACHE_EnableParityErrorReport(void) 144 { 145 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_PARITY_FAULT_EN_MASK; 146 } 147 148 /*! 149 * @brief Disables parity error report. 150 * 151 */ L1CACHE_DisableParityErrorReport(void)152static inline void L1CACHE_DisableParityErrorReport(void) 153 { 154 SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_PARITY_FAULT_EN_MASK; 155 } 156 157 /*! 158 * @brief Enables XOM(eXecute-Only-Memory) control. 159 * 160 */ L1CACHE_EnableXOMControl(void)161static inline void L1CACHE_EnableXOMControl(void) 162 { 163 SYSCON->LPCAC_CTRL |= SYSCON_LPCAC_CTRL_LPCAC_XOM_MASK; 164 } 165 166 /*! 167 * @brief Disables XOM(eXecute-Only-Memory) control. 168 * 169 */ L1CACHE_DisableXOMControl(void)170static inline void L1CACHE_DisableXOMControl(void) 171 { 172 SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_LPCAC_XOM_MASK; 173 } 174 #endif 175 176 /*@}*/ 177 178 #if defined(__cplusplus) 179 } 180 #endif 181 182 /*! @}*/ 183 184 #endif /* FSL_CACHE_LPCAC_H_*/ 185