2021-12-22 09:18:43 -05:00
|
|
|
/*
|
|
|
|
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "soc/soc_caps.h"
|
|
|
|
#include "hal/efuse_ll.h"
|
|
|
|
#include_next "hal/efuse_hal.h"
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief set eFuse timings
|
|
|
|
*
|
|
|
|
* @param apb_freq_hz APB frequency in Hz
|
|
|
|
*/
|
|
|
|
void efuse_hal_set_timing(uint32_t apb_freq_hz);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief trigger eFuse read operation
|
|
|
|
*/
|
|
|
|
void efuse_hal_read(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief clear registers for programming eFuses
|
|
|
|
*/
|
|
|
|
void efuse_hal_clear_program_registers(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief burn eFuses written in programming registers (one block at once)
|
|
|
|
*
|
|
|
|
* @param block block number
|
|
|
|
*/
|
|
|
|
void efuse_hal_program(uint32_t block);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Calculate Reed-Solomon Encoding values for a block of efuse data.
|
|
|
|
*
|
|
|
|
* @param data Pointer to data buffer (length 32 bytes)
|
|
|
|
* @param rs_values Pointer to write encoded data to (length 12 bytes)
|
|
|
|
*/
|
|
|
|
void efuse_hal_rs_calculate(const void *data, void *rs_values);
|
|
|
|
|
2022-04-26 13:10:41 -04:00
|
|
|
/**
|
|
|
|
* @brief Checks coding error in a block
|
|
|
|
*
|
|
|
|
* @param block Index of efuse block
|
|
|
|
*
|
|
|
|
* @return True - block has an error.
|
|
|
|
* False - no error.
|
|
|
|
*/
|
|
|
|
bool efuse_hal_is_coding_error_in_block(unsigned block);
|
|
|
|
|
2021-12-22 09:18:43 -05:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|