1 /* 2 * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #pragma once 8 9 #include <stdint.h> 10 #include <stdbool.h> 11 #include "soc/soc_caps.h" 12 #include "hal/efuse_ll.h" 13 #include_next "hal/efuse_hal.h" 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 /** 20 * @brief set eFuse timings 21 * 22 * @param apb_freq_hz APB frequency in Hz 23 */ 24 void efuse_hal_set_timing(uint32_t apb_freq_hz); 25 26 /** 27 * @brief trigger eFuse read operation 28 */ 29 void efuse_hal_read(void); 30 31 /** 32 * @brief clear registers for programming eFuses 33 */ 34 void efuse_hal_clear_program_registers(void); 35 36 /** 37 * @brief burn eFuses written in programming registers (one block at once) 38 * 39 * @param block block number 40 */ 41 void efuse_hal_program(uint32_t block); 42 43 /** 44 * @brief Calculate Reed-Solomon Encoding values for a block of efuse data. 45 * 46 * @param data Pointer to data buffer (length 32 bytes) 47 * @param rs_values Pointer to write encoded data to (length 12 bytes) 48 */ 49 void efuse_hal_rs_calculate(const void *data, void *rs_values); 50 51 /** 52 * @brief Checks coding error in a block 53 * 54 * @param block Index of efuse block 55 * 56 * @return True - block has an error. 57 * False - no error. 58 */ 59 bool efuse_hal_is_coding_error_in_block(unsigned block); 60 61 #ifdef __cplusplus 62 } 63 #endif 64