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