1 /*
2  * Copyright 2024 Microchip Technology Inc. and its subsidiaries.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef _MEC_ROM_API_H
7 #define _MEC_ROM_API_H
8 
9 #include <stdbool.h>
10 #include <stddef.h>
11 #include <stdint.h>
12 
13 #include "mec_defs.h"
14 #include "mec_retval.h"
15 
16 /* Interfaces to any C modules */
17 #ifdef __cplusplus
18 extern "C"
19 {
20 #endif
21 
22 /* Boot-ROM API */
23 
24 uint32_t mec_hal_rom_version(void);
25 
26 int mec_hal_rom_otp_read_byte(uint16_t otp_index, uint8_t *data);
27 int mec_hal_rom_otp_write_byte(uint16_t otp_index, uint8_t data);
28 
29 /* NDRNG */
30 
31 #define MEC_RNG_FIFO_SIZE_BYTES 128u
32 
33 int mec_hal_rom_rng_init(void);
34 void mec_hal_rom_rng_enable(bool enable);
35 
36 bool mec_hal_rom_rng_is_healthy(void);
37 
38 uint32_t mec_hal_rom_rng_fifo_level(void);
39 bool mec_hal_rom_rng_is_fifo_full(void);
40 void mec_hal_rom_rng_fifo_full_status_clear(void);
41 void mec_hal_rom_rng_fifo_discard(void);
42 
43 int mec_hal_rom_rng_read_bytes_nh(uint8_t *dest, uint16_t nbytes_req, uint16_t *nbytes_supplied);
44 int mec_hal_rom_rng_get_rand_words(void *dest, uint16_t req_nw, uint16_t *actual_nw);
45 
46 #ifdef __cplusplus
47 }
48 #endif
49 
50 #endif /* #ifndef _MEC_ROM_API_H */
51