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