From 66bed184643ffed7e2cf0acd127480d2543b5c5e Mon Sep 17 00:00:00 2001 From: gaoxu Date: Fri, 18 Apr 2025 10:44:08 +0800 Subject: [PATCH] feat(rng): add regi2c control ref_count --- .../bootloader_support/src/bootloader_random_esp32c5.c | 9 +++++++++ .../bootloader_support/src/bootloader_random_esp32c6.c | 9 +++++++++ .../bootloader_support/src/bootloader_random_esp32c61.c | 9 +++++++++ .../bootloader_support/src/bootloader_random_esp32h2.c | 9 +++++++++ 4 files changed, 36 insertions(+) diff --git a/components/bootloader_support/src/bootloader_random_esp32c5.c b/components/bootloader_support/src/bootloader_random_esp32c5.c index e72ae58d37..e973d99043 100644 --- a/components/bootloader_support/src/bootloader_random_esp32c5.c +++ b/components/bootloader_support/src/bootloader_random_esp32c5.c @@ -8,6 +8,7 @@ #include "hal/regi2c_ctrl_ll.h" #include "hal/adc_ll.h" #include "hal/adc_types.h" +#include "esp_private/regi2c_ctrl.h" void bootloader_random_enable(void) { @@ -18,7 +19,12 @@ void bootloader_random_enable(void) adc_ll_digi_controller_clk_div(0, 0, 0); // some ADC sensor registers are in power group PERIF_I2C and need to be enabled via PMU +#ifndef BOOTLOADER_BUILD + regi2c_saradc_enable(); +#else regi2c_ctrl_ll_i2c_sar_periph_enable(); +#endif + // enable analog i2c master clock for RNG runtime ANALOG_CLOCK_ENABLE(); @@ -51,6 +57,9 @@ void bootloader_random_disable(void) adc_ll_set_calibration_param(ADC_UNIT_1, 0x0); adc_ll_set_calibration_param(ADC_UNIT_2, 0x0); adc_ll_regi2c_adc_deinit(); +#ifndef BOOTLOADER_BUILD + regi2c_saradc_disable(); +#endif // disable analog i2c master clock ANALOG_CLOCK_DISABLE(); diff --git a/components/bootloader_support/src/bootloader_random_esp32c6.c b/components/bootloader_support/src/bootloader_random_esp32c6.c index 181615133e..efd6ab384a 100644 --- a/components/bootloader_support/src/bootloader_random_esp32c6.c +++ b/components/bootloader_support/src/bootloader_random_esp32c6.c @@ -8,6 +8,7 @@ #include "hal/regi2c_ctrl_ll.h" #include "hal/adc_ll.h" #include "hal/adc_types.h" +#include "esp_private/regi2c_ctrl.h" void bootloader_random_enable(void) { @@ -18,7 +19,12 @@ void bootloader_random_enable(void) adc_ll_digi_controller_clk_div(0, 0, 0); // some ADC sensor registers are in power group PERIF_I2C and need to be enabled via PMU +#ifndef BOOTLOADER_BUILD + regi2c_saradc_enable(); +#else regi2c_ctrl_ll_i2c_sar_periph_enable(); +#endif + // enable analog i2c master clock for RNG runtime ANALOG_CLOCK_ENABLE(); @@ -49,6 +55,9 @@ void bootloader_random_disable(void) adc_ll_set_calibration_param(ADC_UNIT_1, 0x0); adc_ll_set_calibration_param(ADC_UNIT_2, 0x0); adc_ll_regi2c_adc_deinit(); +#ifndef BOOTLOADER_BUILD + regi2c_saradc_disable(); +#endif // disable analog i2c master clock ANALOG_CLOCK_DISABLE(); diff --git a/components/bootloader_support/src/bootloader_random_esp32c61.c b/components/bootloader_support/src/bootloader_random_esp32c61.c index f6ebbe7f03..7bc9322c94 100644 --- a/components/bootloader_support/src/bootloader_random_esp32c61.c +++ b/components/bootloader_support/src/bootloader_random_esp32c61.c @@ -8,6 +8,7 @@ #include "hal/regi2c_ctrl_ll.h" #include "hal/adc_ll.h" #include "hal/adc_types.h" +#include "esp_private/regi2c_ctrl.h" void bootloader_random_enable(void) { @@ -18,7 +19,12 @@ void bootloader_random_enable(void) adc_ll_digi_controller_clk_div(0, 0, 0); // some ADC sensor registers are in power group PERIF_I2C and need to be enabled via PMU +#ifndef BOOTLOADER_BUILD + regi2c_saradc_enable(); +#else regi2c_ctrl_ll_i2c_sar_periph_enable(); +#endif + // enable analog i2c master clock for RNG runtime ANALOG_CLOCK_ENABLE(); @@ -49,6 +55,9 @@ void bootloader_random_disable(void) adc_ll_set_calibration_param(ADC_UNIT_1, 0x0); adc_ll_set_calibration_param(ADC_UNIT_2, 0x0); adc_ll_regi2c_adc_deinit(); +#ifndef BOOTLOADER_BUILD + regi2c_saradc_disable(); +#endif // disable analog i2c master clock ANALOG_CLOCK_DISABLE(); diff --git a/components/bootloader_support/src/bootloader_random_esp32h2.c b/components/bootloader_support/src/bootloader_random_esp32h2.c index c378fb22f9..3c6ba78987 100644 --- a/components/bootloader_support/src/bootloader_random_esp32h2.c +++ b/components/bootloader_support/src/bootloader_random_esp32h2.c @@ -8,6 +8,7 @@ #include "hal/regi2c_ctrl_ll.h" #include "hal/adc_ll.h" #include "hal/adc_types.h" +#include "esp_private/regi2c_ctrl.h" void bootloader_random_enable(void) { @@ -18,7 +19,12 @@ void bootloader_random_enable(void) adc_ll_digi_controller_clk_div(0, 0, 0); // some ADC sensor registers are in power group PERIF_I2C and need to be enabled via PMU +#ifndef BOOTLOADER_BUILD + regi2c_saradc_enable(); +#else regi2c_ctrl_ll_i2c_sar_periph_enable(); +#endif + // enable analog i2c master clock for RNG runtime ANALOG_CLOCK_ENABLE(); @@ -47,6 +53,9 @@ void bootloader_random_disable(void) adc_ll_set_calibration_param(ADC_UNIT_1, 0x0); adc_ll_set_calibration_param(ADC_UNIT_2, 0x0); adc_ll_regi2c_adc_deinit(); +#ifndef BOOTLOADER_BUILD + regi2c_saradc_disable(); +#endif // disable analog i2c master clock ANALOG_CLOCK_DISABLE();