1 /*
2 * Copyright (c) 2019-2022 Arm Limited
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include "Driver_PPC.h"
18
19 #include "Driver_Common.h"
20 #include "tfm_hal_device_header.h"
21 #include "cmsis_driver_config.h"
22 #include "RTE_Device.h"
23 #include "ppc_rse_drv.h"
24
25 /* Driver version */
26 #define ARM_PPC_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1,0)
27
28 /* Driver Version */
29 static const ARM_DRIVER_VERSION DriverVersion = {
30 ARM_PPC_API_VERSION,
31 ARM_PPC_DRV_VERSION
32 };
33
PPC_RSE_GetVersion(void)34 ARM_DRIVER_VERSION PPC_RSE_GetVersion(void)
35 {
36 return DriverVersion;
37 }
38
39 typedef struct _RSE_PPC_Resources {
40 struct ppc_rse_dev_t* dev; /* PPC device structure */
41 } RSE_PPC_Resources;
42
43 #if (RTE_PPC_RSE_MAIN0)
44
45 static RSE_PPC_Resources MAIN0_PPC_DEV = {
46 .dev = &PPC_RSE_MAIN0_DEV,
47 };
48
49 /* MAIN0 PPC Driver wrapper functions */
PPC_RSE_MAIN0_Initialize(void)50 static int32_t PPC_RSE_MAIN0_Initialize(void)
51 {
52 ppc_rse_init(MAIN0_PPC_DEV.dev);
53
54 return ARM_DRIVER_OK;
55 }
56
PPC_RSE_MAIN0_Uninitialize(void)57 static int32_t PPC_RSE_MAIN0_Uninitialize(void)
58 {
59 /* Nothing to do */
60 return ARM_DRIVER_OK;
61 }
62
63 static int32_t
PPC_RSE_MAIN0_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)64 PPC_RSE_MAIN0_ConfigPrivilege(uint32_t periph,
65 PPC_RSE_SecAttr sec_attr,
66 PPC_RSE_PrivAttr priv_attr)
67 {
68 enum ppc_rse_error_t ret;
69
70 ret = ppc_rse_config_privilege(MAIN0_PPC_DEV.dev, periph,
71 (enum ppc_rse_sec_attr_t)sec_attr,
72 (enum ppc_rse_priv_attr_t)priv_attr);
73
74 if( ret != PPC_RSE_ERR_NONE) {
75 return ARM_DRIVER_ERROR;
76 }
77
78 return ARM_DRIVER_OK;
79 }
80
PPC_RSE_MAIN0_IsPeriphPrivOnly(uint32_t periph)81 static bool PPC_RSE_MAIN0_IsPeriphPrivOnly(uint32_t periph)
82 {
83 return ppc_rse_is_periph_priv_only(MAIN0_PPC_DEV.dev, periph);
84 }
85
86 /* Secure only functions */
87 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
88
89 static int32_t
PPC_RSE_MAIN0_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)90 PPC_RSE_MAIN0_ConfigSecurity(uint32_t periph, PPC_RSE_SecAttr sec_attr)
91 {
92 enum ppc_rse_error_t ret;
93
94 ret = ppc_rse_config_security(MAIN0_PPC_DEV.dev, periph,
95 (enum ppc_rse_sec_attr_t)sec_attr);
96
97 if( ret != PPC_RSE_ERR_NONE) {
98 return ARM_DRIVER_ERROR;
99 }
100
101 return ARM_DRIVER_OK;
102 }
103
PPC_RSE_MAIN0_IsPeriphSecure(uint32_t periph)104 static bool PPC_RSE_MAIN0_IsPeriphSecure(uint32_t periph)
105 {
106 return ppc_rse_is_periph_secure(MAIN0_PPC_DEV.dev, periph);
107 }
108
PPC_RSE_MAIN0_EnableInterrupt(void)109 static int32_t PPC_RSE_MAIN0_EnableInterrupt(void)
110 {
111 enum ppc_rse_error_t ret;
112
113 ret = ppc_rse_irq_enable(MAIN0_PPC_DEV.dev);
114
115 if( ret != PPC_RSE_ERR_NONE) {
116 return ARM_DRIVER_ERROR;
117 }
118
119 return ARM_DRIVER_OK;
120 }
121
PPC_RSE_MAIN0_DisableInterrupt(void)122 static void PPC_RSE_MAIN0_DisableInterrupt(void)
123 {
124 ppc_rse_irq_disable(MAIN0_PPC_DEV.dev);
125 }
126
PPC_RSE_MAIN0_ClearInterrupt(void)127 static void PPC_RSE_MAIN0_ClearInterrupt(void)
128 {
129 ppc_rse_clear_irq(MAIN0_PPC_DEV.dev);
130 }
131
PPC_RSE_MAIN0_InterruptState(void)132 static bool PPC_RSE_MAIN0_InterruptState(void)
133 {
134 return ppc_rse_irq_state(MAIN0_PPC_DEV.dev);
135 }
136
137 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
138
139 /* PPC RSE MAIN0 Driver CMSIS access structure */
140 DRIVER_PPC_RSE Driver_PPC_RSE_MAIN0 = {
141 .GetVersion = PPC_RSE_GetVersion,
142 .Initialize = PPC_RSE_MAIN0_Initialize,
143 .Uninitialize = PPC_RSE_MAIN0_Uninitialize,
144 .ConfigPrivilege = PPC_RSE_MAIN0_ConfigPrivilege,
145 .IsPeriphPrivOnly = PPC_RSE_MAIN0_IsPeriphPrivOnly,
146 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
147 .ConfigSecurity = PPC_RSE_MAIN0_ConfigSecurity,
148 .IsPeriphSecure = PPC_RSE_MAIN0_IsPeriphSecure,
149 .EnableInterrupt = PPC_RSE_MAIN0_EnableInterrupt,
150 .DisableInterrupt = PPC_RSE_MAIN0_DisableInterrupt,
151 .ClearInterrupt = PPC_RSE_MAIN0_ClearInterrupt,
152 .InterruptState = PPC_RSE_MAIN0_InterruptState
153 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
154 };
155 #endif /* RTE_PPC_RSE_MAIN0 */
156
157 #if (RTE_PPC_RSE_MAIN_EXP0)
158
159 static RSE_PPC_Resources MAIN_EXP0_PPC_DEV = {
160 .dev = &PPC_RSE_MAIN_EXP0_DEV,
161 };
162
163 /* MAIN PPCEXP0 Driver wrapper functions */
PPC_RSE_MAIN_EXP0_Initialize(void)164 static int32_t PPC_RSE_MAIN_EXP0_Initialize(void)
165 {
166 ppc_rse_init(MAIN_EXP0_PPC_DEV.dev);
167
168 return ARM_DRIVER_OK;
169 }
170
PPC_RSE_MAIN_EXP0_Uninitialize(void)171 static int32_t PPC_RSE_MAIN_EXP0_Uninitialize(void)
172 {
173 /* Nothing to do */
174 return ARM_DRIVER_OK;
175 }
176
177 static int32_t
PPC_RSE_MAIN_EXP0_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)178 PPC_RSE_MAIN_EXP0_ConfigPrivilege(uint32_t periph,
179 PPC_RSE_SecAttr sec_attr,
180 PPC_RSE_PrivAttr priv_attr)
181 {
182 enum ppc_rse_error_t ret;
183
184 ret = ppc_rse_config_privilege(MAIN_EXP0_PPC_DEV.dev, periph,
185 (enum ppc_rse_sec_attr_t)sec_attr,
186 (enum ppc_rse_priv_attr_t)priv_attr);
187
188 if( ret != PPC_RSE_ERR_NONE) {
189 return ARM_DRIVER_ERROR;
190 }
191
192 return ARM_DRIVER_OK;
193 }
194
PPC_RSE_MAIN_EXP0_IsPeriphPrivOnly(uint32_t periph)195 static bool PPC_RSE_MAIN_EXP0_IsPeriphPrivOnly(uint32_t periph)
196 {
197 return ppc_rse_is_periph_priv_only(MAIN_EXP0_PPC_DEV.dev, periph);
198 }
199
200 /* Secure only functions */
201 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
202
203 static int32_t
PPC_RSE_MAIN_EXP0_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)204 PPC_RSE_MAIN_EXP0_ConfigSecurity(uint32_t periph,
205 PPC_RSE_SecAttr sec_attr)
206 {
207 enum ppc_rse_error_t ret;
208
209 ret = ppc_rse_config_security(MAIN_EXP0_PPC_DEV.dev, periph,
210 (enum ppc_rse_sec_attr_t)sec_attr);
211
212 if( ret != PPC_RSE_ERR_NONE) {
213 return ARM_DRIVER_ERROR;
214 }
215
216 return ARM_DRIVER_OK;
217 }
218
PPC_RSE_MAIN_EXP0_IsPeriphSecure(uint32_t periph)219 static bool PPC_RSE_MAIN_EXP0_IsPeriphSecure(uint32_t periph)
220 {
221 return ppc_rse_is_periph_secure(MAIN_EXP0_PPC_DEV.dev, periph);
222 }
223
PPC_RSE_MAIN_EXP0_EnableInterrupt(void)224 static int32_t PPC_RSE_MAIN_EXP0_EnableInterrupt(void)
225 {
226 enum ppc_rse_error_t ret;
227
228 ret = ppc_rse_irq_enable(MAIN_EXP0_PPC_DEV.dev);
229
230 if( ret != PPC_RSE_ERR_NONE) {
231 return ARM_DRIVER_ERROR;
232 }
233
234 return ARM_DRIVER_OK;
235 }
236
PPC_RSE_MAIN_EXP0_DisableInterrupt(void)237 static void PPC_RSE_MAIN_EXP0_DisableInterrupt(void)
238 {
239 ppc_rse_irq_disable(MAIN_EXP0_PPC_DEV.dev);
240 }
241
PPC_RSE_MAIN_EXP0_ClearInterrupt(void)242 static void PPC_RSE_MAIN_EXP0_ClearInterrupt(void)
243 {
244 ppc_rse_clear_irq(MAIN_EXP0_PPC_DEV.dev);
245 }
246
PPC_RSE_MAIN_EXP0_InterruptState(void)247 static bool PPC_RSE_MAIN_EXP0_InterruptState(void)
248 {
249 return ppc_rse_irq_state(MAIN_EXP0_PPC_DEV.dev);
250 }
251
252 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
253
254 /* PPC RSE MAIN EXP0 Driver CMSIS access structure */
255 DRIVER_PPC_RSE Driver_PPC_RSE_MAIN_EXP0 = {
256 .GetVersion = PPC_RSE_GetVersion,
257 .Initialize = PPC_RSE_MAIN_EXP0_Initialize,
258 .Uninitialize = PPC_RSE_MAIN_EXP0_Uninitialize,
259 .ConfigPrivilege = PPC_RSE_MAIN_EXP0_ConfigPrivilege,
260 .IsPeriphPrivOnly = PPC_RSE_MAIN_EXP0_IsPeriphPrivOnly,
261 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
262 .ConfigSecurity = PPC_RSE_MAIN_EXP0_ConfigSecurity,
263 .IsPeriphSecure = PPC_RSE_MAIN_EXP0_IsPeriphSecure,
264 .EnableInterrupt = PPC_RSE_MAIN_EXP0_EnableInterrupt,
265 .DisableInterrupt = PPC_RSE_MAIN_EXP0_DisableInterrupt,
266 .ClearInterrupt = PPC_RSE_MAIN_EXP0_ClearInterrupt,
267 .InterruptState = PPC_RSE_MAIN_EXP0_InterruptState
268 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
269 };
270 #endif /* RTE_PPC_RSE_MAIN_EXP0 */
271
272 #if (RTE_PPC_RSE_MAIN_EXP1)
273
274 static RSE_PPC_Resources MAIN_EXP1_PPC_DEV = {
275 .dev = &PPC_RSE_MAIN_EXP1_DEV,
276 };
277
278 /* MAIN PPCEXP1 Driver wrapper functions */
PPC_RSE_MAIN_EXP1_Initialize(void)279 static int32_t PPC_RSE_MAIN_EXP1_Initialize(void)
280 {
281 ppc_rse_init(MAIN_EXP1_PPC_DEV.dev);
282
283 return ARM_DRIVER_OK;
284 }
285
PPC_RSE_MAIN_EXP1_Uninitialize(void)286 static int32_t PPC_RSE_MAIN_EXP1_Uninitialize(void)
287 {
288 /* Nothing to do */
289 return ARM_DRIVER_OK;
290 }
291
292 static int32_t
PPC_RSE_MAIN_EXP1_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)293 PPC_RSE_MAIN_EXP1_ConfigPrivilege(uint32_t periph,
294 PPC_RSE_SecAttr sec_attr,
295 PPC_RSE_PrivAttr priv_attr)
296 {
297 enum ppc_rse_error_t ret;
298
299 ret = ppc_rse_config_privilege(MAIN_EXP1_PPC_DEV.dev, periph,
300 (enum ppc_rse_sec_attr_t)sec_attr,
301 (enum ppc_rse_priv_attr_t)priv_attr);
302
303 if( ret != PPC_RSE_ERR_NONE) {
304 return ARM_DRIVER_ERROR;
305 }
306
307 return ARM_DRIVER_OK;
308 }
309
PPC_RSE_MAIN_EXP1_IsPeriphPrivOnly(uint32_t periph)310 static bool PPC_RSE_MAIN_EXP1_IsPeriphPrivOnly(uint32_t periph)
311 {
312 return ppc_rse_is_periph_priv_only(MAIN_EXP1_PPC_DEV.dev, periph);
313 }
314
315 /* Secure only functions */
316 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
317
318 static int32_t
PPC_RSE_MAIN_EXP1_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)319 PPC_RSE_MAIN_EXP1_ConfigSecurity(uint32_t periph,
320 PPC_RSE_SecAttr sec_attr)
321 {
322 enum ppc_rse_error_t ret;
323
324 ret = ppc_rse_config_security(MAIN_EXP1_PPC_DEV.dev, periph,
325 (enum ppc_rse_sec_attr_t)sec_attr);
326
327 if( ret != PPC_RSE_ERR_NONE) {
328 return ARM_DRIVER_ERROR;
329 }
330
331 return ARM_DRIVER_OK;
332 }
333
PPC_RSE_MAIN_EXP1_IsPeriphSecure(uint32_t periph)334 static bool PPC_RSE_MAIN_EXP1_IsPeriphSecure(uint32_t periph)
335 {
336 return ppc_rse_is_periph_secure(MAIN_EXP1_PPC_DEV.dev, periph);
337 }
338
PPC_RSE_MAIN_EXP1_EnableInterrupt(void)339 static int32_t PPC_RSE_MAIN_EXP1_EnableInterrupt(void)
340 {
341 enum ppc_rse_error_t ret;
342
343 ret = ppc_rse_irq_enable(MAIN_EXP1_PPC_DEV.dev);
344
345 if( ret != PPC_RSE_ERR_NONE) {
346 return ARM_DRIVER_ERROR;
347 }
348
349 return ARM_DRIVER_OK;
350 }
351
PPC_RSE_MAIN_EXP1_DisableInterrupt(void)352 static void PPC_RSE_MAIN_EXP1_DisableInterrupt(void)
353 {
354 ppc_rse_irq_disable(MAIN_EXP1_PPC_DEV.dev);
355 }
356
PPC_RSE_MAIN_EXP1_ClearInterrupt(void)357 static void PPC_RSE_MAIN_EXP1_ClearInterrupt(void)
358 {
359 ppc_rse_clear_irq(MAIN_EXP1_PPC_DEV.dev);
360 }
361
PPC_RSE_MAIN_EXP1_InterruptState(void)362 static bool PPC_RSE_MAIN_EXP1_InterruptState(void)
363 {
364 return ppc_rse_irq_state(MAIN_EXP1_PPC_DEV.dev);
365 }
366
367 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
368
369 /* PPC RSE MAIN EXP1 Driver CMSIS access structure */
370 DRIVER_PPC_RSE Driver_PPC_RSE_MAIN_EXP1 = {
371 .GetVersion = PPC_RSE_GetVersion,
372 .Initialize = PPC_RSE_MAIN_EXP1_Initialize,
373 .Uninitialize = PPC_RSE_MAIN_EXP1_Uninitialize,
374 .ConfigPrivilege = PPC_RSE_MAIN_EXP1_ConfigPrivilege,
375 .IsPeriphPrivOnly = PPC_RSE_MAIN_EXP1_IsPeriphPrivOnly,
376 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
377 .ConfigSecurity = PPC_RSE_MAIN_EXP1_ConfigSecurity,
378 .IsPeriphSecure = PPC_RSE_MAIN_EXP1_IsPeriphSecure,
379 .EnableInterrupt = PPC_RSE_MAIN_EXP1_EnableInterrupt,
380 .DisableInterrupt = PPC_RSE_MAIN_EXP1_DisableInterrupt,
381 .ClearInterrupt = PPC_RSE_MAIN_EXP1_ClearInterrupt,
382 .InterruptState = PPC_RSE_MAIN_EXP1_InterruptState
383 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
384 };
385 #endif /* RTE_PPC_RSE_MAIN_EXP1 */
386
387 #if (RTE_PPC_RSE_MAIN_EXP2)
388
389 static RSE_PPC_Resources MAIN_EXP2_PPC_DEV = {
390 .dev = &PPC_RSE_MAIN_EXP2_DEV,
391 };
392
393 /* MAIN PPCEXP2 Driver wrapper functions */
PPC_RSE_MAIN_EXP2_Initialize(void)394 static int32_t PPC_RSE_MAIN_EXP2_Initialize(void)
395 {
396 ppc_rse_init(MAIN_EXP2_PPC_DEV.dev);
397
398 return ARM_DRIVER_OK;
399 }
400
PPC_RSE_MAIN_EXP2_Uninitialize(void)401 static int32_t PPC_RSE_MAIN_EXP2_Uninitialize(void)
402 {
403 /* Nothing to do */
404 return ARM_DRIVER_OK;
405 }
406
407 static int32_t
PPC_RSE_MAIN_EXP2_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)408 PPC_RSE_MAIN_EXP2_ConfigPrivilege(uint32_t periph,
409 PPC_RSE_SecAttr sec_attr,
410 PPC_RSE_PrivAttr priv_attr)
411 {
412 enum ppc_rse_error_t ret;
413
414 ret = ppc_rse_config_privilege(MAIN_EXP2_PPC_DEV.dev, periph,
415 (enum ppc_rse_sec_attr_t)sec_attr,
416 (enum ppc_rse_priv_attr_t)priv_attr);
417
418 if( ret != PPC_RSE_ERR_NONE) {
419 return ARM_DRIVER_ERROR;
420 }
421
422 return ARM_DRIVER_OK;
423 }
424
PPC_RSE_MAIN_EXP2_IsPeriphPrivOnly(uint32_t periph)425 static bool PPC_RSE_MAIN_EXP2_IsPeriphPrivOnly(uint32_t periph)
426 {
427 return ppc_rse_is_periph_priv_only(MAIN_EXP2_PPC_DEV.dev, periph);
428 }
429
430 /* Secure only functions */
431 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
432
433 static int32_t
PPC_RSE_MAIN_EXP2_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)434 PPC_RSE_MAIN_EXP2_ConfigSecurity(uint32_t periph,
435 PPC_RSE_SecAttr sec_attr)
436 {
437 enum ppc_rse_error_t ret;
438
439 ret = ppc_rse_config_security(MAIN_EXP2_PPC_DEV.dev, periph,
440 (enum ppc_rse_sec_attr_t)sec_attr);
441
442 if( ret != PPC_RSE_ERR_NONE) {
443 return ARM_DRIVER_ERROR;
444 }
445
446 return ARM_DRIVER_OK;
447 }
448
PPC_RSE_MAIN_EXP2_IsPeriphSecure(uint32_t periph)449 static bool PPC_RSE_MAIN_EXP2_IsPeriphSecure(uint32_t periph)
450 {
451 return ppc_rse_is_periph_secure(MAIN_EXP2_PPC_DEV.dev, periph);
452 }
453
PPC_RSE_MAIN_EXP2_EnableInterrupt(void)454 static int32_t PPC_RSE_MAIN_EXP2_EnableInterrupt(void)
455 {
456 enum ppc_rse_error_t ret;
457
458 ret = ppc_rse_irq_enable(MAIN_EXP2_PPC_DEV.dev);
459
460 if( ret != PPC_RSE_ERR_NONE) {
461 return ARM_DRIVER_ERROR;
462 }
463
464 return ARM_DRIVER_OK;
465 }
466
PPC_RSE_MAIN_EXP2_DisableInterrupt(void)467 static void PPC_RSE_MAIN_EXP2_DisableInterrupt(void)
468 {
469 ppc_rse_irq_disable(MAIN_EXP2_PPC_DEV.dev);
470 }
471
PPC_RSE_MAIN_EXP2_ClearInterrupt(void)472 static void PPC_RSE_MAIN_EXP2_ClearInterrupt(void)
473 {
474 ppc_rse_clear_irq(MAIN_EXP2_PPC_DEV.dev);
475 }
476
PPC_RSE_MAIN_EXP2_InterruptState(void)477 static bool PPC_RSE_MAIN_EXP2_InterruptState(void)
478 {
479 return ppc_rse_irq_state(MAIN_EXP2_PPC_DEV.dev);
480 }
481
482 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
483
484 /* PPC RSE MAIN EXP2 Driver CMSIS access structure */
485 DRIVER_PPC_RSE Driver_PPC_RSE_MAIN_EXP2 = {
486 .GetVersion = PPC_RSE_GetVersion,
487 .Initialize = PPC_RSE_MAIN_EXP2_Initialize,
488 .Uninitialize = PPC_RSE_MAIN_EXP2_Uninitialize,
489 .ConfigPrivilege = PPC_RSE_MAIN_EXP2_ConfigPrivilege,
490 .IsPeriphPrivOnly = PPC_RSE_MAIN_EXP2_IsPeriphPrivOnly,
491 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
492 .ConfigSecurity = PPC_RSE_MAIN_EXP2_ConfigSecurity,
493 .IsPeriphSecure = PPC_RSE_MAIN_EXP2_IsPeriphSecure,
494 .EnableInterrupt = PPC_RSE_MAIN_EXP2_EnableInterrupt,
495 .DisableInterrupt = PPC_RSE_MAIN_EXP2_DisableInterrupt,
496 .ClearInterrupt = PPC_RSE_MAIN_EXP2_ClearInterrupt,
497 .InterruptState = PPC_RSE_MAIN_EXP2_InterruptState
498 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
499 };
500 #endif /* RTE_PPC_RSE_MAIN_EXP2 */
501
502 #if (RTE_PPC_RSE_MAIN_EXP3)
503
504 static RSE_PPC_Resources MAIN_EXP3_PPC_DEV = {
505 .dev = &PPC_RSE_MAIN_EXP3_DEV,
506 };
507
508 /* MAIN PPCEXP3 Driver wrapper functions */
PPC_RSE_MAIN_EXP3_Initialize(void)509 static int32_t PPC_RSE_MAIN_EXP3_Initialize(void)
510 {
511 ppc_rse_init(MAIN_EXP3_PPC_DEV.dev);
512
513 return ARM_DRIVER_OK;
514 }
515
PPC_RSE_MAIN_EXP3_Uninitialize(void)516 static int32_t PPC_RSE_MAIN_EXP3_Uninitialize(void)
517 {
518 /* Nothing to do */
519 return ARM_DRIVER_OK;
520 }
521
522 static int32_t
PPC_RSE_MAIN_EXP3_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)523 PPC_RSE_MAIN_EXP3_ConfigPrivilege(uint32_t periph,
524 PPC_RSE_SecAttr sec_attr,
525 PPC_RSE_PrivAttr priv_attr)
526 {
527 enum ppc_rse_error_t ret;
528
529 ret = ppc_rse_config_privilege(MAIN_EXP3_PPC_DEV.dev, periph,
530 (enum ppc_rse_sec_attr_t)sec_attr,
531 (enum ppc_rse_priv_attr_t)priv_attr);
532
533 if( ret != PPC_RSE_ERR_NONE) {
534 return ARM_DRIVER_ERROR;
535 }
536
537 return ARM_DRIVER_OK;
538 }
539
PPC_RSE_MAIN_EXP3_IsPeriphPrivOnly(uint32_t periph)540 static bool PPC_RSE_MAIN_EXP3_IsPeriphPrivOnly(uint32_t periph)
541 {
542 return ppc_rse_is_periph_priv_only(MAIN_EXP3_PPC_DEV.dev, periph);
543 }
544
545 /* Secure only functions */
546 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
547
548 static int32_t
PPC_RSE_MAIN_EXP3_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)549 PPC_RSE_MAIN_EXP3_ConfigSecurity(uint32_t periph,
550 PPC_RSE_SecAttr sec_attr)
551 {
552 enum ppc_rse_error_t ret;
553
554 ret = ppc_rse_config_security(MAIN_EXP3_PPC_DEV.dev, periph,
555 (enum ppc_rse_sec_attr_t)sec_attr);
556
557 if( ret != PPC_RSE_ERR_NONE) {
558 return ARM_DRIVER_ERROR;
559 }
560
561 return ARM_DRIVER_OK;
562 }
563
PPC_RSE_MAIN_EXP3_IsPeriphSecure(uint32_t periph)564 static bool PPC_RSE_MAIN_EXP3_IsPeriphSecure(uint32_t periph)
565 {
566 return ppc_rse_is_periph_secure(MAIN_EXP3_PPC_DEV.dev, periph);
567 }
568
PPC_RSE_MAIN_EXP3_EnableInterrupt(void)569 static int32_t PPC_RSE_MAIN_EXP3_EnableInterrupt(void)
570 {
571 enum ppc_rse_error_t ret;
572
573 ret = ppc_rse_irq_enable(MAIN_EXP3_PPC_DEV.dev);
574
575 if( ret != PPC_RSE_ERR_NONE) {
576 return ARM_DRIVER_ERROR;
577 }
578
579 return ARM_DRIVER_OK;
580 }
581
PPC_RSE_MAIN_EXP3_DisableInterrupt(void)582 static void PPC_RSE_MAIN_EXP3_DisableInterrupt(void)
583 {
584 ppc_rse_irq_disable(MAIN_EXP3_PPC_DEV.dev);
585 }
586
PPC_RSE_MAIN_EXP3_ClearInterrupt(void)587 static void PPC_RSE_MAIN_EXP3_ClearInterrupt(void)
588 {
589 ppc_rse_clear_irq(MAIN_EXP3_PPC_DEV.dev);
590 }
591
PPC_RSE_MAIN_EXP3_InterruptState(void)592 static bool PPC_RSE_MAIN_EXP3_InterruptState(void)
593 {
594 return ppc_rse_irq_state(MAIN_EXP3_PPC_DEV.dev);
595 }
596
597 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
598
599 /* PPC RSE MAIN EXP3 Driver CMSIS access structure */
600 DRIVER_PPC_RSE Driver_PPC_RSE_MAIN_EXP3 = {
601 .GetVersion = PPC_RSE_GetVersion,
602 .Initialize = PPC_RSE_MAIN_EXP3_Initialize,
603 .Uninitialize = PPC_RSE_MAIN_EXP3_Uninitialize,
604 .ConfigPrivilege = PPC_RSE_MAIN_EXP3_ConfigPrivilege,
605 .IsPeriphPrivOnly = PPC_RSE_MAIN_EXP3_IsPeriphPrivOnly,
606 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
607 .ConfigSecurity = PPC_RSE_MAIN_EXP3_ConfigSecurity,
608 .IsPeriphSecure = PPC_RSE_MAIN_EXP3_IsPeriphSecure,
609 .EnableInterrupt = PPC_RSE_MAIN_EXP3_EnableInterrupt,
610 .DisableInterrupt = PPC_RSE_MAIN_EXP3_DisableInterrupt,
611 .ClearInterrupt = PPC_RSE_MAIN_EXP3_ClearInterrupt,
612 .InterruptState = PPC_RSE_MAIN_EXP3_InterruptState
613 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
614 };
615 #endif /* RTE_PPC_RSE_MAIN_EXP3 */
616
617 #if (RTE_PPC_RSE_PERIPH0)
618
619 static RSE_PPC_Resources PERIPH0_PPC_DEV = {
620 .dev = &PPC_RSE_PERIPH0_DEV,
621 };
622
623 /* PERIPH0 Driver wrapper functions */
PPC_RSE_PERIPH0_Initialize(void)624 static int32_t PPC_RSE_PERIPH0_Initialize(void)
625 {
626 ppc_rse_init(PERIPH0_PPC_DEV.dev);
627
628 return ARM_DRIVER_OK;
629 }
630
PPC_RSE_PERIPH0_Uninitialize(void)631 static int32_t PPC_RSE_PERIPH0_Uninitialize(void)
632 {
633 /* Nothing to do */
634 return ARM_DRIVER_OK;
635 }
636
637 static int32_t
PPC_RSE_PERIPH0_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)638 PPC_RSE_PERIPH0_ConfigPrivilege(uint32_t periph,
639 PPC_RSE_SecAttr sec_attr,
640 PPC_RSE_PrivAttr priv_attr)
641 {
642 enum ppc_rse_error_t ret;
643
644 ret = ppc_rse_config_privilege(PERIPH0_PPC_DEV.dev, periph,
645 (enum ppc_rse_sec_attr_t)sec_attr,
646 (enum ppc_rse_priv_attr_t)priv_attr);
647
648 if( ret != PPC_RSE_ERR_NONE) {
649 return ARM_DRIVER_ERROR;
650 }
651
652 return ARM_DRIVER_OK;
653 }
654
PPC_RSE_PERIPH0_IsPeriphPrivOnly(uint32_t periph)655 static bool PPC_RSE_PERIPH0_IsPeriphPrivOnly(uint32_t periph)
656 {
657 return ppc_rse_is_periph_priv_only(PERIPH0_PPC_DEV.dev, periph);
658 }
659
660 /* Secure only functions */
661 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
662
663 static int32_t
PPC_RSE_PERIPH0_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)664 PPC_RSE_PERIPH0_ConfigSecurity(uint32_t periph,
665 PPC_RSE_SecAttr sec_attr)
666 {
667 enum ppc_rse_error_t ret;
668
669 ret = ppc_rse_config_security(PERIPH0_PPC_DEV.dev, periph,
670 (enum ppc_rse_sec_attr_t)sec_attr);
671
672 if( ret != PPC_RSE_ERR_NONE) {
673 return ARM_DRIVER_ERROR;
674 }
675
676 return ARM_DRIVER_OK;
677 }
678
PPC_RSE_PERIPH0_IsPeriphSecure(uint32_t periph)679 static bool PPC_RSE_PERIPH0_IsPeriphSecure(uint32_t periph)
680 {
681 return ppc_rse_is_periph_secure(PERIPH0_PPC_DEV.dev, periph);
682 }
683
PPC_RSE_PERIPH0_EnableInterrupt(void)684 static int32_t PPC_RSE_PERIPH0_EnableInterrupt(void)
685 {
686 enum ppc_rse_error_t ret;
687
688 ret = ppc_rse_irq_enable(PERIPH0_PPC_DEV.dev);
689
690 if( ret != PPC_RSE_ERR_NONE) {
691 return ARM_DRIVER_ERROR;
692 }
693
694 return ARM_DRIVER_OK;
695 }
696
PPC_RSE_PERIPH0_DisableInterrupt(void)697 static void PPC_RSE_PERIPH0_DisableInterrupt(void)
698 {
699 ppc_rse_irq_disable(PERIPH0_PPC_DEV.dev);
700 }
701
PPC_RSE_PERIPH0_ClearInterrupt(void)702 static void PPC_RSE_PERIPH0_ClearInterrupt(void)
703 {
704 ppc_rse_clear_irq(PERIPH0_PPC_DEV.dev);
705 }
706
PPC_RSE_PERIPH0_InterruptState(void)707 static bool PPC_RSE_PERIPH0_InterruptState(void)
708 {
709 return ppc_rse_irq_state(PERIPH0_PPC_DEV.dev);
710 }
711
712 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
713
714 /* PPC RSE PERIPH0 Driver CMSIS access structure */
715 DRIVER_PPC_RSE Driver_PPC_RSE_PERIPH0 = {
716 .GetVersion = PPC_RSE_GetVersion,
717 .Initialize = PPC_RSE_PERIPH0_Initialize,
718 .Uninitialize = PPC_RSE_PERIPH0_Uninitialize,
719 .ConfigPrivilege = PPC_RSE_PERIPH0_ConfigPrivilege,
720 .IsPeriphPrivOnly = PPC_RSE_PERIPH0_IsPeriphPrivOnly,
721 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
722 .ConfigSecurity = PPC_RSE_PERIPH0_ConfigSecurity,
723 .IsPeriphSecure = PPC_RSE_PERIPH0_IsPeriphSecure,
724 .EnableInterrupt = PPC_RSE_PERIPH0_EnableInterrupt,
725 .DisableInterrupt = PPC_RSE_PERIPH0_DisableInterrupt,
726 .ClearInterrupt = PPC_RSE_PERIPH0_ClearInterrupt,
727 .InterruptState = PPC_RSE_PERIPH0_InterruptState
728 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
729 };
730 #endif /* RTE_PPC_RSE_PERIPH0 */
731
732 #if (RTE_PPC_RSE_PERIPH1)
733
734 static RSE_PPC_Resources PERIPH1_PPC_DEV = {
735 .dev = &PPC_RSE_PERIPH1_DEV,
736 };
737
738 /* PERIPH1 Driver wrapper functions */
PPC_RSE_PERIPH1_Initialize(void)739 static int32_t PPC_RSE_PERIPH1_Initialize(void)
740 {
741 ppc_rse_init(PERIPH1_PPC_DEV.dev);
742
743 return ARM_DRIVER_OK;
744 }
745
PPC_RSE_PERIPH1_Uninitialize(void)746 static int32_t PPC_RSE_PERIPH1_Uninitialize(void)
747 {
748 /* Nothing to do */
749 return ARM_DRIVER_OK;
750 }
751
752 static int32_t
PPC_RSE_PERIPH1_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)753 PPC_RSE_PERIPH1_ConfigPrivilege(uint32_t periph,
754 PPC_RSE_SecAttr sec_attr,
755 PPC_RSE_PrivAttr priv_attr)
756 {
757 enum ppc_rse_error_t ret;
758
759 ret = ppc_rse_config_privilege(PERIPH1_PPC_DEV.dev, periph,
760 (enum ppc_rse_sec_attr_t)sec_attr,
761 (enum ppc_rse_priv_attr_t)priv_attr);
762
763 if( ret != PPC_RSE_ERR_NONE) {
764 return ARM_DRIVER_ERROR;
765 }
766
767 return ARM_DRIVER_OK;
768 }
769
PPC_RSE_PERIPH1_IsPeriphPrivOnly(uint32_t periph)770 static bool PPC_RSE_PERIPH1_IsPeriphPrivOnly(uint32_t periph)
771 {
772 return ppc_rse_is_periph_priv_only(PERIPH1_PPC_DEV.dev, periph);
773 }
774
775 /* Secure only functions */
776 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
777
778 static int32_t
PPC_RSE_PERIPH1_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)779 PPC_RSE_PERIPH1_ConfigSecurity(uint32_t periph,
780 PPC_RSE_SecAttr sec_attr)
781 {
782 enum ppc_rse_error_t ret;
783
784 ret = ppc_rse_config_security(PERIPH1_PPC_DEV.dev, periph,
785 (enum ppc_rse_sec_attr_t)sec_attr);
786
787 if( ret != PPC_RSE_ERR_NONE) {
788 return ARM_DRIVER_ERROR;
789 }
790
791 return ARM_DRIVER_OK;
792 }
793
PPC_RSE_PERIPH1_IsPeriphSecure(uint32_t periph)794 static bool PPC_RSE_PERIPH1_IsPeriphSecure(uint32_t periph)
795 {
796 return ppc_rse_is_periph_secure(PERIPH1_PPC_DEV.dev, periph);
797 }
798
PPC_RSE_PERIPH1_EnableInterrupt(void)799 static int32_t PPC_RSE_PERIPH1_EnableInterrupt(void)
800 {
801 enum ppc_rse_error_t ret;
802
803 ret = ppc_rse_irq_enable(PERIPH1_PPC_DEV.dev);
804
805 if( ret != PPC_RSE_ERR_NONE) {
806 return ARM_DRIVER_ERROR;
807 }
808
809 return ARM_DRIVER_OK;
810 }
811
PPC_RSE_PERIPH1_DisableInterrupt(void)812 static void PPC_RSE_PERIPH1_DisableInterrupt(void)
813 {
814 ppc_rse_irq_disable(PERIPH1_PPC_DEV.dev);
815 }
816
PPC_RSE_PERIPH1_ClearInterrupt(void)817 static void PPC_RSE_PERIPH1_ClearInterrupt(void)
818 {
819 ppc_rse_clear_irq(PERIPH1_PPC_DEV.dev);
820 }
821
PPC_RSE_PERIPH1_InterruptState(void)822 static bool PPC_RSE_PERIPH1_InterruptState(void)
823 {
824 return ppc_rse_irq_state(PERIPH1_PPC_DEV.dev);
825 }
826
827 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
828
829 /* PPC RSE PERIPH1 Driver CMSIS access structure */
830 DRIVER_PPC_RSE Driver_PPC_RSE_PERIPH1 = {
831 .GetVersion = PPC_RSE_GetVersion,
832 .Initialize = PPC_RSE_PERIPH1_Initialize,
833 .Uninitialize = PPC_RSE_PERIPH1_Uninitialize,
834 .ConfigPrivilege = PPC_RSE_PERIPH1_ConfigPrivilege,
835 .IsPeriphPrivOnly = PPC_RSE_PERIPH1_IsPeriphPrivOnly,
836 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
837 .ConfigSecurity = PPC_RSE_PERIPH1_ConfigSecurity,
838 .IsPeriphSecure = PPC_RSE_PERIPH1_IsPeriphSecure,
839 .EnableInterrupt = PPC_RSE_PERIPH1_EnableInterrupt,
840 .DisableInterrupt = PPC_RSE_PERIPH1_DisableInterrupt,
841 .ClearInterrupt = PPC_RSE_PERIPH1_ClearInterrupt,
842 .InterruptState = PPC_RSE_PERIPH1_InterruptState
843 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
844 };
845 #endif /* RTE_PPC_RSE_PERIPH1 */
846
847 #if (RTE_PPC_RSE_PERIPH_EXP0)
848
849 static RSE_PPC_Resources PERIPH_EXP0_PPC_DEV = {
850 .dev = &PPC_RSE_PERIPH_EXP0_DEV,
851 };
852
853 /* PERIPH PPCEXP0 Driver wrapper functions */
PPC_RSE_PERIPH_EXP0_Initialize(void)854 static int32_t PPC_RSE_PERIPH_EXP0_Initialize(void)
855 {
856 ppc_rse_init(PERIPH_EXP0_PPC_DEV.dev);
857
858 return ARM_DRIVER_OK;
859 }
860
PPC_RSE_PERIPH_EXP0_Uninitialize(void)861 static int32_t PPC_RSE_PERIPH_EXP0_Uninitialize(void)
862 {
863 /* Nothing to do */
864 return ARM_DRIVER_OK;
865 }
866
867 static int32_t
PPC_RSE_PERIPH_EXP0_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)868 PPC_RSE_PERIPH_EXP0_ConfigPrivilege(uint32_t periph,
869 PPC_RSE_SecAttr sec_attr,
870 PPC_RSE_PrivAttr priv_attr)
871 {
872 enum ppc_rse_error_t ret;
873
874 ret = ppc_rse_config_privilege(PERIPH_EXP0_PPC_DEV.dev, periph,
875 (enum ppc_rse_sec_attr_t)sec_attr,
876 (enum ppc_rse_priv_attr_t)priv_attr);
877
878 if( ret != PPC_RSE_ERR_NONE) {
879 return ARM_DRIVER_ERROR;
880 }
881
882 return ARM_DRIVER_OK;
883 }
884
PPC_RSE_PERIPH_EXP0_IsPeriphPrivOnly(uint32_t periph)885 static bool PPC_RSE_PERIPH_EXP0_IsPeriphPrivOnly(uint32_t periph)
886 {
887 return ppc_rse_is_periph_priv_only(PERIPH_EXP0_PPC_DEV.dev, periph);
888 }
889
890 /* Secure only functions */
891 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
892
893 static int32_t
PPC_RSE_PERIPH_EXP0_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)894 PPC_RSE_PERIPH_EXP0_ConfigSecurity(uint32_t periph,
895 PPC_RSE_SecAttr sec_attr)
896 {
897 enum ppc_rse_error_t ret;
898
899 ret = ppc_rse_config_security(PERIPH_EXP0_PPC_DEV.dev, periph,
900 (enum ppc_rse_sec_attr_t)sec_attr);
901
902 if( ret != PPC_RSE_ERR_NONE) {
903 return ARM_DRIVER_ERROR;
904 }
905
906 return ARM_DRIVER_OK;
907 }
908
PPC_RSE_PERIPH_EXP0_IsPeriphSecure(uint32_t periph)909 static bool PPC_RSE_PERIPH_EXP0_IsPeriphSecure(uint32_t periph)
910 {
911 return ppc_rse_is_periph_secure(PERIPH_EXP0_PPC_DEV.dev, periph);
912 }
913
PPC_RSE_PERIPH_EXP0_EnableInterrupt(void)914 static int32_t PPC_RSE_PERIPH_EXP0_EnableInterrupt(void)
915 {
916 enum ppc_rse_error_t ret;
917
918 ret = ppc_rse_irq_enable(PERIPH_EXP0_PPC_DEV.dev);
919
920 if( ret != PPC_RSE_ERR_NONE) {
921 return ARM_DRIVER_ERROR;
922 }
923
924 return ARM_DRIVER_OK;
925 }
926
PPC_RSE_PERIPH_EXP0_DisableInterrupt(void)927 static void PPC_RSE_PERIPH_EXP0_DisableInterrupt(void)
928 {
929 ppc_rse_irq_disable(PERIPH_EXP0_PPC_DEV.dev);
930 }
931
PPC_RSE_PERIPH_EXP0_ClearInterrupt(void)932 static void PPC_RSE_PERIPH_EXP0_ClearInterrupt(void)
933 {
934 ppc_rse_clear_irq(PERIPH_EXP0_PPC_DEV.dev);
935 }
936
PPC_RSE_PERIPH_EXP0_InterruptState(void)937 static bool PPC_RSE_PERIPH_EXP0_InterruptState(void)
938 {
939 return ppc_rse_irq_state(PERIPH_EXP0_PPC_DEV.dev);
940 }
941
942 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
943
944 /* PPC RSE PERIPH EXP0 Driver CMSIS access structure */
945 DRIVER_PPC_RSE Driver_PPC_RSE_PERIPH_EXP0 = {
946 .GetVersion = PPC_RSE_GetVersion,
947 .Initialize = PPC_RSE_PERIPH_EXP0_Initialize,
948 .Uninitialize = PPC_RSE_PERIPH_EXP0_Uninitialize,
949 .ConfigPrivilege = PPC_RSE_PERIPH_EXP0_ConfigPrivilege,
950 .IsPeriphPrivOnly = PPC_RSE_PERIPH_EXP0_IsPeriphPrivOnly,
951 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
952 .ConfigSecurity = PPC_RSE_PERIPH_EXP0_ConfigSecurity,
953 .IsPeriphSecure = PPC_RSE_PERIPH_EXP0_IsPeriphSecure,
954 .EnableInterrupt = PPC_RSE_PERIPH_EXP0_EnableInterrupt,
955 .DisableInterrupt = PPC_RSE_PERIPH_EXP0_DisableInterrupt,
956 .ClearInterrupt = PPC_RSE_PERIPH_EXP0_ClearInterrupt,
957 .InterruptState = PPC_RSE_PERIPH_EXP0_InterruptState
958 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
959 };
960 #endif /* RTE_PPC_RSE_PERIPH_EXP0 */
961
962 #if (RTE_PPC_RSE_PERIPH_EXP1)
963
964 static RSE_PPC_Resources PERIPH_EXP1_PPC_DEV = {
965 .dev = &PPC_RSE_PERIPH_EXP1_DEV,
966 };
967
968 /* PERIPH PPCEXP1 Driver wrapper functions */
PPC_RSE_PERIPH_EXP1_Initialize(void)969 static int32_t PPC_RSE_PERIPH_EXP1_Initialize(void)
970 {
971 ppc_rse_init(PERIPH_EXP1_PPC_DEV.dev);
972
973 return ARM_DRIVER_OK;
974 }
975
PPC_RSE_PERIPH_EXP1_Uninitialize(void)976 static int32_t PPC_RSE_PERIPH_EXP1_Uninitialize(void)
977 {
978 /* Nothing to do */
979 return ARM_DRIVER_OK;
980 }
981
982 static int32_t
PPC_RSE_PERIPH_EXP1_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)983 PPC_RSE_PERIPH_EXP1_ConfigPrivilege(uint32_t periph,
984 PPC_RSE_SecAttr sec_attr,
985 PPC_RSE_PrivAttr priv_attr)
986 {
987 enum ppc_rse_error_t ret;
988
989 ret = ppc_rse_config_privilege(PERIPH_EXP1_PPC_DEV.dev, periph,
990 (enum ppc_rse_sec_attr_t)sec_attr,
991 (enum ppc_rse_priv_attr_t)priv_attr);
992
993 if( ret != PPC_RSE_ERR_NONE) {
994 return ARM_DRIVER_ERROR;
995 }
996
997 return ARM_DRIVER_OK;
998 }
999
PPC_RSE_PERIPH_EXP1_IsPeriphPrivOnly(uint32_t periph)1000 static bool PPC_RSE_PERIPH_EXP1_IsPeriphPrivOnly(uint32_t periph)
1001 {
1002 return ppc_rse_is_periph_priv_only(PERIPH_EXP1_PPC_DEV.dev, periph);
1003 }
1004
1005 /* Secure only functions */
1006 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
1007
1008 static int32_t
PPC_RSE_PERIPH_EXP1_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)1009 PPC_RSE_PERIPH_EXP1_ConfigSecurity(uint32_t periph,
1010 PPC_RSE_SecAttr sec_attr)
1011 {
1012 enum ppc_rse_error_t ret;
1013
1014 ret = ppc_rse_config_security(PERIPH_EXP1_PPC_DEV.dev, periph,
1015 (enum ppc_rse_sec_attr_t)sec_attr);
1016
1017 if( ret != PPC_RSE_ERR_NONE) {
1018 return ARM_DRIVER_ERROR;
1019 }
1020
1021 return ARM_DRIVER_OK;
1022 }
1023
PPC_RSE_PERIPH_EXP1_IsPeriphSecure(uint32_t periph)1024 static bool PPC_RSE_PERIPH_EXP1_IsPeriphSecure(uint32_t periph)
1025 {
1026 return ppc_rse_is_periph_secure(PERIPH_EXP1_PPC_DEV.dev, periph);
1027 }
1028
PPC_RSE_PERIPH_EXP1_EnableInterrupt(void)1029 static int32_t PPC_RSE_PERIPH_EXP1_EnableInterrupt(void)
1030 {
1031 enum ppc_rse_error_t ret;
1032
1033 ret = ppc_rse_irq_enable(PERIPH_EXP1_PPC_DEV.dev);
1034
1035 if( ret != PPC_RSE_ERR_NONE) {
1036 return ARM_DRIVER_ERROR;
1037 }
1038
1039 return ARM_DRIVER_OK;
1040 }
1041
PPC_RSE_PERIPH_EXP1_DisableInterrupt(void)1042 static void PPC_RSE_PERIPH_EXP1_DisableInterrupt(void)
1043 {
1044 ppc_rse_irq_disable(PERIPH_EXP1_PPC_DEV.dev);
1045 }
1046
PPC_RSE_PERIPH_EXP1_ClearInterrupt(void)1047 static void PPC_RSE_PERIPH_EXP1_ClearInterrupt(void)
1048 {
1049 ppc_rse_clear_irq(PERIPH_EXP1_PPC_DEV.dev);
1050 }
1051
PPC_RSE_PERIPH_EXP1_InterruptState(void)1052 static bool PPC_RSE_PERIPH_EXP1_InterruptState(void)
1053 {
1054 return ppc_rse_irq_state(PERIPH_EXP1_PPC_DEV.dev);
1055 }
1056
1057 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
1058
1059 /* PPC RSE PERIPH EXP1 Driver CMSIS access structure */
1060 DRIVER_PPC_RSE Driver_PPC_RSE_PERIPH_EXP1 = {
1061 .GetVersion = PPC_RSE_GetVersion,
1062 .Initialize = PPC_RSE_PERIPH_EXP1_Initialize,
1063 .Uninitialize = PPC_RSE_PERIPH_EXP1_Uninitialize,
1064 .ConfigPrivilege = PPC_RSE_PERIPH_EXP1_ConfigPrivilege,
1065 .IsPeriphPrivOnly = PPC_RSE_PERIPH_EXP1_IsPeriphPrivOnly,
1066 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
1067 .ConfigSecurity = PPC_RSE_PERIPH_EXP1_ConfigSecurity,
1068 .IsPeriphSecure = PPC_RSE_PERIPH_EXP1_IsPeriphSecure,
1069 .EnableInterrupt = PPC_RSE_PERIPH_EXP1_EnableInterrupt,
1070 .DisableInterrupt = PPC_RSE_PERIPH_EXP1_DisableInterrupt,
1071 .ClearInterrupt = PPC_RSE_PERIPH_EXP1_ClearInterrupt,
1072 .InterruptState = PPC_RSE_PERIPH_EXP1_InterruptState
1073 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
1074 };
1075 #endif /* RTE_PPC_RSE_PERIPH_EXP1 */
1076
1077 #if (RTE_PPC_RSE_PERIPH_EXP2)
1078
1079 static RSE_PPC_Resources PERIPH_EXP2_PPC_DEV = {
1080 .dev = &PPC_RSE_PERIPH_EXP2_DEV,
1081 };
1082
1083 /* PERIPH PPCEXP2 Driver wrapper functions */
PPC_RSE_PERIPH_EXP2_Initialize(void)1084 static int32_t PPC_RSE_PERIPH_EXP2_Initialize(void)
1085 {
1086 ppc_rse_init(PERIPH_EXP2_PPC_DEV.dev);
1087
1088 return ARM_DRIVER_OK;
1089 }
1090
PPC_RSE_PERIPH_EXP2_Uninitialize(void)1091 static int32_t PPC_RSE_PERIPH_EXP2_Uninitialize(void)
1092 {
1093 /* Nothing to do */
1094 return ARM_DRIVER_OK;
1095 }
1096
1097 static int32_t
PPC_RSE_PERIPH_EXP2_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)1098 PPC_RSE_PERIPH_EXP2_ConfigPrivilege(uint32_t periph,
1099 PPC_RSE_SecAttr sec_attr,
1100 PPC_RSE_PrivAttr priv_attr)
1101 {
1102 enum ppc_rse_error_t ret;
1103
1104 ret = ppc_rse_config_privilege(PERIPH_EXP2_PPC_DEV.dev, periph,
1105 (enum ppc_rse_sec_attr_t)sec_attr,
1106 (enum ppc_rse_priv_attr_t)priv_attr);
1107
1108 if( ret != PPC_RSE_ERR_NONE) {
1109 return ARM_DRIVER_ERROR;
1110 }
1111
1112 return ARM_DRIVER_OK;
1113 }
1114
PPC_RSE_PERIPH_EXP2_IsPeriphPrivOnly(uint32_t periph)1115 static bool PPC_RSE_PERIPH_EXP2_IsPeriphPrivOnly(uint32_t periph)
1116 {
1117 return ppc_rse_is_periph_priv_only(PERIPH_EXP2_PPC_DEV.dev, periph);
1118 }
1119
1120 /* Secure only functions */
1121 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
1122
1123 static int32_t
PPC_RSE_PERIPH_EXP2_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)1124 PPC_RSE_PERIPH_EXP2_ConfigSecurity(uint32_t periph,
1125 PPC_RSE_SecAttr sec_attr)
1126 {
1127 enum ppc_rse_error_t ret;
1128
1129 ret = ppc_rse_config_security(PERIPH_EXP2_PPC_DEV.dev, periph,
1130 (enum ppc_rse_sec_attr_t)sec_attr);
1131
1132 if( ret != PPC_RSE_ERR_NONE) {
1133 return ARM_DRIVER_ERROR;
1134 }
1135
1136 return ARM_DRIVER_OK;
1137 }
1138
PPC_RSE_PERIPH_EXP2_IsPeriphSecure(uint32_t periph)1139 static bool PPC_RSE_PERIPH_EXP2_IsPeriphSecure(uint32_t periph)
1140 {
1141 return ppc_rse_is_periph_secure(PERIPH_EXP2_PPC_DEV.dev, periph);
1142 }
1143
PPC_RSE_PERIPH_EXP2_EnableInterrupt(void)1144 static int32_t PPC_RSE_PERIPH_EXP2_EnableInterrupt(void)
1145 {
1146 enum ppc_rse_error_t ret;
1147
1148 ret = ppc_rse_irq_enable(PERIPH_EXP2_PPC_DEV.dev);
1149
1150 if( ret != PPC_RSE_ERR_NONE) {
1151 return ARM_DRIVER_ERROR;
1152 }
1153
1154 return ARM_DRIVER_OK;
1155 }
1156
PPC_RSE_PERIPH_EXP2_DisableInterrupt(void)1157 static void PPC_RSE_PERIPH_EXP2_DisableInterrupt(void)
1158 {
1159 ppc_rse_irq_disable(PERIPH_EXP2_PPC_DEV.dev);
1160 }
1161
PPC_RSE_PERIPH_EXP2_ClearInterrupt(void)1162 static void PPC_RSE_PERIPH_EXP2_ClearInterrupt(void)
1163 {
1164 ppc_rse_clear_irq(PERIPH_EXP2_PPC_DEV.dev);
1165 }
1166
PPC_RSE_PERIPH_EXP2_InterruptState(void)1167 static bool PPC_RSE_PERIPH_EXP2_InterruptState(void)
1168 {
1169 return ppc_rse_irq_state(PERIPH_EXP2_PPC_DEV.dev);
1170 }
1171
1172 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
1173
1174 /* PPC RSE PERIPH EXP2 Driver CMSIS access structure */
1175 DRIVER_PPC_RSE Driver_PPC_RSE_PERIPH_EXP2 = {
1176 .GetVersion = PPC_RSE_GetVersion,
1177 .Initialize = PPC_RSE_PERIPH_EXP2_Initialize,
1178 .Uninitialize = PPC_RSE_PERIPH_EXP2_Uninitialize,
1179 .ConfigPrivilege = PPC_RSE_PERIPH_EXP2_ConfigPrivilege,
1180 .IsPeriphPrivOnly = PPC_RSE_PERIPH_EXP2_IsPeriphPrivOnly,
1181 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
1182 .ConfigSecurity = PPC_RSE_PERIPH_EXP2_ConfigSecurity,
1183 .IsPeriphSecure = PPC_RSE_PERIPH_EXP2_IsPeriphSecure,
1184 .EnableInterrupt = PPC_RSE_PERIPH_EXP2_EnableInterrupt,
1185 .DisableInterrupt = PPC_RSE_PERIPH_EXP2_DisableInterrupt,
1186 .ClearInterrupt = PPC_RSE_PERIPH_EXP2_ClearInterrupt,
1187 .InterruptState = PPC_RSE_PERIPH_EXP2_InterruptState
1188 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
1189 };
1190 #endif /* RTE_PPC_RSE_PERIPH_EXP2 */
1191
1192 #if (RTE_PPC_RSE_PERIPH_EXP3)
1193
1194 static RSE_PPC_Resources PERIPH_EXP3_PPC_DEV = {
1195 .dev = &PPC_RSE_PERIPH_EXP3_DEV,
1196 };
1197
1198 /* PERIPH PPCEXP3 Driver wrapper functions */
PPC_RSE_PERIPH_EXP3_Initialize(void)1199 static int32_t PPC_RSE_PERIPH_EXP3_Initialize(void)
1200 {
1201 ppc_rse_init(PERIPH_EXP3_PPC_DEV.dev);
1202
1203 return ARM_DRIVER_OK;
1204 }
1205
PPC_RSE_PERIPH_EXP3_Uninitialize(void)1206 static int32_t PPC_RSE_PERIPH_EXP3_Uninitialize(void)
1207 {
1208 /* Nothing to do */
1209 return ARM_DRIVER_OK;
1210 }
1211
1212 static int32_t
PPC_RSE_PERIPH_EXP3_ConfigPrivilege(uint32_t periph,PPC_RSE_SecAttr sec_attr,PPC_RSE_PrivAttr priv_attr)1213 PPC_RSE_PERIPH_EXP3_ConfigPrivilege(uint32_t periph,
1214 PPC_RSE_SecAttr sec_attr,
1215 PPC_RSE_PrivAttr priv_attr)
1216 {
1217 enum ppc_rse_error_t ret;
1218
1219 ret = ppc_rse_config_privilege(PERIPH_EXP3_PPC_DEV.dev, periph,
1220 (enum ppc_rse_sec_attr_t)sec_attr,
1221 (enum ppc_rse_priv_attr_t)priv_attr);
1222
1223 if( ret != PPC_RSE_ERR_NONE) {
1224 return ARM_DRIVER_ERROR;
1225 }
1226
1227 return ARM_DRIVER_OK;
1228 }
1229
PPC_RSE_PERIPH_EXP3_IsPeriphPrivOnly(uint32_t periph)1230 static bool PPC_RSE_PERIPH_EXP3_IsPeriphPrivOnly(uint32_t periph)
1231 {
1232 return ppc_rse_is_periph_priv_only(PERIPH_EXP3_PPC_DEV.dev, periph);
1233 }
1234
1235 /* Secure only functions */
1236 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
1237
1238 static int32_t
PPC_RSE_PERIPH_EXP3_ConfigSecurity(uint32_t periph,PPC_RSE_SecAttr sec_attr)1239 PPC_RSE_PERIPH_EXP3_ConfigSecurity(uint32_t periph,
1240 PPC_RSE_SecAttr sec_attr)
1241 {
1242 enum ppc_rse_error_t ret;
1243
1244 ret = ppc_rse_config_security(PERIPH_EXP3_PPC_DEV.dev, periph,
1245 (enum ppc_rse_sec_attr_t)sec_attr);
1246
1247 if( ret != PPC_RSE_ERR_NONE) {
1248 return ARM_DRIVER_ERROR;
1249 }
1250
1251 return ARM_DRIVER_OK;
1252 }
1253
PPC_RSE_PERIPH_EXP3_IsPeriphSecure(uint32_t periph)1254 static bool PPC_RSE_PERIPH_EXP3_IsPeriphSecure(uint32_t periph)
1255 {
1256 return ppc_rse_is_periph_secure(PERIPH_EXP3_PPC_DEV.dev, periph);
1257 }
1258
PPC_RSE_PERIPH_EXP3_EnableInterrupt(void)1259 static int32_t PPC_RSE_PERIPH_EXP3_EnableInterrupt(void)
1260 {
1261 enum ppc_rse_error_t ret;
1262
1263 ret = ppc_rse_irq_enable(PERIPH_EXP3_PPC_DEV.dev);
1264
1265 if( ret != PPC_RSE_ERR_NONE) {
1266 return ARM_DRIVER_ERROR;
1267 }
1268
1269 return ARM_DRIVER_OK;
1270 }
1271
PPC_RSE_PERIPH_EXP3_DisableInterrupt(void)1272 static void PPC_RSE_PERIPH_EXP3_DisableInterrupt(void)
1273 {
1274 ppc_rse_irq_disable(PERIPH_EXP3_PPC_DEV.dev);
1275 }
1276
PPC_RSE_PERIPH_EXP3_ClearInterrupt(void)1277 static void PPC_RSE_PERIPH_EXP3_ClearInterrupt(void)
1278 {
1279 ppc_rse_clear_irq(PERIPH_EXP3_PPC_DEV.dev);
1280 }
1281
PPC_RSE_PERIPH_EXP3_InterruptState(void)1282 static bool PPC_RSE_PERIPH_EXP3_InterruptState(void)
1283 {
1284 return ppc_rse_irq_state(PERIPH_EXP3_PPC_DEV.dev);
1285 }
1286
1287 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
1288
1289 /* PPC RSE PERIPH EXP3 Driver CMSIS access structure */
1290 DRIVER_PPC_RSE Driver_PPC_RSE_PERIPH_EXP3 = {
1291 .GetVersion = PPC_RSE_GetVersion,
1292 .Initialize = PPC_RSE_PERIPH_EXP3_Initialize,
1293 .Uninitialize = PPC_RSE_PERIPH_EXP3_Uninitialize,
1294 .ConfigPrivilege = PPC_RSE_PERIPH_EXP3_ConfigPrivilege,
1295 .IsPeriphPrivOnly = PPC_RSE_PERIPH_EXP3_IsPeriphPrivOnly,
1296 #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U))
1297 .ConfigSecurity = PPC_RSE_PERIPH_EXP3_ConfigSecurity,
1298 .IsPeriphSecure = PPC_RSE_PERIPH_EXP3_IsPeriphSecure,
1299 .EnableInterrupt = PPC_RSE_PERIPH_EXP3_EnableInterrupt,
1300 .DisableInterrupt = PPC_RSE_PERIPH_EXP3_DisableInterrupt,
1301 .ClearInterrupt = PPC_RSE_PERIPH_EXP3_ClearInterrupt,
1302 .InterruptState = PPC_RSE_PERIPH_EXP3_InterruptState
1303 #endif /* (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)) */
1304 };
1305 #endif /* RTE_PPC_RSE_PERIPH_EXP3 */
1306