1 /**
2  * @file    icc_regs.h
3  * @brief   Registers, Bit Masks and Bit Positions for the ICC Peripheral Module.
4  */
5 
6 /* ****************************************************************************
7  * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining a
10  * copy of this software and associated documentation files (the "Software"),
11  * to deal in the Software without restriction, including without limitation
12  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13  * and/or sell copies of the Software, and to permit persons to whom the
14  * Software is furnished to do so, subject to the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be included
17  * in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22  * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
23  * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25  * OTHER DEALINGS IN THE SOFTWARE.
26  *
27  * Except as contained in this notice, the name of Maxim Integrated
28  * Products, Inc. shall not be used except as stated in the Maxim Integrated
29  * Products, Inc. Branding Policy.
30  *
31  * The mere transfer of this software does not imply any licenses
32  * of trade secrets, proprietary technology, copyrights, patents,
33  * trademarks, maskwork rights, or any other form of intellectual
34  * property whatsoever. Maxim Integrated Products, Inc. retains all
35  * ownership rights.
36  *
37  *
38  *************************************************************************** */
39 
40 #ifndef _ICC_REGS_H_
41 #define _ICC_REGS_H_
42 
43 /* **** Includes **** */
44 #include <stdint.h>
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 #if defined (__ICCARM__)
51   #pragma system_include
52 #endif
53 
54 #if defined (__CC_ARM)
55   #pragma anon_unions
56 #endif
57 /// @cond
58 /*
59     If types are not defined elsewhere (CMSIS) define them here
60 */
61 #ifndef __IO
62 #define __IO volatile
63 #endif
64 #ifndef __I
65 #define __I  volatile const
66 #endif
67 #ifndef __O
68 #define __O  volatile
69 #endif
70 #ifndef __R
71 #define __R  volatile const
72 #endif
73 /// @endcond
74 
75 /* **** Definitions **** */
76 
77 /**
78  * @ingroup     icc
79  * @defgroup    icc_registers ICC_Registers
80  * @brief       Registers, Bit Masks and Bit Positions for the ICC Peripheral Module.
81  * @details Instruction Cache Controller Registers
82  */
83 
84 /**
85  * @ingroup icc_registers
86  * Structure type to access the ICC Registers.
87  */
88 typedef struct {
89     __I  uint32_t cache_id;             /**< <tt>\b 0x0000:</tt> ICC CACHE_ID Register */
90     __I  uint32_t memcfg;               /**< <tt>\b 0x0004:</tt> ICC MEMCFG Register */
91     __R  uint32_t rsv_0x8_0xff[62];
92     __IO uint32_t cache_ctrl;           /**< <tt>\b 0x0100:</tt> ICC CACHE_CTRL Register */
93     __R  uint32_t rsv_0x104_0x6ff[383];
94     __IO uint32_t invalidate;           /**< <tt>\b 0x0700:</tt> ICC INVALIDATE Register */
95 } mxc_icc_regs_t;
96 
97 /* Register offsets for module ICC */
98 /**
99  * @ingroup    icc_registers
100  * @defgroup   ICC_Register_Offsets Register Offsets
101  * @brief      ICC Peripheral Register Offsets from the ICC Base Peripheral Address.
102  * @{
103  */
104  #define MXC_R_ICC_CACHE_ID                 ((uint32_t)0x00000000UL) /**< Offset from ICC Base Address: <tt> 0x0000</tt> */
105  #define MXC_R_ICC_MEMCFG                   ((uint32_t)0x00000004UL) /**< Offset from ICC Base Address: <tt> 0x0004</tt> */
106  #define MXC_R_ICC_CACHE_CTRL               ((uint32_t)0x00000100UL) /**< Offset from ICC Base Address: <tt> 0x0100</tt> */
107  #define MXC_R_ICC_INVALIDATE               ((uint32_t)0x00000700UL) /**< Offset from ICC Base Address: <tt> 0x0700</tt> */
108 /**@} end of group icc_registers */
109 
110 /**
111  * @ingroup  icc_registers
112  * @defgroup ICC_CACHE_ID ICC_CACHE_ID
113  * @brief    Cache ID Register.
114  * @{
115  */
116  #define MXC_F_ICC_CACHE_ID_RELNUM_POS                  0 /**< CACHE_ID_RELNUM Position */
117  #define MXC_F_ICC_CACHE_ID_RELNUM                      ((uint32_t)(0x3FUL << MXC_F_ICC_CACHE_ID_RELNUM_POS)) /**< CACHE_ID_RELNUM Mask */
118 
119  #define MXC_F_ICC_CACHE_ID_PARTNUM_POS                 6 /**< CACHE_ID_PARTNUM Position */
120  #define MXC_F_ICC_CACHE_ID_PARTNUM                     ((uint32_t)(0xFUL << MXC_F_ICC_CACHE_ID_PARTNUM_POS)) /**< CACHE_ID_PARTNUM Mask */
121 
122  #define MXC_F_ICC_CACHE_ID_CCHID_POS                   10 /**< CACHE_ID_CCHID Position */
123  #define MXC_F_ICC_CACHE_ID_CCHID                       ((uint32_t)(0x3FUL << MXC_F_ICC_CACHE_ID_CCHID_POS)) /**< CACHE_ID_CCHID Mask */
124 
125 /**@} end of group ICC_CACHE_ID_Register */
126 
127 /**
128  * @ingroup  icc_registers
129  * @defgroup ICC_MEMCFG ICC_MEMCFG
130  * @brief    Memory Configuration Register.
131  * @{
132  */
133  #define MXC_F_ICC_MEMCFG_CCHSZ_POS                     0 /**< MEMCFG_CCHSZ Position */
134  #define MXC_F_ICC_MEMCFG_CCHSZ                         ((uint32_t)(0xFFFFUL << MXC_F_ICC_MEMCFG_CCHSZ_POS)) /**< MEMCFG_CCHSZ Mask */
135 
136  #define MXC_F_ICC_MEMCFG_MEMSZ_POS                     16 /**< MEMCFG_MEMSZ Position */
137  #define MXC_F_ICC_MEMCFG_MEMSZ                         ((uint32_t)(0xFFFFUL << MXC_F_ICC_MEMCFG_MEMSZ_POS)) /**< MEMCFG_MEMSZ Mask */
138 
139 /**@} end of group ICC_MEMCFG_Register */
140 
141 /**
142  * @ingroup  icc_registers
143  * @defgroup ICC_CACHE_CTRL ICC_CACHE_CTRL
144  * @brief    Cache Control and Status Register.
145  * @{
146  */
147  #define MXC_F_ICC_CACHE_CTRL_CACHE_EN_POS              0 /**< CACHE_CTRL_CACHE_EN Position */
148  #define MXC_F_ICC_CACHE_CTRL_CACHE_EN                  ((uint32_t)(0x1UL << MXC_F_ICC_CACHE_CTRL_CACHE_EN_POS)) /**< CACHE_CTRL_CACHE_EN Mask */
149  #define MXC_V_ICC_CACHE_CTRL_CACHE_EN_DIS              ((uint32_t)0x0UL) /**< CACHE_CTRL_CACHE_EN_DIS Value */
150  #define MXC_S_ICC_CACHE_CTRL_CACHE_EN_DIS              (MXC_V_ICC_CACHE_CTRL_CACHE_EN_DIS << MXC_F_ICC_CACHE_CTRL_CACHE_EN_POS) /**< CACHE_CTRL_CACHE_EN_DIS Setting */
151  #define MXC_V_ICC_CACHE_CTRL_CACHE_EN_EN               ((uint32_t)0x1UL) /**< CACHE_CTRL_CACHE_EN_EN Value */
152  #define MXC_S_ICC_CACHE_CTRL_CACHE_EN_EN               (MXC_V_ICC_CACHE_CTRL_CACHE_EN_EN << MXC_F_ICC_CACHE_CTRL_CACHE_EN_POS) /**< CACHE_CTRL_CACHE_EN_EN Setting */
153 
154  #define MXC_F_ICC_CACHE_CTRL_CACHE_RDY_POS             16 /**< CACHE_CTRL_CACHE_RDY Position */
155  #define MXC_F_ICC_CACHE_CTRL_CACHE_RDY                 ((uint32_t)(0x1UL << MXC_F_ICC_CACHE_CTRL_CACHE_RDY_POS)) /**< CACHE_CTRL_CACHE_RDY Mask */
156  #define MXC_V_ICC_CACHE_CTRL_CACHE_RDY_NOTREADY        ((uint32_t)0x0UL) /**< CACHE_CTRL_CACHE_RDY_NOTREADY Value */
157  #define MXC_S_ICC_CACHE_CTRL_CACHE_RDY_NOTREADY        (MXC_V_ICC_CACHE_CTRL_CACHE_RDY_NOTREADY << MXC_F_ICC_CACHE_CTRL_CACHE_RDY_POS) /**< CACHE_CTRL_CACHE_RDY_NOTREADY Setting */
158  #define MXC_V_ICC_CACHE_CTRL_CACHE_RDY_READY           ((uint32_t)0x1UL) /**< CACHE_CTRL_CACHE_RDY_READY Value */
159  #define MXC_S_ICC_CACHE_CTRL_CACHE_RDY_READY           (MXC_V_ICC_CACHE_CTRL_CACHE_RDY_READY << MXC_F_ICC_CACHE_CTRL_CACHE_RDY_POS) /**< CACHE_CTRL_CACHE_RDY_READY Setting */
160 
161 /**@} end of group ICC_CACHE_CTRL_Register */
162 
163 #ifdef __cplusplus
164 }
165 #endif
166 
167 #endif /* _ICC_REGS_H_ */
168