efuse_hal.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "sdkconfig.h"
  7. #include <sys/param.h>
  8. #include "soc/soc_caps.h"
  9. #include "hal/assert.h"
  10. #include "hal/efuse_hal.h"
  11. #include "hal/efuse_ll.h"
  12. uint32_t efuse_hal_get_chip_revision(void)
  13. {
  14. return efuse_ll_get_chip_revision();
  15. }
  16. /******************* eFuse control functions *************************/
  17. void efuse_hal_set_timing(uint32_t apb_freq_hz)
  18. {
  19. (void) apb_freq_hz;
  20. efuse_ll_set_pwr_off_num(0x190);
  21. }
  22. void efuse_hal_read(void)
  23. {
  24. efuse_hal_set_timing(0);
  25. efuse_ll_set_conf_read_op_code();
  26. efuse_ll_set_read_cmd();
  27. while (efuse_ll_get_read_cmd() != 0) { }
  28. /*Due to a hardware error, we have to read READ_CMD again to make sure the efuse clock is normal*/
  29. while (efuse_ll_get_read_cmd() != 0) { }
  30. }
  31. void efuse_hal_clear_program_registers(void)
  32. {
  33. ets_efuse_clear_program_registers();
  34. }
  35. void efuse_hal_program(uint32_t block)
  36. {
  37. efuse_hal_set_timing(0);
  38. efuse_ll_set_conf_write_op_code();
  39. efuse_ll_set_pgm_cmd(block);
  40. while (efuse_ll_get_pgm_cmd() != 0) { }
  41. efuse_hal_clear_program_registers();
  42. efuse_hal_read();
  43. }
  44. void efuse_hal_rs_calculate(const void *data, void *rs_values)
  45. {
  46. ets_efuse_rs_calculate(data, rs_values);
  47. }
  48. /******************* eFuse control functions *************************/