1 /*
2  * Copyright (c) 2023, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #include "platform_dcu.h"
9 #include <stdint.h>
10 #include "device_definition.h"
11 #include "lcm_drv.h"
12 
13 static const uint32_t dcu_reg_lock_values[NUM_OF_DCU_REG] = {
14         DCU_LOCK_REG0_VALUE,
15         DCU_LOCK_REG1_VALUE,
16         DCU_LOCK_REG2_VALUE,
17         DCU_LOCK_REG3_VALUE
18 };
19 
tfm_plat_apply_debug_permissions(uint16_t zone)20 int32_t tfm_plat_apply_debug_permissions(uint16_t zone)
21 {
22     uint32_t dcu_reg_values[NUM_OF_DCU_REG];
23 
24     /* TODO: Assign appropriate values based on selected zone */
25     (void)zone;
26     /* Below values provide same access as when platform is in development
27        life cycle state */
28     dcu_reg_values[0] = DCU_DEBUG_ENABLED_REG0_VALUE;
29     dcu_reg_values[1] = DCU_DEBUG_ENABLED_REG1_VALUE;
30     dcu_reg_values[2] = DCU_DEBUG_ENABLED_REG2_VALUE;
31     dcu_reg_values[3] = DCU_DEBUG_ENABLED_REG3_VALUE;
32 
33     return lcm_dcu_set_enabled(&LCM_DEV_S, (uint8_t*)&dcu_reg_values[0]);
34 }
35 
tfm_plat_lock_dcu(void)36 int32_t tfm_plat_lock_dcu(void)
37 {
38     return lcm_dcu_set_locked(&LCM_DEV_S, (uint8_t*)&dcu_reg_lock_values[0]);
39 }
40