Add regi2c enable/disable reference count
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user