1 /*
2  * Copyright 2021 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 #ifndef _FSL_CACHE_H_
8 #define _FSL_CACHE_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_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
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)43 static 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)52 static 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)61 static 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)70 static 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)79 static 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)88 static 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)97 static inline void L1CACHE_DisableParity(void)
98 {
99     SYSCON->LPCAC_CTRL &= ~SYSCON_LPCAC_CTRL_PARITY_MISS_EN_MASK;
100 }
101 
102 /*@}*/
103 
104 #if defined(__cplusplus)
105 }
106 #endif
107 
108 /*! @}*/
109 
110 #endif /* _FSL_CACHE_H_*/
111