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