/* * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 *//* ... */#include"sdkconfig.h"#include<sys/param.h>#include"soc/soc_caps.h"#include"hal/efuse_ll.h"#include"hal/assert.h"#include"hal/efuse_hal.h"#include"soc/syscon_reg.h"#include"esp_attr.h"8 includesIRAM_ATTRuint32_tefuse_hal_get_major_chip_version(void){uint8_teco_bit0=efuse_ll_get_chip_ver_rev1();uint8_teco_bit1=efuse_ll_get_chip_ver_rev2();uint8_teco_bit2=(REG_READ(SYSCON_DATE_REG)&0x80000000)>>31;uint32_tcombine_value=(eco_bit2<<2)|(eco_bit1<<1)|eco_bit0;uint32_tchip_ver=0;switch(combine_value){case0:chip_ver=0;break;...case1:chip_ver=1;break;...case3:chip_ver=2;break;#ifCONFIG_IDF_ENV_FPGA...case4:/* Empty efuses, but SYSCON_DATE_REG bit is set */chip_ver=3;break;/* ... */#endif// CONFIG_IDF_ENV_FPGAcase7:chip_ver=3;break;...default:chip_ver=0;break;...}{...}returnchip_ver;}{ ... }IRAM_ATTRuint32_tefuse_hal_get_minor_chip_version(void){returnefuse_ll_get_chip_wafer_version_minor();}{ ... }uint32_tefuse_hal_get_rated_freq_mhz(void){//Check if ESP32 is rated for a CPU frequency of 160MHz onlyif(efuse_ll_get_chip_cpu_freq_rated()&&efuse_ll_get_chip_cpu_freq_low()){return160;}{...}return240;}{ ... }/******************* eFuse control functions *************************/voidefuse_hal_set_timing(uint32_tapb_freq_mhz){uint32_tclk_sel0;uint32_tclk_sel1;uint32_tdac_clk_div;if(apb_freq_mhz<=26){clk_sel0=250;clk_sel1=255;dac_clk_div=52;}{...}elseif(apb_freq_mhz<=40){clk_sel0=160;clk_sel1=255;dac_clk_div=80;}{...}else{clk_sel0=80;clk_sel1=128;dac_clk_div=100;}{...}efuse_ll_set_dac_clk_div(dac_clk_div);efuse_ll_set_dac_clk_sel0(clk_sel0);efuse_ll_set_dac_clk_sel1(clk_sel1);}{ ... }voidefuse_hal_read(void){efuse_ll_set_conf_read_op_code();efuse_ll_set_read_cmd();while(efuse_ll_get_cmd()!=0){};}{ ... }voidefuse_hal_clear_program_registers(void){for(uint32_tr=EFUSE_BLK0_WDATA0_REG;r<=EFUSE_BLK0_WDATA6_REG;r+=4){REG_WRITE(r,0);}{...}for(uint32_tr=EFUSE_BLK1_WDATA0_REG;r<=EFUSE_BLK1_WDATA7_REG;r+=4){REG_WRITE(r,0);}{...}for(uint32_tr=EFUSE_BLK2_WDATA0_REG;r<=EFUSE_BLK2_WDATA7_REG;r+=4){REG_WRITE(r,0);}{...}for(uint32_tr=EFUSE_BLK3_WDATA0_REG;r<=EFUSE_BLK3_WDATA7_REG;r+=4){REG_WRITE(r,0);}{...}}{ ... }voidefuse_hal_program(uint32_tblock){(void)block;// Permanently update values written to the efuse write registersefuse_ll_set_conf_write_op_code();efuse_ll_set_pgm_cmd();while(efuse_ll_get_cmd()!=0){};efuse_hal_read();}{ ... } eFuse control functions /******************* eFuse control functions *************************/boolefuse_hal_is_coding_error_in_block(unsignedblock){returnblock>0&&efuse_ll_get_coding_scheme()==1&&// 3/4 coding schemeefuse_ll_get_dec_warnings(block);}{ ... }
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.