// Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /******************************************************************************* * NOTICE * The ll is not public api, don't use in application code. * See readme.md in soc/include/hal/readme.md ******************************************************************************/ /* Note: ESP32-C3 does not have a full RTC_IO module, this LL only controls hold/wakeup/32kHz crystal functions for IOs */ #pragma once #include #include "soc/rtc_cntl_reg.h" #include "hal/rtc_io_types.h" #include "hal/gpio_types.h" #ifdef __cplusplus extern "C" { #endif typedef enum { RTCIO_FUNC_RTC = 0x0, /*!< The pin controled by RTC module. */ RTCIO_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */ } rtcio_ll_func_t; typedef enum { RTCIO_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */ RTCIO_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */ RTCIO_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */ } rtcio_ll_wake_type_t; typedef enum { RTCIO_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */ RTCIO_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */ } rtcio_ll_out_mode_t; /** * @brief Select the rtcio function. * * @note The RTC function must be selected before the pad analog function is enabled. * @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio). * @param func Select pin function. */ static inline void rtcio_ll_function_select(int rtcio_num, rtcio_ll_func_t func) { abort(); // TODO ESP32-C3 IDF-2407 } /** * Enable force hold function for RTC IO pad. * * Enabling HOLD function will cause the pad to lock current status, such as, * input/output enable, input/output value, function, drive strength values. * This function is useful when going into light or deep sleep mode to prevent * the pin configuration from changing. * * @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio). */ static inline void rtcio_ll_force_hold_enable(int rtcio_num) { abort(); // TODO ESP32-C3 IDF-2407 } /** * Disable hold function on an RTC IO pad * * @note If disable the pad hold, the status of pad maybe changed in sleep mode. * @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio). */ static inline void rtcio_ll_force_hold_disable(int rtcio_num) { abort(); // TODO ESP32-C3 IDF-2407 } /** * Enable force hold function for RTC IO pad. * * Enabling HOLD function will cause the pad to lock current status, such as, * input/output enable, input/output value, function, drive strength values. * This function is useful when going into light or deep sleep mode to prevent * the pin configuration from changing. * * @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio). */ static inline void rtcio_ll_force_hold_all(void) { abort(); // TODO ESP32-C3 IDF-2407 } /** * Disable hold function on an RTC IO pad * * @note If disable the pad hold, the status of pad maybe changed in sleep mode. * @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio). */ static inline void rtcio_ll_force_unhold_all(void) { CLEAR_PERI_REG_MASK(RTC_CNTL_PWC_REG, RTC_CNTL_PAD_FORCE_HOLD_M); } /** * Enable wakeup function and set wakeup type from light sleep status for rtcio. * * @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio). * @param type Wakeup on high level or low level. */ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t type) { abort(); // TODO ESP32-C3 IDF-2407 } /** * Disable wakeup function from light sleep status for rtcio. * * @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio). */ static inline void rtcio_ll_wakeup_disable(int rtcio_num) { abort(); // TODO ESP32-C3 IDF-2407 } static inline void rtcio_ll_ext0_set_wakeup_pin(int rtcio_num, int level) { abort(); // TODO ESP32-C3 IDF-2106 IDF-2407 } #ifdef __cplusplus } #endif