File indexing completed on 2025-05-11 08:22:59
0001
0002
0003
0004
0005
0006
0007
0008 #include "fsl_iee_apc.h"
0009
0010
0011
0012
0013
0014
0015 #ifndef FSL_COMPONENT_ID
0016 #define FSL_COMPONENT_ID "platform.drivers.iee_apc"
0017 #endif
0018
0019 #define IOMUXC_LPSR_GPR_APC_ADDR_MASK 0xFFFFFFF8U
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 void IEE_APC_GlobalEnable(IEE_APC_Type *base)
0033 {
0034
0035 IOMUXC_LPSR_GPR->GPR25 |= IOMUXC_LPSR_GPR_GPR25_APC_VALID_MASK;
0036 __DSB();
0037 return;
0038 }
0039
0040
0041
0042
0043
0044
0045
0046
0047 void IEE_APC_GlobalDisable(IEE_APC_Type *base)
0048 {
0049
0050 IOMUXC_LPSR_GPR->GPR25 &= ~IOMUXC_LPSR_GPR_GPR25_APC_VALID_MASK;
0051 __DSB();
0052 return;
0053 }
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065 status_t IEE_APC_SetRegionConfig(IEE_APC_Type *base, iee_apc_region_t region, uint32_t startAddr, uint32_t endAddr)
0066 {
0067
0068
0069
0070
0071
0072
0073
0074 if ((startAddr & (~IOMUXC_LPSR_GPR_GPR3_APC_AC_R0_TOP_MASK)) != 0U ||
0075 (endAddr & (~IOMUXC_LPSR_GPR_GPR2_APC_AC_R0_BOT_MASK)) != 0U)
0076 {
0077 return kStatus_InvalidArgument;
0078 }
0079
0080 if (region == kIEE_APC_Region0)
0081 {
0082 IOMUXC_LPSR_GPR->GPR2 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0083 IOMUXC_LPSR_GPR->GPR3 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0084 IEE_APC->REGION0_BOT_ADDR = startAddr >> 3;
0085 IEE_APC->REGION0_TOP_ADDR = endAddr >> 3;
0086 }
0087 if (region == kIEE_APC_Region1)
0088 {
0089 IOMUXC_LPSR_GPR->GPR4 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0090 IOMUXC_LPSR_GPR->GPR5 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0091 IEE_APC->REGION1_BOT_ADDR = startAddr >> 3;
0092 IEE_APC->REGION1_TOP_ADDR = endAddr >> 3;
0093 }
0094 if (region == kIEE_APC_Region2)
0095 {
0096 IOMUXC_LPSR_GPR->GPR6 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0097 IOMUXC_LPSR_GPR->GPR7 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0098 IEE_APC->REGION2_BOT_ADDR = startAddr >> 3;
0099 IEE_APC->REGION2_TOP_ADDR = endAddr >> 3;
0100 }
0101 if (region == kIEE_APC_Region3)
0102 {
0103 IOMUXC_LPSR_GPR->GPR8 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0104 IOMUXC_LPSR_GPR->GPR9 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0105 IEE_APC->REGION3_BOT_ADDR = startAddr >> 3;
0106 IEE_APC->REGION3_TOP_ADDR = endAddr >> 3;
0107 }
0108 if (region == kIEE_APC_Region4)
0109 {
0110 IOMUXC_LPSR_GPR->GPR10 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0111 IOMUXC_LPSR_GPR->GPR11 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0112 IEE_APC->REGION4_BOT_ADDR = startAddr >> 3;
0113 IEE_APC->REGION4_TOP_ADDR = endAddr >> 3;
0114 }
0115 if (region == kIEE_APC_Region5)
0116 {
0117 IOMUXC_LPSR_GPR->GPR12 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0118 IOMUXC_LPSR_GPR->GPR13 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0119 IEE_APC->REGION5_BOT_ADDR = startAddr >> 3;
0120 IEE_APC->REGION5_TOP_ADDR = endAddr >> 3;
0121 }
0122 if (region == kIEE_APC_Region6)
0123 {
0124 IOMUXC_LPSR_GPR->GPR14 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0125 IOMUXC_LPSR_GPR->GPR15 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0126 IEE_APC->REGION6_BOT_ADDR = startAddr >> 3;
0127 IEE_APC->REGION6_TOP_ADDR = endAddr >> 3;
0128 }
0129 if (region == kIEE_APC_Region7)
0130 {
0131 IOMUXC_LPSR_GPR->GPR16 |= startAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0132 IOMUXC_LPSR_GPR->GPR17 |= endAddr & IOMUXC_LPSR_GPR_APC_ADDR_MASK;
0133 IEE_APC->REGION7_BOT_ADDR = startAddr >> 3;
0134 IEE_APC->REGION7_TOP_ADDR = endAddr >> 3;
0135 }
0136
0137 return kStatus_Success;
0138 }
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149 status_t IEE_APC_LockRegionConfig(IEE_APC_Type *base, iee_apc_region_t region, iee_apc_domain_t domain)
0150 {
0151 if (region == kIEE_APC_Region0)
0152 {
0153
0154 IOMUXC_LPSR_GPR->GPR2 |= IOMUXC_LPSR_GPR_GPR2_LOCK(1);
0155
0156 IOMUXC_LPSR_GPR->GPR3 |= IOMUXC_LPSR_GPR_GPR3_LOCK(1);
0157
0158 IOMUXC_LPSR_GPR->GPR18 |= IOMUXC_LPSR_GPR_GPR18_LOCK(1);
0159
0160 if (domain == kIEE_APC_Domain0)
0161 {
0162 IEE_APC->REGION0_RDC_D0 |= IEE_APC_REGION0_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0163 IEE_APC->REGION0_RDC_D0 |= IEE_APC_REGION0_RDC_D0_RDC_D0_LOCK_MASK;
0164 }
0165 else if (domain == kIEE_APC_Domain1)
0166 {
0167 IEE_APC->REGION0_RDC_D1 |= IEE_APC_REGION0_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0168 IEE_APC->REGION0_RDC_D1 |= IEE_APC_REGION0_RDC_D1_RDC_D1_LOCK_MASK;
0169 }
0170 else
0171 {
0172
0173 }
0174 }
0175 if (region == kIEE_APC_Region1)
0176 {
0177
0178 IOMUXC_LPSR_GPR->GPR4 |= IOMUXC_LPSR_GPR_GPR4_LOCK(1);
0179
0180 IOMUXC_LPSR_GPR->GPR5 |= IOMUXC_LPSR_GPR_GPR5_LOCK(1);
0181
0182 IOMUXC_LPSR_GPR->GPR19 |= IOMUXC_LPSR_GPR_GPR19_LOCK(1);
0183
0184 if (domain == kIEE_APC_Domain0)
0185 {
0186 IEE_APC->REGION1_RDC_D0 |= IEE_APC_REGION1_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0187 IEE_APC->REGION1_RDC_D0 |= IEE_APC_REGION1_RDC_D0_RDC_D0_LOCK_MASK;
0188 }
0189 else if (domain == kIEE_APC_Domain1)
0190 {
0191 IEE_APC->REGION1_RDC_D1 |= IEE_APC_REGION1_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0192 IEE_APC->REGION1_RDC_D1 |= IEE_APC_REGION1_RDC_D1_RDC_D1_LOCK_MASK;
0193 }
0194 else
0195 {
0196
0197 }
0198 }
0199 if (region == kIEE_APC_Region2)
0200 {
0201
0202 IOMUXC_LPSR_GPR->GPR6 |= IOMUXC_LPSR_GPR_GPR6_LOCK(1);
0203
0204 IOMUXC_LPSR_GPR->GPR7 |= IOMUXC_LPSR_GPR_GPR7_LOCK(1);
0205
0206 IOMUXC_LPSR_GPR->GPR20 |= IOMUXC_LPSR_GPR_GPR20_LOCK(1);
0207
0208 if (domain == kIEE_APC_Domain0)
0209 {
0210 IEE_APC->REGION2_RDC_D0 |= IEE_APC_REGION2_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0211 IEE_APC->REGION2_RDC_D0 |= IEE_APC_REGION2_RDC_D0_RDC_D0_LOCK_MASK;
0212 }
0213 else if (domain == kIEE_APC_Domain1)
0214 {
0215 IEE_APC->REGION2_RDC_D1 |= IEE_APC_REGION2_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0216 IEE_APC->REGION2_RDC_D1 |= IEE_APC_REGION2_RDC_D1_RDC_D1_LOCK_MASK;
0217 }
0218 else
0219 {
0220
0221 }
0222 }
0223 if (region == kIEE_APC_Region3)
0224 {
0225
0226 IOMUXC_LPSR_GPR->GPR8 |= IOMUXC_LPSR_GPR_GPR8_LOCK(1);
0227
0228 IOMUXC_LPSR_GPR->GPR9 |= IOMUXC_LPSR_GPR_GPR9_LOCK(1);
0229
0230 IOMUXC_LPSR_GPR->GPR21 |= IOMUXC_LPSR_GPR_GPR21_LOCK(1);
0231
0232 if (domain == kIEE_APC_Domain0)
0233 {
0234 IEE_APC->REGION3_RDC_D0 |= IEE_APC_REGION3_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0235 IEE_APC->REGION3_RDC_D0 |= IEE_APC_REGION3_RDC_D0_RDC_D0_LOCK_MASK;
0236 }
0237 else if (domain == kIEE_APC_Domain1)
0238 {
0239 IEE_APC->REGION3_RDC_D1 |= IEE_APC_REGION3_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0240 IEE_APC->REGION3_RDC_D1 |= IEE_APC_REGION3_RDC_D1_RDC_D1_LOCK_MASK;
0241 }
0242 else
0243 {
0244
0245 }
0246 }
0247 if (region == kIEE_APC_Region4)
0248 {
0249
0250 IOMUXC_LPSR_GPR->GPR10 |= IOMUXC_LPSR_GPR_GPR10_LOCK(1);
0251
0252 IOMUXC_LPSR_GPR->GPR11 |= IOMUXC_LPSR_GPR_GPR11_LOCK(1);
0253
0254 IOMUXC_LPSR_GPR->GPR22 |= IOMUXC_LPSR_GPR_GPR22_LOCK(1);
0255
0256 if (domain == kIEE_APC_Domain0)
0257 {
0258 IEE_APC->REGION4_RDC_D0 |= IEE_APC_REGION4_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0259 IEE_APC->REGION4_RDC_D0 |= IEE_APC_REGION4_RDC_D0_RDC_D0_LOCK_MASK;
0260 }
0261 else if (domain == kIEE_APC_Domain1)
0262 {
0263 IEE_APC->REGION4_RDC_D1 |= IEE_APC_REGION4_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0264 IEE_APC->REGION4_RDC_D1 |= IEE_APC_REGION4_RDC_D1_RDC_D1_LOCK_MASK;
0265 }
0266 else
0267 {
0268
0269 }
0270 }
0271 if (region == kIEE_APC_Region5)
0272 {
0273
0274 IOMUXC_LPSR_GPR->GPR12 |= IOMUXC_LPSR_GPR_GPR12_LOCK(1);
0275
0276 IOMUXC_LPSR_GPR->GPR13 |= IOMUXC_LPSR_GPR_GPR13_LOCK(1);
0277
0278 IOMUXC_LPSR_GPR->GPR23 |= IOMUXC_LPSR_GPR_GPR23_LOCK(1);
0279
0280 if (domain == kIEE_APC_Domain0)
0281 {
0282 IEE_APC->REGION5_RDC_D0 |= IEE_APC_REGION5_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0283 IEE_APC->REGION5_RDC_D0 |= IEE_APC_REGION5_RDC_D0_RDC_D0_LOCK_MASK;
0284 }
0285 else if (domain == kIEE_APC_Domain1)
0286 {
0287 IEE_APC->REGION5_RDC_D1 |= IEE_APC_REGION5_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0288 IEE_APC->REGION5_RDC_D1 |= IEE_APC_REGION5_RDC_D1_RDC_D1_LOCK_MASK;
0289 }
0290 else
0291 {
0292
0293 }
0294 }
0295 if (region == kIEE_APC_Region6)
0296 {
0297
0298 IOMUXC_LPSR_GPR->GPR14 |= IOMUXC_LPSR_GPR_GPR14_LOCK(1);
0299
0300 IOMUXC_LPSR_GPR->GPR15 |= IOMUXC_LPSR_GPR_GPR15_LOCK(1);
0301
0302 IOMUXC_LPSR_GPR->GPR24 |= IOMUXC_LPSR_GPR_GPR24_LOCK(1);
0303
0304 if (domain == kIEE_APC_Domain0)
0305 {
0306 IEE_APC->REGION6_RDC_D0 |= IEE_APC_REGION6_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0307 IEE_APC->REGION6_RDC_D0 |= IEE_APC_REGION6_RDC_D0_RDC_D0_LOCK_MASK;
0308 }
0309 else if (domain == kIEE_APC_Domain1)
0310 {
0311 IEE_APC->REGION6_RDC_D1 |= IEE_APC_REGION6_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0312 IEE_APC->REGION6_RDC_D1 |= IEE_APC_REGION6_RDC_D1_RDC_D1_LOCK_MASK;
0313 }
0314 else
0315 {
0316
0317 }
0318 }
0319 if (region == kIEE_APC_Region7)
0320 {
0321
0322 IOMUXC_LPSR_GPR->GPR16 |= IOMUXC_LPSR_GPR_GPR15_LOCK(1);
0323
0324 IOMUXC_LPSR_GPR->GPR17 |= IOMUXC_LPSR_GPR_GPR16_LOCK(1);
0325
0326 IOMUXC_LPSR_GPR->GPR25 |= IOMUXC_LPSR_GPR_GPR25_LOCK(1);
0327
0328 if (domain == kIEE_APC_Domain0)
0329 {
0330 IEE_APC->REGION7_RDC_D0 |= IEE_APC_REGION7_RDC_D0_RDC_D0_WRITE_DIS_MASK;
0331 IEE_APC->REGION7_RDC_D0 |= IEE_APC_REGION7_RDC_D0_RDC_D0_LOCK_MASK;
0332 }
0333 else if (domain == kIEE_APC_Domain1)
0334 {
0335 IEE_APC->REGION7_RDC_D1 |= IEE_APC_REGION7_RDC_D1_RDC_D1_WRITE_DIS_MASK;
0336 IEE_APC->REGION7_RDC_D1 |= IEE_APC_REGION7_RDC_D1_RDC_D1_LOCK_MASK;
0337 }
0338 else
0339 {
0340
0341 }
0342 }
0343
0344 return kStatus_Success;
0345 }
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355 void IEE_APC_RegionEnable(IEE_APC_Type *base, iee_apc_region_t region)
0356 {
0357 if (region == kIEE_APC_Region0)
0358 {
0359 IOMUXC_LPSR_GPR->GPR18 |= IOMUXC_LPSR_GPR_GPR18_APC_R0_ENCRYPT_ENABLE_MASK;
0360 }
0361 if (region == kIEE_APC_Region1)
0362 {
0363 IOMUXC_LPSR_GPR->GPR19 |= IOMUXC_LPSR_GPR_GPR19_APC_R1_ENCRYPT_ENABLE_MASK;
0364 }
0365 if (region == kIEE_APC_Region2)
0366 {
0367 IOMUXC_LPSR_GPR->GPR20 |= IOMUXC_LPSR_GPR_GPR20_APC_R2_ENCRYPT_ENABLE_MASK;
0368 }
0369 if (region == kIEE_APC_Region3)
0370 {
0371 IOMUXC_LPSR_GPR->GPR21 |= IOMUXC_LPSR_GPR_GPR21_APC_R3_ENCRYPT_ENABLE_MASK;
0372 }
0373 if (region == kIEE_APC_Region4)
0374 {
0375 IOMUXC_LPSR_GPR->GPR22 |= IOMUXC_LPSR_GPR_GPR22_APC_R4_ENCRYPT_ENABLE_MASK;
0376 }
0377 if (region == kIEE_APC_Region5)
0378 {
0379 IOMUXC_LPSR_GPR->GPR23 |= IOMUXC_LPSR_GPR_GPR23_APC_R5_ENCRYPT_ENABLE_MASK;
0380 }
0381 if (region == kIEE_APC_Region6)
0382 {
0383 IOMUXC_LPSR_GPR->GPR24 |= IOMUXC_LPSR_GPR_GPR24_APC_R6_ENCRYPT_ENABLE_MASK;
0384 }
0385 if (region == kIEE_APC_Region7)
0386 {
0387 IOMUXC_LPSR_GPR->GPR25 |= IOMUXC_LPSR_GPR_GPR25_APC_R7_ENCRYPT_ENABLE_MASK;
0388 }
0389
0390 return;
0391 }