1 /***************************************************************************//**
2 * \file cyip_ramc_v2.h
3 *
4 * \brief
5 * RAMC IP definitions
6 *
7 ********************************************************************************
8 * \copyright
9 * (c) (2016-2024), Cypress Semiconductor Corporation (an Infineon company) or
10 * an affiliate of Cypress Semiconductor Corporation.
11 *
12 * SPDX-License-Identifier: Apache-2.0
13 *
14 * Licensed under the Apache License, Version 2.0 (the "License");
15 * you may not use this file except in compliance with the License.
16 * You may obtain a copy of the License at
17 *
18 *     http://www.apache.org/licenses/LICENSE-2.0
19 *
20 * Unless required by applicable law or agreed to in writing, software
21 * distributed under the License is distributed on an "AS IS" BASIS,
22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 * See the License for the specific language governing permissions and
24 * limitations under the License.
25 *******************************************************************************/
26 
27 #ifndef _CYIP_RAMC_V2_H_
28 #define _CYIP_RAMC_V2_H_
29 
30 #include "cyip_headers.h"
31 
32 /*******************************************************************************
33 *                                     RAMC
34 *******************************************************************************/
35 
36 #define RAMC_MPC_SECTION_SIZE                   0x00001000UL
37 #define RAMC_SECTION_SIZE                       0x00010000UL
38 
39 /**
40   * \brief MPC Memory Protection Controller registers (RAMC_MPC)
41   */
42 typedef struct {
43   __IOM uint32_t CFG;                           /*!< 0x00000000 Config register with error response, RegionID PPC_MPC_MAIN is
44                                                                 the security owner PC. The error response configuration is
45                                                                 located in CFG.RESPONSE, only one such configuration exists
46                                                                 applying to all protection contexts in the system. */
47    __IM uint32_t RESERVED[63];
48   __IOM uint32_t CTRL;                          /*!< 0x00000100 Control register with lock bit and auto-increment only
49                                                                 (Separate CTRL for each PC depends on access_pc) */
50    __IM uint32_t BLK_MAX;                       /*!< 0x00000104 Max value of block-based index register */
51    __IM uint32_t BLK_CFG;                       /*!< 0x00000108 Block size & initialization in progress */
52   __IOM uint32_t BLK_IDX;                       /*!< 0x0000010C Index of 32-block group accessed through BLK_LUT (Separate IDX
53                                                                 for each PC depending on access_pc) */
54   __IOM uint32_t BLK_LUT;                       /*!< 0x00000110 NS status for 32 blocks at BLK_IDX with PC=<access_pc> */
55    __IM uint32_t RESERVED1[59];
56   __IOM uint32_t ROT_CTRL;                      /*!< 0x00000200 Control register with lock bit and auto-increment only */
57    __IM uint32_t RESERVED2;
58    __IM uint32_t ROT_BLK_MAX;                   /*!< 0x00000208 Max value of block-based index register for ROT */
59    __IM uint32_t ROT_BLK_CFG;                   /*!< 0x0000020C Same as BLK_CFG */
60   __IOM uint32_t ROT_BLK_IDX;                   /*!< 0x00000210 Index of 8-block group accessed through ROT_BLK_LUT_* */
61   __IOM uint32_t ROT_BLK_PC;                    /*!< 0x00000214 Protection context of 8-block group accesses through
62                                                                 ROT_BLK_LUT */
63   __IOM uint32_t ROT_BLK_LUT;                   /*!< 0x00000218 (R,W,NS) bits for 8 blocks at ROT_BLK_IDX for PC=ROT_BKL_PC */
64    __IM uint32_t RESERVED3[889];
65 } RAMC_MPC_Type;                                /*!< Size = 4096 (0x1000) */
66 
67 /**
68   * \brief RAMC0/1/2 (RAMC)
69   */
70 typedef struct {
71   __IOM uint32_t CTL;                           /*!< 0x00000000 Control */
72    __IM uint32_t RESERVED;
73    __IM uint32_t STATUS;                        /*!< 0x00000008 Status */
74    __IM uint32_t RESERVED1[5];
75   __IOM uint32_t ECC_CTL;                       /*!< 0x00000020 ECC control */
76    __IM uint32_t ECC_STATUS0;                   /*!< 0x00000024 ECC status 0 */
77    __IM uint32_t ECC_STATUS1;                   /*!< 0x00000028 ECC status 1 */
78    __IM uint32_t RESERVED2[54];
79   __IOM uint32_t ECC_MATCH;                     /*!< 0x00000104 ECC match */
80    __IM uint32_t RESERVED3[62];
81   __IOM uint32_t PWR_MACRO_CTL;                 /*!< 0x00000200 SRAM power partition power control */
82    __IM uint32_t RESERVED4[15];
83   __IOM uint32_t PWR_MACRO_CTL_LOCK;            /*!< 0x00000240 SRAM power partition power control Lock */
84    __IM uint32_t RESERVED5[15];
85   __IOM uint32_t PWR_DELAY_CTL;                 /*!< 0x00000280 SRAM power switch power up & sequence delay */
86    __IM uint32_t RESERVED6[3935];
87         RAMC_MPC_Type MPC[1];                   /*!< 0x00004000 MPC Memory Protection Controller registers */
88 } RAMC_Type;                                    /*!< Size = 20480 (0x5000) */
89 
90 
91 /* RAMC_MPC.CFG */
92 #define RAMC_MPC_CFG_RESPONSE_Pos               4UL
93 #define RAMC_MPC_CFG_RESPONSE_Msk               0x10UL
94 /* RAMC_MPC.CTRL */
95 #define RAMC_MPC_CTRL_AUTO_INC_Pos              8UL
96 #define RAMC_MPC_CTRL_AUTO_INC_Msk              0x100UL
97 #define RAMC_MPC_CTRL_LOCK_Pos                  31UL
98 #define RAMC_MPC_CTRL_LOCK_Msk                  0x80000000UL
99 /* RAMC_MPC.BLK_MAX */
100 #define RAMC_MPC_BLK_MAX_VALUE_Pos              0UL
101 #define RAMC_MPC_BLK_MAX_VALUE_Msk              0xFFFFFFFFUL
102 /* RAMC_MPC.BLK_CFG */
103 #define RAMC_MPC_BLK_CFG_BLOCK_SIZE_Pos         0UL
104 #define RAMC_MPC_BLK_CFG_BLOCK_SIZE_Msk         0xFUL
105 #define RAMC_MPC_BLK_CFG_INIT_IN_PROGRESS_Pos   31UL
106 #define RAMC_MPC_BLK_CFG_INIT_IN_PROGRESS_Msk   0x80000000UL
107 /* RAMC_MPC.BLK_IDX */
108 #define RAMC_MPC_BLK_IDX_VALUE_Pos              0UL
109 #define RAMC_MPC_BLK_IDX_VALUE_Msk              0xFFFFFFFFUL
110 /* RAMC_MPC.BLK_LUT */
111 #define RAMC_MPC_BLK_LUT_ATTR_NS0_Pos           0UL
112 #define RAMC_MPC_BLK_LUT_ATTR_NS0_Msk           0x1UL
113 #define RAMC_MPC_BLK_LUT_ATTR_NS1_Pos           1UL
114 #define RAMC_MPC_BLK_LUT_ATTR_NS1_Msk           0x2UL
115 #define RAMC_MPC_BLK_LUT_ATTR_NS2_Pos           2UL
116 #define RAMC_MPC_BLK_LUT_ATTR_NS2_Msk           0x4UL
117 #define RAMC_MPC_BLK_LUT_ATTR_NS3_Pos           3UL
118 #define RAMC_MPC_BLK_LUT_ATTR_NS3_Msk           0x8UL
119 #define RAMC_MPC_BLK_LUT_ATTR_NS4_Pos           4UL
120 #define RAMC_MPC_BLK_LUT_ATTR_NS4_Msk           0x10UL
121 #define RAMC_MPC_BLK_LUT_ATTR_NS5_Pos           5UL
122 #define RAMC_MPC_BLK_LUT_ATTR_NS5_Msk           0x20UL
123 #define RAMC_MPC_BLK_LUT_ATTR_NS6_Pos           6UL
124 #define RAMC_MPC_BLK_LUT_ATTR_NS6_Msk           0x40UL
125 #define RAMC_MPC_BLK_LUT_ATTR_NS7_Pos           7UL
126 #define RAMC_MPC_BLK_LUT_ATTR_NS7_Msk           0x80UL
127 #define RAMC_MPC_BLK_LUT_ATTR_NS8_Pos           8UL
128 #define RAMC_MPC_BLK_LUT_ATTR_NS8_Msk           0x100UL
129 #define RAMC_MPC_BLK_LUT_ATTR_NS9_Pos           9UL
130 #define RAMC_MPC_BLK_LUT_ATTR_NS9_Msk           0x200UL
131 #define RAMC_MPC_BLK_LUT_ATTR_NS10_Pos          10UL
132 #define RAMC_MPC_BLK_LUT_ATTR_NS10_Msk          0x400UL
133 #define RAMC_MPC_BLK_LUT_ATTR_NS11_Pos          11UL
134 #define RAMC_MPC_BLK_LUT_ATTR_NS11_Msk          0x800UL
135 #define RAMC_MPC_BLK_LUT_ATTR_NS12_Pos          12UL
136 #define RAMC_MPC_BLK_LUT_ATTR_NS12_Msk          0x1000UL
137 #define RAMC_MPC_BLK_LUT_ATTR_NS13_Pos          13UL
138 #define RAMC_MPC_BLK_LUT_ATTR_NS13_Msk          0x2000UL
139 #define RAMC_MPC_BLK_LUT_ATTR_NS14_Pos          14UL
140 #define RAMC_MPC_BLK_LUT_ATTR_NS14_Msk          0x4000UL
141 #define RAMC_MPC_BLK_LUT_ATTR_NS15_Pos          15UL
142 #define RAMC_MPC_BLK_LUT_ATTR_NS15_Msk          0x8000UL
143 #define RAMC_MPC_BLK_LUT_ATTR_NS16_Pos          16UL
144 #define RAMC_MPC_BLK_LUT_ATTR_NS16_Msk          0x10000UL
145 #define RAMC_MPC_BLK_LUT_ATTR_NS17_Pos          17UL
146 #define RAMC_MPC_BLK_LUT_ATTR_NS17_Msk          0x20000UL
147 #define RAMC_MPC_BLK_LUT_ATTR_NS18_Pos          18UL
148 #define RAMC_MPC_BLK_LUT_ATTR_NS18_Msk          0x40000UL
149 #define RAMC_MPC_BLK_LUT_ATTR_NS19_Pos          19UL
150 #define RAMC_MPC_BLK_LUT_ATTR_NS19_Msk          0x80000UL
151 #define RAMC_MPC_BLK_LUT_ATTR_NS20_Pos          20UL
152 #define RAMC_MPC_BLK_LUT_ATTR_NS20_Msk          0x100000UL
153 #define RAMC_MPC_BLK_LUT_ATTR_NS21_Pos          21UL
154 #define RAMC_MPC_BLK_LUT_ATTR_NS21_Msk          0x200000UL
155 #define RAMC_MPC_BLK_LUT_ATTR_NS22_Pos          22UL
156 #define RAMC_MPC_BLK_LUT_ATTR_NS22_Msk          0x400000UL
157 #define RAMC_MPC_BLK_LUT_ATTR_NS23_Pos          23UL
158 #define RAMC_MPC_BLK_LUT_ATTR_NS23_Msk          0x800000UL
159 #define RAMC_MPC_BLK_LUT_ATTR_NS24_Pos          24UL
160 #define RAMC_MPC_BLK_LUT_ATTR_NS24_Msk          0x1000000UL
161 #define RAMC_MPC_BLK_LUT_ATTR_NS25_Pos          25UL
162 #define RAMC_MPC_BLK_LUT_ATTR_NS25_Msk          0x2000000UL
163 #define RAMC_MPC_BLK_LUT_ATTR_NS26_Pos          26UL
164 #define RAMC_MPC_BLK_LUT_ATTR_NS26_Msk          0x4000000UL
165 #define RAMC_MPC_BLK_LUT_ATTR_NS27_Pos          27UL
166 #define RAMC_MPC_BLK_LUT_ATTR_NS27_Msk          0x8000000UL
167 #define RAMC_MPC_BLK_LUT_ATTR_NS28_Pos          28UL
168 #define RAMC_MPC_BLK_LUT_ATTR_NS28_Msk          0x10000000UL
169 #define RAMC_MPC_BLK_LUT_ATTR_NS29_Pos          29UL
170 #define RAMC_MPC_BLK_LUT_ATTR_NS29_Msk          0x20000000UL
171 #define RAMC_MPC_BLK_LUT_ATTR_NS30_Pos          30UL
172 #define RAMC_MPC_BLK_LUT_ATTR_NS30_Msk          0x40000000UL
173 #define RAMC_MPC_BLK_LUT_ATTR_NS31_Pos          31UL
174 #define RAMC_MPC_BLK_LUT_ATTR_NS31_Msk          0x80000000UL
175 /* RAMC_MPC.ROT_CTRL */
176 #define RAMC_MPC_ROT_CTRL_AUTO_INC_Pos          8UL
177 #define RAMC_MPC_ROT_CTRL_AUTO_INC_Msk          0x100UL
178 #define RAMC_MPC_ROT_CTRL_LOCK_Pos              31UL
179 #define RAMC_MPC_ROT_CTRL_LOCK_Msk              0x80000000UL
180 /* RAMC_MPC.ROT_BLK_MAX */
181 #define RAMC_MPC_ROT_BLK_MAX_VALUE_Pos          0UL
182 #define RAMC_MPC_ROT_BLK_MAX_VALUE_Msk          0xFFFFFFFFUL
183 /* RAMC_MPC.ROT_BLK_CFG */
184 #define RAMC_MPC_ROT_BLK_CFG_BLOCK_SIZE_Pos     0UL
185 #define RAMC_MPC_ROT_BLK_CFG_BLOCK_SIZE_Msk     0xFUL
186 #define RAMC_MPC_ROT_BLK_CFG_INIT_IN_PROGRESS_Pos 31UL
187 #define RAMC_MPC_ROT_BLK_CFG_INIT_IN_PROGRESS_Msk 0x80000000UL
188 /* RAMC_MPC.ROT_BLK_IDX */
189 #define RAMC_MPC_ROT_BLK_IDX_VALUE_Pos          0UL
190 #define RAMC_MPC_ROT_BLK_IDX_VALUE_Msk          0xFFFFFFFFUL
191 /* RAMC_MPC.ROT_BLK_PC */
192 #define RAMC_MPC_ROT_BLK_PC_PC_Pos              0UL
193 #define RAMC_MPC_ROT_BLK_PC_PC_Msk              0xFUL
194 /* RAMC_MPC.ROT_BLK_LUT */
195 #define RAMC_MPC_ROT_BLK_LUT_ATTR0_Pos          0UL
196 #define RAMC_MPC_ROT_BLK_LUT_ATTR0_Msk          0x7UL
197 #define RAMC_MPC_ROT_BLK_LUT_ATTR1_Pos          4UL
198 #define RAMC_MPC_ROT_BLK_LUT_ATTR1_Msk          0x70UL
199 #define RAMC_MPC_ROT_BLK_LUT_ATTR2_Pos          8UL
200 #define RAMC_MPC_ROT_BLK_LUT_ATTR2_Msk          0x700UL
201 #define RAMC_MPC_ROT_BLK_LUT_ATTR3_Pos          12UL
202 #define RAMC_MPC_ROT_BLK_LUT_ATTR3_Msk          0x7000UL
203 #define RAMC_MPC_ROT_BLK_LUT_ATTR4_Pos          16UL
204 #define RAMC_MPC_ROT_BLK_LUT_ATTR4_Msk          0x70000UL
205 #define RAMC_MPC_ROT_BLK_LUT_ATTR5_Pos          20UL
206 #define RAMC_MPC_ROT_BLK_LUT_ATTR5_Msk          0x700000UL
207 #define RAMC_MPC_ROT_BLK_LUT_ATTR6_Pos          24UL
208 #define RAMC_MPC_ROT_BLK_LUT_ATTR6_Msk          0x7000000UL
209 #define RAMC_MPC_ROT_BLK_LUT_ATTR7_Pos          28UL
210 #define RAMC_MPC_ROT_BLK_LUT_ATTR7_Msk          0x70000000UL
211 
212 
213 /* RAMC.CTL */
214 #define RAMC_CTL_SRAM_WS_Pos                    0UL
215 #define RAMC_CTL_SRAM_WS_Msk                    0x3UL
216 #define RAMC_CTL_CLOCK_FORCE_Pos                16UL
217 #define RAMC_CTL_CLOCK_FORCE_Msk                0x10000UL
218 /* RAMC.STATUS */
219 #define RAMC_STATUS_WB_EMPTY_Pos                0UL
220 #define RAMC_STATUS_WB_EMPTY_Msk                0x1UL
221 #define RAMC_STATUS_PWR_DONE_Pos                4UL
222 #define RAMC_STATUS_PWR_DONE_Msk                0x10UL
223 /* RAMC.ECC_CTL */
224 #define RAMC_ECC_CTL_EN_Pos                     0UL
225 #define RAMC_ECC_CTL_EN_Msk                     0x1UL
226 #define RAMC_ECC_CTL_AUTO_CORRECT_Pos           1UL
227 #define RAMC_ECC_CTL_AUTO_CORRECT_Msk           0x2UL
228 #define RAMC_ECC_CTL_INJ_EN_Pos                 2UL
229 #define RAMC_ECC_CTL_INJ_EN_Msk                 0x4UL
230 #define RAMC_ECC_CTL_CHECK_EN_Pos               3UL
231 #define RAMC_ECC_CTL_CHECK_EN_Msk               0x8UL
232 #define RAMC_ECC_CTL_PARITY_Pos                 16UL
233 #define RAMC_ECC_CTL_PARITY_Msk                 0x7F0000UL
234 /* RAMC.ECC_STATUS0 */
235 #define RAMC_ECC_STATUS0_ADDR_Pos               0UL
236 #define RAMC_ECC_STATUS0_ADDR_Msk               0xFFFFFFFFUL
237 /* RAMC.ECC_STATUS1 */
238 #define RAMC_ECC_STATUS1_SYNDROME_Pos           0UL
239 #define RAMC_ECC_STATUS1_SYNDROME_Msk           0x7FUL
240 /* RAMC.ECC_MATCH */
241 #define RAMC_ECC_MATCH_WORD_ADDR_Pos            0UL
242 #define RAMC_ECC_MATCH_WORD_ADDR_Msk            0x1FFFFFFUL
243 /* RAMC.PWR_MACRO_CTL */
244 #define RAMC_PWR_MACRO_CTL_OFF_Pos              0UL
245 #define RAMC_PWR_MACRO_CTL_OFF_Msk              0xFFFFFFFFUL
246 /* RAMC.PWR_MACRO_CTL_LOCK */
247 #define RAMC_PWR_MACRO_CTL_LOCK_PWR_MACRO_CTL_LOCK_Pos 0UL
248 #define RAMC_PWR_MACRO_CTL_LOCK_PWR_MACRO_CTL_LOCK_Msk 0x3UL
249 /* RAMC.PWR_DELAY_CTL */
250 #define RAMC_PWR_DELAY_CTL_UP_Pos               0UL
251 #define RAMC_PWR_DELAY_CTL_UP_Msk               0x3FFUL
252 #define RAMC_PWR_DELAY_CTL_SEQ0_DELAY_Pos       16UL
253 #define RAMC_PWR_DELAY_CTL_SEQ0_DELAY_Msk       0xFF0000UL
254 #define RAMC_PWR_DELAY_CTL_SEQ1_DELAY_Pos       24UL
255 #define RAMC_PWR_DELAY_CTL_SEQ1_DELAY_Msk       0xFF000000UL
256 
257 
258 #endif /* _CYIP_RAMC_V2_H_ */
259 
260 
261 /* [] END OF FILE */
262