1 /*
2  * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef __PLATFORM_OTP_IDS_H__
9 #define __PLATFORM_OTP_IDS_H__
10 
11 #include <stdint.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 enum tfm_otp_element_id_t {
18     PLAT_OTP_ID_HUK = 0,
19     PLAT_OTP_ID_GUK,
20 
21     PLAT_OTP_ID_LCS,
22 
23     PLAT_OTP_ID_IAK_LEN,
24     PLAT_OTP_ID_IAK_TYPE,
25     PLAT_OTP_ID_IAK_ID,
26 
27     PLAT_OTP_ID_IMPLEMENTATION_ID,
28     PLAT_OTP_ID_VERIFICATION_SERVICE_URL,
29     PLAT_OTP_ID_PROFILE_DEFINITION,
30 
31     /* BL2 ROTPK must be contiguous */
32     PLAT_OTP_ID_BL2_ROTPK_0,
33     PLAT_OTP_ID_BL2_ROTPK_1,
34     PLAT_OTP_ID_BL2_ROTPK_2,
35     PLAT_OTP_ID_BL2_ROTPK_3,
36     PLAT_OTP_ID_BL2_ROTPK_4,
37     PLAT_OTP_ID_BL2_ROTPK_5,
38     PLAT_OTP_ID_BL2_ROTPK_6,
39     PLAT_OTP_ID_BL2_ROTPK_7,
40     PLAT_OTP_ID_BL2_ROTPK_8,
41 
42     /* BL2 NV counters must be contiguous */
43     PLAT_OTP_ID_NV_COUNTER_BL2_0,
44     PLAT_OTP_ID_NV_COUNTER_BL2_1,
45     PLAT_OTP_ID_NV_COUNTER_BL2_2,
46     PLAT_OTP_ID_NV_COUNTER_BL2_3,
47     PLAT_OTP_ID_NV_COUNTER_BL2_4,
48     PLAT_OTP_ID_NV_COUNTER_BL2_5,
49     PLAT_OTP_ID_NV_COUNTER_BL2_6,
50     PLAT_OTP_ID_NV_COUNTER_BL2_7,
51     PLAT_OTP_ID_NV_COUNTER_BL2_8,
52 
53 #ifdef PLATFORM_HAS_PS_NV_OTP_COUNTERS
54     PLAT_OTP_ID_NV_COUNTER_PS_0,
55     PLAT_OTP_ID_NV_COUNTER_PS_1,
56     PLAT_OTP_ID_NV_COUNTER_PS_2,
57 #endif /* PLATFORM_HAS_PS_NV_OTP_COUNTERS */
58 
59     PLAT_OTP_ID_NV_COUNTER_NS_0,
60     PLAT_OTP_ID_NV_COUNTER_NS_1,
61     PLAT_OTP_ID_NV_COUNTER_NS_2,
62 
63     PLAT_OTP_ID_KEY_BL2_ENCRYPTION,
64     PLAT_OTP_ID_KEY_SECURE_ENCRYPTION,
65     PLAT_OTP_ID_KEY_NON_SECURE_ENCRYPTION,
66 
67     PLAT_OTP_ID_BL1_2_IMAGE,
68     PLAT_OTP_ID_BL1_2_IMAGE_LEN,
69     PLAT_OTP_ID_BL1_2_IMAGE_HASH,
70     PLAT_OTP_ID_BL1_ROTPK_0,
71 
72     PLAT_OTP_ID_NV_COUNTER_BL1_0,
73 
74     PLAT_OTP_ID_SECURE_DEBUG_PK,
75 
76     PLAT_OTP_ID_HOST_ROTPK_S,
77     PLAT_OTP_ID_HOST_ROTPK_NS,
78     PLAT_OTP_ID_HOST_ROTPK_CCA,
79 
80     PLAT_OTP_ID_CCA_SYSTEM_PROPERTIES,
81 
82     PLAT_OTP_ID_REPROVISIONING_BITS,
83     PLAT_OTP_ID_RSE_ID,
84 
85     PLAT_OTP_ID_CM_CONFIG_FLAGS,
86     PLAT_OTP_ID_DM_CONFIG_FLAGS,
87 
88     PLAT_OTP_ID_DMA_ICS,
89 
90     PLAT_OTP_ID_MANUFACTURING_DATA_LEN,
91     PLAT_OTP_ID_MANUFACTURING_DATA,
92 
93     PLAT_OTP_ID_ROM_OTP_ENCRYPTION_KEY,
94     PLAT_OTP_ID_RUNTIME_OTP_ENCRYPTION_KEY,
95 
96     PLAT_OTP_ID_RSE_TO_RSE_SENDER_ROUTING_TABLE,
97     PLAT_OTP_ID_RSE_TO_RSE_RECEIVER_ROUTING_TABLE,
98 
99     PLAT_OTP_ID_MAX,
100 
101     _PLAT_OTP_ID_PAD = UINT32_MAX,
102 };
103 
104 #ifdef __cplusplus
105 }
106 #endif
107 
108 #endif /* __PLATFORM_OTP_IDS_H__ */
109