mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 19:13:21 +00:00
44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/*
|
|
* SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/semphr.h"
|
|
#include "esp_private/critical_section.h"
|
|
#include "hal/regi2c_ctrl_ll.h"
|
|
#include "esp_hw_log.h"
|
|
#include "esp_private/sar_periph_ctrl.h"
|
|
|
|
ESP_HW_LOG_ATTR_TAG(TAG, "sar_ctrl_common");
|
|
|
|
DEFINE_CRIT_SECTION_LOCK_STATIC(mux);
|
|
|
|
static int s_i2c_saradc_enable_cnt;
|
|
|
|
void regi2c_saradc_enable(void)
|
|
{
|
|
esp_os_enter_critical_safe(&mux);
|
|
s_i2c_saradc_enable_cnt++;
|
|
if (s_i2c_saradc_enable_cnt == 1) {
|
|
regi2c_ctrl_ll_i2c_sar_periph_enable();
|
|
}
|
|
esp_os_exit_critical_safe(&mux);
|
|
}
|
|
|
|
void regi2c_saradc_disable(void)
|
|
{
|
|
esp_os_enter_critical_safe(&mux);
|
|
s_i2c_saradc_enable_cnt--;
|
|
if (s_i2c_saradc_enable_cnt < 0){
|
|
esp_os_exit_critical_safe(&mux);
|
|
ESP_HW_LOGE(TAG, "REGI2C_SARADC is already disabled");
|
|
return;
|
|
} else if (s_i2c_saradc_enable_cnt == 0) {
|
|
regi2c_ctrl_ll_i2c_sar_periph_disable();
|
|
}
|
|
esp_os_exit_critical_safe(&mux);
|
|
}
|