xref: /optee_os/core/include/drivers/versal_nvm.h (revision 55667e70aa4b73dc43bd1a2c1decb40fb8ef65e7)
1*55667e70SJorge Ramirez-Ortiz /* SPDX-License-Identifier: BSD-2-Clause */
2*55667e70SJorge Ramirez-Ortiz /*
3*55667e70SJorge Ramirez-Ortiz  * Copyright (C) 2022 Foundries.io Ltd
4*55667e70SJorge Ramirez-Ortiz  */
5*55667e70SJorge Ramirez-Ortiz 
6*55667e70SJorge Ramirez-Ortiz #ifndef __DRIVERS_VERSAL_NVM_H__
7*55667e70SJorge Ramirez-Ortiz #define __DRIVERS_VERSAL_NVM_H__
8*55667e70SJorge Ramirez-Ortiz 
9*55667e70SJorge Ramirez-Ortiz #include <drivers/versal_mbox.h>
10*55667e70SJorge Ramirez-Ortiz #include <platform_config.h>
11*55667e70SJorge Ramirez-Ortiz #include <tee_api_types.h>
12*55667e70SJorge Ramirez-Ortiz #include <types_ext.h>
13*55667e70SJorge Ramirez-Ortiz #include <util.h>
14*55667e70SJorge Ramirez-Ortiz 
15*55667e70SJorge Ramirez-Ortiz #define PUF_EFUSES_WORDS		(128)
16*55667e70SJorge Ramirez-Ortiz #define PUF_SYN_DATA_WORDS		(127)
17*55667e70SJorge Ramirez-Ortiz #define EFUSE_MAX_USER_FUSES		(64)
18*55667e70SJorge Ramirez-Ortiz 
19*55667e70SJorge Ramirez-Ortiz #define EFUSE_OFFCHIP_REVOCATION_ID_LEN	(4)
20*55667e70SJorge Ramirez-Ortiz #define EFUSE_REVOCATION_ID_LEN		(4)
21*55667e70SJorge Ramirez-Ortiz #define EFUSE_DEC_ONLY_LEN		(4)
22*55667e70SJorge Ramirez-Ortiz #define EFUSE_DNA_LEN			(16)
23*55667e70SJorge Ramirez-Ortiz #define EFUSE_PPK_LEN			(32)
24*55667e70SJorge Ramirez-Ortiz #define EFUSE_IV_LEN			(12)
25*55667e70SJorge Ramirez-Ortiz 
26*55667e70SJorge Ramirez-Ortiz enum versal_nvm_iv_type {
27*55667e70SJorge Ramirez-Ortiz 	EFUSE_META_HEADER_IV_RANGE = 0,
28*55667e70SJorge Ramirez-Ortiz 	EFUSE_BLACK_IV,
29*55667e70SJorge Ramirez-Ortiz 	EFUSE_PLM_IV_RANGE,
30*55667e70SJorge Ramirez-Ortiz 	EFUSE_DATA_PARTITION_IV_RANGE,
31*55667e70SJorge Ramirez-Ortiz };
32*55667e70SJorge Ramirez-Ortiz 
33*55667e70SJorge Ramirez-Ortiz enum versal_nvm_ppk_type {
34*55667e70SJorge Ramirez-Ortiz 	EFUSE_PPK0 = 0,
35*55667e70SJorge Ramirez-Ortiz 	EFUSE_PPK1,
36*55667e70SJorge Ramirez-Ortiz 	EFUSE_PPK2
37*55667e70SJorge Ramirez-Ortiz };
38*55667e70SJorge Ramirez-Ortiz 
39*55667e70SJorge Ramirez-Ortiz enum versal_nvm_revocation_id {
40*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_0 = 0,
41*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_1,
42*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_2,
43*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_3,
44*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_4,
45*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_5,
46*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_6,
47*55667e70SJorge Ramirez-Ortiz 	EFUSE_REVOCATION_ID_7
48*55667e70SJorge Ramirez-Ortiz };
49*55667e70SJorge Ramirez-Ortiz 
50*55667e70SJorge Ramirez-Ortiz enum versal_nvm_offchip_id {
51*55667e70SJorge Ramirez-Ortiz 	EFUSE_INVLD = -1,
52*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_0 = 0,
53*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_1,
54*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_2,
55*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_3,
56*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_4,
57*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_5,
58*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_6,
59*55667e70SJorge Ramirez-Ortiz 	EFUSE_OFFCHIP_REVOKE_ID_7
60*55667e70SJorge Ramirez-Ortiz };
61*55667e70SJorge Ramirez-Ortiz 
62*55667e70SJorge Ramirez-Ortiz /*
63*55667e70SJorge Ramirez-Ortiz  * All structures mapped to the PLM processor must be address_and_size aligned
64*55667e70SJorge Ramirez-Ortiz  * to the cacheline_len.
65*55667e70SJorge Ramirez-Ortiz  */
66*55667e70SJorge Ramirez-Ortiz 
67*55667e70SJorge Ramirez-Ortiz struct versal_efuse_glitch_cfg_bits {
68*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_glitch;
69*55667e70SJorge Ramirez-Ortiz 	uint8_t glitch_det_wr_lk;
70*55667e70SJorge Ramirez-Ortiz 	uint32_t glitch_det_trim;
71*55667e70SJorge Ramirez-Ortiz 	uint8_t gd_rom_monitor_en;
72*55667e70SJorge Ramirez-Ortiz 	uint8_t gd_halt_boot_en;
73*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[53];
74*55667e70SJorge Ramirez-Ortiz };
75*55667e70SJorge Ramirez-Ortiz 
76*55667e70SJorge Ramirez-Ortiz struct versal_efuse_aes_keys {
77*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_aes_key;
78*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_user_key0;
79*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_user_key1;
80*55667e70SJorge Ramirez-Ortiz 	uint32_t aes_key[8];
81*55667e70SJorge Ramirez-Ortiz 	uint32_t user_key0[8];
82*55667e70SJorge Ramirez-Ortiz 	uint32_t user_key1[8];
83*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[25];
84*55667e70SJorge Ramirez-Ortiz };
85*55667e70SJorge Ramirez-Ortiz 
86*55667e70SJorge Ramirez-Ortiz struct versal_efuse_ppk_hash {
87*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_ppk0_hash;
88*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_ppk1_hash;
89*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_ppk2_hash;
90*55667e70SJorge Ramirez-Ortiz 	uint32_t ppk0_hash[8];
91*55667e70SJorge Ramirez-Ortiz 	uint32_t ppk1_hash[8];
92*55667e70SJorge Ramirez-Ortiz 	uint32_t ppk2_hash[8];
93*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[89];
94*55667e70SJorge Ramirez-Ortiz };
95*55667e70SJorge Ramirez-Ortiz 
96*55667e70SJorge Ramirez-Ortiz struct versal_efuse_dec_only {
97*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_dec_only;
98*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[63];
99*55667e70SJorge Ramirez-Ortiz };
100*55667e70SJorge Ramirez-Ortiz 
101*55667e70SJorge Ramirez-Ortiz struct versal_efuse_revoke_ids {
102*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_revoke_id;
103*55667e70SJorge Ramirez-Ortiz 	uint32_t revoke_id[8];
104*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[89];
105*55667e70SJorge Ramirez-Ortiz };
106*55667e70SJorge Ramirez-Ortiz 
107*55667e70SJorge Ramirez-Ortiz struct versal_efuse_offchip_ids {
108*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_offchip_id;
109*55667e70SJorge Ramirez-Ortiz 	uint32_t offchip_id[8];
110*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[89];
111*55667e70SJorge Ramirez-Ortiz };
112*55667e70SJorge Ramirez-Ortiz 
113*55667e70SJorge Ramirez-Ortiz struct versal_efuse_user_data {
114*55667e70SJorge Ramirez-Ortiz 	uint32_t start;
115*55667e70SJorge Ramirez-Ortiz 	uint32_t num;
116*55667e70SJorge Ramirez-Ortiz 	uint64_t addr;
117*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[48];
118*55667e70SJorge Ramirez-Ortiz };
119*55667e70SJorge Ramirez-Ortiz 
120*55667e70SJorge Ramirez-Ortiz struct versal_efuse_puf_fuse {
121*55667e70SJorge Ramirez-Ortiz 	uint8_t env_monitor_dis;
122*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_puf_fuse;
123*55667e70SJorge Ramirez-Ortiz 	uint32_t start;
124*55667e70SJorge Ramirez-Ortiz 	uint32_t num;
125*55667e70SJorge Ramirez-Ortiz 	uint64_t addr;
126*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[104];
127*55667e70SJorge Ramirez-Ortiz };
128*55667e70SJorge Ramirez-Ortiz 
129*55667e70SJorge Ramirez-Ortiz struct versal_efuse_ivs {
130*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_meta_header_iv;
131*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_blk_obfus_iv;
132*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_plm_iv;
133*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_data_partition_iv;
134*55667e70SJorge Ramirez-Ortiz 	uint32_t meta_header_iv[3];
135*55667e70SJorge Ramirez-Ortiz 	uint32_t blk_obfus_iv[3];
136*55667e70SJorge Ramirez-Ortiz 	uint32_t plm_iv[3];
137*55667e70SJorge Ramirez-Ortiz 	uint32_t data_partition_iv[3];
138*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[12];
139*55667e70SJorge Ramirez-Ortiz };
140*55667e70SJorge Ramirez-Ortiz 
141*55667e70SJorge Ramirez-Ortiz struct versal_efuse_misc_ctrl_bits {
142*55667e70SJorge Ramirez-Ortiz 	uint8_t glitch_det_halt_boot_en;
143*55667e70SJorge Ramirez-Ortiz 	uint8_t glitch_det_rom_monitor_en;
144*55667e70SJorge Ramirez-Ortiz 	uint8_t halt_boot_error;
145*55667e70SJorge Ramirez-Ortiz 	uint8_t halt_boot_env;
146*55667e70SJorge Ramirez-Ortiz 	uint8_t crypto_kat_en;
147*55667e70SJorge Ramirez-Ortiz 	uint8_t lbist_en;
148*55667e70SJorge Ramirez-Ortiz 	uint8_t safety_mission_en;
149*55667e70SJorge Ramirez-Ortiz 	uint8_t ppk0_invalid;
150*55667e70SJorge Ramirez-Ortiz 	uint8_t ppk1_invalid;
151*55667e70SJorge Ramirez-Ortiz 	uint8_t ppk2_invalid;
152*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[54];
153*55667e70SJorge Ramirez-Ortiz };
154*55667e70SJorge Ramirez-Ortiz 
155*55667e70SJorge Ramirez-Ortiz struct versal_efuse_puf_sec_ctrl_bits {
156*55667e70SJorge Ramirez-Ortiz 	uint8_t puf_regen_dis;
157*55667e70SJorge Ramirez-Ortiz 	uint8_t puf_hd_invalid;
158*55667e70SJorge Ramirez-Ortiz 	uint8_t puf_test2_dis;
159*55667e70SJorge Ramirez-Ortiz 	uint8_t puf_dis;
160*55667e70SJorge Ramirez-Ortiz 	uint8_t puf_syn_lk;
161*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[59];
162*55667e70SJorge Ramirez-Ortiz };
163*55667e70SJorge Ramirez-Ortiz 
164*55667e70SJorge Ramirez-Ortiz struct versal_efuse_sec_misc1_bits {
165*55667e70SJorge Ramirez-Ortiz 	uint8_t lpd_mbist_en;
166*55667e70SJorge Ramirez-Ortiz 	uint8_t pmc_mbist_en;
167*55667e70SJorge Ramirez-Ortiz 	uint8_t lpd_noc_sc_en;
168*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_volt_mon_en;
169*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_temp_mon_en;
170*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[59];
171*55667e70SJorge Ramirez-Ortiz };
172*55667e70SJorge Ramirez-Ortiz 
173*55667e70SJorge Ramirez-Ortiz struct versal_efuse_boot_env_ctrl_bits {
174*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_sysmon_temp_hot;
175*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_sysmon_volt_pmc;
176*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_sysmon_volt_pslp;
177*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_sysmon_temp_cold;
178*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_temp_en;
179*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_volt_en;
180*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_volt_soc;
181*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_temp_hot;
182*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_volt_pmc;
183*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_volt_pslp;
184*55667e70SJorge Ramirez-Ortiz 	uint8_t sysmon_temp_cold;
185*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[53];
186*55667e70SJorge Ramirez-Ortiz };
187*55667e70SJorge Ramirez-Ortiz 
188*55667e70SJorge Ramirez-Ortiz struct versal_efuse_sec_ctrl_bits {
189*55667e70SJorge Ramirez-Ortiz 	uint8_t aes_dis;
190*55667e70SJorge Ramirez-Ortiz 	uint8_t jtag_err_out_dis;
191*55667e70SJorge Ramirez-Ortiz 	uint8_t jtag_dis;
192*55667e70SJorge Ramirez-Ortiz 	uint8_t ppk0_wr_lk;
193*55667e70SJorge Ramirez-Ortiz 	uint8_t ppk1_wr_lk;
194*55667e70SJorge Ramirez-Ortiz 	uint8_t ppk2_wr_lk;
195*55667e70SJorge Ramirez-Ortiz 	uint8_t aes_crc_lk;
196*55667e70SJorge Ramirez-Ortiz 	uint8_t aes_wr_lk;
197*55667e70SJorge Ramirez-Ortiz 	uint8_t user_key0_crc_lk;
198*55667e70SJorge Ramirez-Ortiz 	uint8_t user_key0_wr_lk;
199*55667e70SJorge Ramirez-Ortiz 	uint8_t user_key1_crc_lk;
200*55667e70SJorge Ramirez-Ortiz 	uint8_t user_key1_wr_lk;
201*55667e70SJorge Ramirez-Ortiz 	uint8_t sec_dbg_dis;
202*55667e70SJorge Ramirez-Ortiz 	uint8_t sec_lock_dbg_dis;
203*55667e70SJorge Ramirez-Ortiz 	uint8_t boot_env_wr_lk;
204*55667e70SJorge Ramirez-Ortiz 	uint8_t reg_init_dis;
205*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[48];
206*55667e70SJorge Ramirez-Ortiz };
207*55667e70SJorge Ramirez-Ortiz 
208*55667e70SJorge Ramirez-Ortiz struct versal_efuse_puf_header {
209*55667e70SJorge Ramirez-Ortiz 	struct versal_efuse_puf_sec_ctrl_bits sec_ctrl;
210*55667e70SJorge Ramirez-Ortiz 	uint8_t prmg_puf_helper_data;
211*55667e70SJorge Ramirez-Ortiz 	uint8_t env_monitor_dis;
212*55667e70SJorge Ramirez-Ortiz 	uint32_t efuse_syn_data[PUF_SYN_DATA_WORDS];
213*55667e70SJorge Ramirez-Ortiz 	uint32_t chash;
214*55667e70SJorge Ramirez-Ortiz 	uint32_t aux;
215*55667e70SJorge Ramirez-Ortiz 	uint8_t pad[56];
216*55667e70SJorge Ramirez-Ortiz };
217*55667e70SJorge Ramirez-Ortiz 
218*55667e70SJorge Ramirez-Ortiz struct versal_efuse_puf_user_fuse {
219*55667e70SJorge Ramirez-Ortiz 	uint32_t data_addr[PUF_EFUSES_WORDS];
220*55667e70SJorge Ramirez-Ortiz 	uint8_t env_monitor_dis;
221*55667e70SJorge Ramirez-Ortiz 	uint8_t prgm_puf_fuse;
222*55667e70SJorge Ramirez-Ortiz 	uint32_t start_row;
223*55667e70SJorge Ramirez-Ortiz 	uint32_t num_rows;
224*55667e70SJorge Ramirez-Ortiz };
225*55667e70SJorge Ramirez-Ortiz 
226*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_dna(uint32_t *buf, size_t len);
227*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_user_data(uint32_t *buf, size_t len,
228*55667e70SJorge Ramirez-Ortiz 				       uint32_t first, size_t num);
229*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_iv(uint32_t *buf, size_t len,
230*55667e70SJorge Ramirez-Ortiz 				enum versal_nvm_iv_type type);
231*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_ppk(uint32_t *buf, size_t len,
232*55667e70SJorge Ramirez-Ortiz 				 enum versal_nvm_ppk_type type);
233*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_user_data(uint32_t *buf, size_t len,
234*55667e70SJorge Ramirez-Ortiz 					uint32_t first, size_t num);
235*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_aes_keys(struct versal_efuse_aes_keys *keys);
236*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_ppk_hash(struct versal_efuse_ppk_hash *hash);
237*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_iv(struct versal_efuse_ivs *p);
238*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_dec_only(struct versal_efuse_dec_only *p);
239*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_sec(struct versal_efuse_sec_ctrl_bits *p);
240*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_misc(struct versal_efuse_misc_ctrl_bits *p);
241*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_glitch_cfg(struct versal_efuse_glitch_cfg_bits
242*55667e70SJorge Ramirez-Ortiz 					 *p);
243*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_boot_env(struct versal_efuse_boot_env_ctrl_bits
244*55667e70SJorge Ramirez-Ortiz 				       *p);
245*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_sec_misc1(struct versal_efuse_sec_misc1_bits *p);
246*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_offchip_ids(struct versal_efuse_offchip_ids *p);
247*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_revoke_ppk(enum versal_nvm_ppk_type type);
248*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_revoke_id(uint32_t id);
249*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_revoke_id(uint32_t *buf, size_t len,
250*55667e70SJorge Ramirez-Ortiz 				       enum versal_nvm_revocation_id id);
251*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_misc_ctrl(struct versal_efuse_misc_ctrl_bits *buf);
252*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_sec_ctrl(struct versal_efuse_sec_ctrl_bits *buf);
253*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_sec_misc1(struct versal_efuse_sec_misc1_bits *buf);
254*55667e70SJorge Ramirez-Ortiz TEE_Result
255*55667e70SJorge Ramirez-Ortiz versal_efuse_read_boot_env_ctrl(struct versal_efuse_boot_env_ctrl_bits *buf);
256*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_offchip_revoke_id(uint32_t *buf, size_t len,
257*55667e70SJorge Ramirez-Ortiz 					       enum versal_nvm_offchip_id id);
258*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_dec_only(uint32_t *buf, size_t len);
259*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_puf_sec_ctrl(struct versal_efuse_puf_sec_ctrl_bits
260*55667e70SJorge Ramirez-Ortiz 					  *buf);
261*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_puf(struct versal_efuse_puf_header *buf);
262*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_read_puf_as_user_fuse(struct versal_efuse_puf_user_fuse
263*55667e70SJorge Ramirez-Ortiz 					      *p);
264*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_puf_as_user_fuse(struct versal_efuse_puf_user_fuse
265*55667e70SJorge Ramirez-Ortiz 					       *p);
266*55667e70SJorge Ramirez-Ortiz TEE_Result versal_efuse_write_puf(struct versal_efuse_puf_header *buf);
267*55667e70SJorge Ramirez-Ortiz TEE_Result versal_bbram_write_aes_key(uint8_t *key, size_t len);
268*55667e70SJorge Ramirez-Ortiz TEE_Result versal_bbram_zeroize(void);
269*55667e70SJorge Ramirez-Ortiz TEE_Result versal_bbram_write_user_data(uint32_t data);
270*55667e70SJorge Ramirez-Ortiz TEE_Result versal_bbram_read_user_data(uint32_t *data);
271*55667e70SJorge Ramirez-Ortiz TEE_Result versal_bbram_lock_write_user_data(void);
272*55667e70SJorge Ramirez-Ortiz 
273*55667e70SJorge Ramirez-Ortiz #endif /*__DRIVERS_VERSAL_NVM_H__*/
274