#[cfg(any(rom_has_crc_be, rom_has_crc_le))]
pub mod crc;
#[cfg(any(rom_has_md5_bsd, rom_has_md5_mbedtls))]
pub mod md5;
pub mod spiflash;
#[inline(always)]
pub fn ets_delay_us(us: u32) {
unsafe extern "C" {
fn ets_delay_us(us: u32);
}
unsafe { ets_delay_us(us) };
}
#[inline(always)]
pub fn ets_update_cpu_frequency_rom(ticks_per_us: u32) {
unsafe extern "C" {
fn ets_update_cpu_frequency(ticks_per_us: u32);
}
unsafe { ets_update_cpu_frequency(ticks_per_us) };
}
#[inline(always)]
pub fn rtc_get_reset_reason(cpu_num: u32) -> u32 {
unsafe extern "C" {
fn rtc_get_reset_reason(cpu_num: u32) -> u32;
}
unsafe { rtc_get_reset_reason(cpu_num) }
}
#[inline(always)]
pub fn software_reset_cpu(cpu_num: u32) {
unsafe extern "C" {
fn software_reset_cpu(cpu_num: u32);
}
unsafe { software_reset_cpu(cpu_num) };
}
#[inline(always)]
pub fn software_reset() -> ! {
unsafe extern "C" {
fn software_reset() -> !;
}
unsafe { software_reset() }
}
#[cfg(any(esp32s3, esp32p4, esp32s31))]
#[inline(always)]
pub fn ets_set_appcpu_boot_addr(boot_addr: u32) {
unsafe extern "C" {
fn ets_set_appcpu_boot_addr(boot_addr: u32);
}
unsafe { ets_set_appcpu_boot_addr(boot_addr) };
}
#[unsafe(no_mangle)]
extern "C" fn rtc_clk_xtal_freq_get() -> i32 {
cfg_select! {
any(esp32c6, esp32h2, esp32p4, esp32s31) => {
unsafe extern "C" {
fn ets_clk_get_xtal_freq() -> i32;
}
(unsafe { ets_clk_get_xtal_freq() }) / 1_000_000
}
any(esp32s2, esp32s3, esp32c3) => {
unsafe extern "C" {
fn ets_get_xtal_freq() -> i32;
}
(unsafe { ets_get_xtal_freq() }) / 1_000_000
}
any(esp32, esp32c2) => {
(regs!(RTC_CNTL).store4().read().bits() & 0xff) as i32
}
any(esp32c5, esp32c61) => {
regs!(PCR).sysclk_conf().read().clk_xtal_freq().bits() as i32
}
_ => {
compile_error!("rtc_clk_xtal_freq_get not implemented for this chip");
}
}
}