Add regi2c enable/disable reference count

This commit is contained in:
Cao Sen Miao
2022-06-20 17:56:16 +08:00
parent 3a820462ac
commit 2c0651a671
10 changed files with 116 additions and 23 deletions
+35
View File
@@ -10,9 +10,13 @@
#include "freertos/FreeRTOS.h"
#include "freertos/semphr.h"
#include "hal/regi2c_ctrl.h"
#include "hal/regi2c_ctrl_ll.h"
#include "esp_hw_log.h"
static portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;
static DRAM_ATTR __attribute__((unused)) const char *TAG = "REGI2C";
uint8_t IRAM_ATTR regi2c_ctrl_read_reg(uint8_t block, uint8_t host_id, uint8_t reg_add)
{
portENTER_CRITICAL_SAFE(&mux);
@@ -76,4 +80,35 @@ void IRAM_ATTR regi2c_analog_cali_reg_write(void)
}
}
/**
* REGI2C_SARADC reference count
*/
static int s_i2c_saradc_enable_cnt;
void regi2c_saradc_enable(void)
{
regi2c_enter_critical();
s_i2c_saradc_enable_cnt++;
if (s_i2c_saradc_enable_cnt == 1) {
regi2c_ctrl_ll_i2c_saradc_enable();
}
regi2c_exit_critical();
}
void regi2c_saradc_disable(void)
{
regi2c_enter_critical();
s_i2c_saradc_enable_cnt--;
if (s_i2c_saradc_enable_cnt < 0){
regi2c_exit_critical();
ESP_HW_LOGE(TAG, "REGI2C_SARADC is already disabled");
} else if (s_i2c_saradc_enable_cnt == 0) {
regi2c_ctrl_ll_i2c_saradc_disable();
}
regi2c_exit_critical();
}
#endif //#if ADC_CALI_PD_WORKAROUND