forked from espressif/esp-idf
refactor(gpio): reuse gpio_int_type_t in the rtc io driver
This commit is contained in:
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "hal/gpio_types.h"
|
||||||
|
#include "hal/assert.h"
|
||||||
#include "soc/rtc_io_struct.h"
|
#include "soc/rtc_io_struct.h"
|
||||||
#include "soc/rtc_io_reg.h"
|
#include "soc/rtc_io_reg.h"
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
@@ -29,12 +31,6 @@ typedef enum {
|
|||||||
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
||||||
} rtcio_ll_func_t;
|
} rtcio_ll_func_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_LL_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_LL_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_LL_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_wake_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
||||||
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
||||||
@@ -309,8 +305,9 @@ static inline void rtcio_ll_force_unhold_all(void)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Wakeup on high level or low level.
|
* @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)
|
static inline void rtcio_ll_wakeup_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
|
HAL_ASSERT(type == GPIO_INTR_LOW_LEVEL || type == GPIO_INTR_HIGH_LEVEL);
|
||||||
RTCIO.pin[rtcio_num].wakeup_enable = 1;
|
RTCIO.pin[rtcio_num].wakeup_enable = 1;
|
||||||
RTCIO.pin[rtcio_num].int_type = type;
|
RTCIO.pin[rtcio_num].int_type = type;
|
||||||
}
|
}
|
||||||
@@ -323,7 +320,7 @@ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t ty
|
|||||||
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
RTCIO.pin[rtcio_num].wakeup_enable = 0;
|
RTCIO.pin[rtcio_num].wakeup_enable = 0;
|
||||||
RTCIO.pin[rtcio_num].int_type = RTCIO_LL_WAKEUP_DISABLE;
|
RTCIO.pin[rtcio_num].int_type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "soc/lp_gpio_struct.h"
|
#include "soc/lp_gpio_struct.h"
|
||||||
#include "soc/lpperi_struct.h"
|
#include "soc/lpperi_struct.h"
|
||||||
#include "soc/pmu_struct.h"
|
#include "soc/pmu_struct.h"
|
||||||
|
#include "hal/gpio_types.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
#include "hal/assert.h"
|
#include "hal/assert.h"
|
||||||
|
|
||||||
@@ -35,21 +36,6 @@ typedef enum {
|
|||||||
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
||||||
} rtcio_ll_func_t;
|
} rtcio_ll_func_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_LL_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_LL_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_LL_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_wake_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_INTR_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_INTR_POSEDGE = 1, /*!< GPIO interrupt type : rising edge */
|
|
||||||
RTCIO_INTR_NEGEDGE = 2, /*!< GPIO interrupt type : falling edge */
|
|
||||||
RTCIO_INTR_ANYEDGE = 3, /*!< GPIO interrupt type : both rising and falling edge */
|
|
||||||
RTCIO_INTR_LOW_LEVEL = 4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_INTR_HIGH_LEVEL = 5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_intr_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
||||||
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
||||||
@@ -328,7 +314,7 @@ static inline void rtcio_ll_force_unhold_all(void)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Wakeup on high level or low level.
|
* @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)
|
static inline void rtcio_ll_wakeup_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 1;
|
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 1;
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
||||||
@@ -342,7 +328,7 @@ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t ty
|
|||||||
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 0;
|
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 0;
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_int_type = RTCIO_LL_WAKEUP_DISABLE;
|
LP_GPIO.pinn[rtcio_num].pinn_int_type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -352,7 +338,7 @@ static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
|||||||
* @param type Interrupt type on high level or low level.
|
* @param type Interrupt type on high level or low level.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline void rtcio_ll_intr_enable(int rtcio_num, rtcio_ll_intr_type_t type)
|
static inline void rtcio_ll_intr_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
#include "soc/lp_aon_struct.h"
|
#include "soc/lp_aon_struct.h"
|
||||||
#include "soc/lpperi_struct.h"
|
#include "soc/lpperi_struct.h"
|
||||||
#include "soc/pmu_struct.h"
|
#include "soc/pmu_struct.h"
|
||||||
|
#include "hal/gpio_types.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
#include "hal/assert.h"
|
#include "hal/assert.h"
|
||||||
|
|
||||||
@@ -34,21 +35,6 @@ typedef enum {
|
|||||||
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
||||||
} rtcio_ll_func_t;
|
} rtcio_ll_func_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_LL_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_LL_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_LL_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_wake_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_INTR_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_INTR_POSEDGE = 1, /*!< GPIO interrupt type : rising edge */
|
|
||||||
RTCIO_INTR_NEGEDGE = 2, /*!< GPIO interrupt type : falling edge */
|
|
||||||
RTCIO_INTR_ANYEDGE = 3, /*!< GPIO interrupt type : both rising and falling edge */
|
|
||||||
RTCIO_INTR_LOW_LEVEL = 4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_INTR_HIGH_LEVEL = 5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_intr_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
||||||
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
||||||
@@ -327,7 +313,7 @@ static inline void rtcio_ll_force_unhold_all(void)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Wakeup on high level or low level.
|
* @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)
|
static inline void rtcio_ll_wakeup_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_IO.pin[rtcio_num].wakeup_enable = 1;
|
LP_IO.pin[rtcio_num].wakeup_enable = 1;
|
||||||
LP_IO.pin[rtcio_num].int_type = type;
|
LP_IO.pin[rtcio_num].int_type = type;
|
||||||
@@ -349,7 +335,7 @@ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t ty
|
|||||||
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
LP_IO.pin[rtcio_num].wakeup_enable = 0;
|
LP_IO.pin[rtcio_num].wakeup_enable = 0;
|
||||||
LP_IO.pin[rtcio_num].int_type = RTCIO_LL_WAKEUP_DISABLE;
|
LP_IO.pin[rtcio_num].int_type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -359,7 +345,7 @@ static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
|||||||
* @param type Interrupt type on high level or low level.
|
* @param type Interrupt type on high level or low level.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline void rtcio_ll_intr_enable(int rtcio_num, rtcio_ll_intr_type_t type)
|
static inline void rtcio_ll_intr_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_IO.pin[rtcio_num].int_type = type;
|
LP_IO.pin[rtcio_num].int_type = type;
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "soc/lp_gpio_struct.h"
|
#include "soc/lp_gpio_struct.h"
|
||||||
#include "soc/lpperi_struct.h"
|
#include "soc/lpperi_struct.h"
|
||||||
#include "soc/pmu_struct.h"
|
#include "soc/pmu_struct.h"
|
||||||
|
#include "hal/gpio_types.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
#include "hal/assert.h"
|
#include "hal/assert.h"
|
||||||
|
|
||||||
@@ -35,21 +36,6 @@ typedef enum {
|
|||||||
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
||||||
} rtcio_ll_func_t;
|
} rtcio_ll_func_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_LL_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_LL_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_LL_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_wake_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_INTR_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_INTR_POSEDGE = 1, /*!< GPIO interrupt type : rising edge */
|
|
||||||
RTCIO_INTR_NEGEDGE = 2, /*!< GPIO interrupt type : falling edge */
|
|
||||||
RTCIO_INTR_ANYEDGE = 3, /*!< GPIO interrupt type : both rising and falling edge */
|
|
||||||
RTCIO_INTR_LOW_LEVEL = 4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_INTR_HIGH_LEVEL = 5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_intr_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
||||||
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
||||||
@@ -328,7 +314,7 @@ static inline void rtcio_ll_force_unhold_all(void)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Wakeup on high level or low level.
|
* @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)
|
static inline void rtcio_ll_wakeup_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 1;
|
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 1;
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
||||||
@@ -342,7 +328,7 @@ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t ty
|
|||||||
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 0;
|
LP_GPIO.pinn[rtcio_num].pinn_wakeup_enable = 0;
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_int_type = RTCIO_LL_WAKEUP_DISABLE;
|
LP_GPIO.pinn[rtcio_num].pinn_int_type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -352,7 +338,7 @@ static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
|||||||
* @param type Interrupt type on high level or low level.
|
* @param type Interrupt type on high level or low level.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline void rtcio_ll_intr_enable(int rtcio_num, rtcio_ll_intr_type_t type)
|
static inline void rtcio_ll_intr_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
LP_GPIO.pinn[rtcio_num].pinn_int_type = type;
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
#include "soc/lp_iomux_struct.h"
|
#include "soc/lp_iomux_struct.h"
|
||||||
#include "soc/lp_gpio_sig_map.h"
|
#include "soc/lp_gpio_sig_map.h"
|
||||||
#include "soc/pmu_struct.h"
|
#include "soc/pmu_struct.h"
|
||||||
|
#include "hal/gpio_types.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
#include "hal/assert.h"
|
#include "hal/assert.h"
|
||||||
|
|
||||||
@@ -33,21 +34,6 @@ typedef enum {
|
|||||||
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
||||||
} rtcio_ll_func_t;
|
} rtcio_ll_func_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_LL_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_LL_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_LL_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_wake_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_INTR_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_INTR_POSEDGE = 1, /*!< GPIO interrupt type : rising edge */
|
|
||||||
RTCIO_INTR_NEGEDGE = 2, /*!< GPIO interrupt type : falling edge */
|
|
||||||
RTCIO_INTR_ANYEDGE = 3, /*!< GPIO interrupt type : both rising and falling edge */
|
|
||||||
RTCIO_INTR_LOW_LEVEL = 4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_INTR_HIGH_LEVEL = 5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_intr_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
||||||
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
||||||
@@ -370,7 +356,7 @@ static inline void rtcio_ll_force_unhold_all(void)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Wakeup on high level or low level.
|
* @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)
|
static inline void rtcio_ll_wakeup_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_GPIO.pin[rtcio_num].wakeup_enable = 1;
|
LP_GPIO.pin[rtcio_num].wakeup_enable = 1;
|
||||||
LP_GPIO.pin[rtcio_num].int_type = type;
|
LP_GPIO.pin[rtcio_num].int_type = type;
|
||||||
@@ -384,7 +370,7 @@ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t ty
|
|||||||
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
LP_GPIO.pin[rtcio_num].wakeup_enable = 0;
|
LP_GPIO.pin[rtcio_num].wakeup_enable = 0;
|
||||||
LP_GPIO.pin[rtcio_num].int_type = RTCIO_LL_WAKEUP_DISABLE;
|
LP_GPIO.pin[rtcio_num].int_type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -393,7 +379,7 @@ static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Interrupt type on high level or low level.
|
* @param type Interrupt type on high level or low level.
|
||||||
*/
|
*/
|
||||||
static inline void rtcio_ll_intr_enable(int rtcio_num, rtcio_ll_intr_type_t type)
|
static inline void rtcio_ll_intr_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
LP_GPIO.pin[rtcio_num].int_type = type;
|
LP_GPIO.pin[rtcio_num].int_type = type;
|
||||||
}
|
}
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "hal/assert.h"
|
||||||
|
#include "hal/gpio_types.h"
|
||||||
#include "soc/rtc_io_struct.h"
|
#include "soc/rtc_io_struct.h"
|
||||||
#include "soc/rtc_io_reg.h"
|
#include "soc/rtc_io_reg.h"
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
@@ -30,12 +32,6 @@ typedef enum {
|
|||||||
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
||||||
} rtcio_ll_func_t;
|
} rtcio_ll_func_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_LL_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_LL_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_LL_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_wake_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
||||||
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
||||||
@@ -318,8 +314,9 @@ static inline void rtcio_ll_force_unhold_all(void)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Wakeup on high level or low level.
|
* @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)
|
static inline void rtcio_ll_wakeup_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
|
HAL_ASSERT(type == GPIO_INTR_LOW_LEVEL || type == GPIO_INTR_HIGH_LEVEL);
|
||||||
RTCIO.pin[rtcio_num].wakeup_enable = 1;
|
RTCIO.pin[rtcio_num].wakeup_enable = 1;
|
||||||
RTCIO.pin[rtcio_num].int_type = type;
|
RTCIO.pin[rtcio_num].int_type = type;
|
||||||
}
|
}
|
||||||
@@ -332,7 +329,7 @@ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t ty
|
|||||||
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
RTCIO.pin[rtcio_num].wakeup_enable = 0;
|
RTCIO.pin[rtcio_num].wakeup_enable = 0;
|
||||||
RTCIO.pin[rtcio_num].int_type = RTCIO_LL_WAKEUP_DISABLE;
|
RTCIO.pin[rtcio_num].int_type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "hal/gpio_types.h"
|
||||||
|
#include "hal/assert.h"
|
||||||
#include "soc/rtc_io_struct.h"
|
#include "soc/rtc_io_struct.h"
|
||||||
#include "soc/rtc_io_reg.h"
|
#include "soc/rtc_io_reg.h"
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
@@ -33,12 +35,6 @@ typedef enum {
|
|||||||
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
RTCIO_LL_FUNC_DIGITAL = 0x1, /*!< The pin controlled by DIGITAL module. */
|
||||||
} rtcio_ll_func_t;
|
} rtcio_ll_func_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
RTCIO_LL_WAKEUP_DISABLE = 0, /*!< Disable GPIO interrupt */
|
|
||||||
RTCIO_LL_WAKEUP_LOW_LEVEL = 0x4, /*!< GPIO interrupt type : input low level trigger */
|
|
||||||
RTCIO_LL_WAKEUP_HIGH_LEVEL = 0x5, /*!< GPIO interrupt type : input high level trigger */
|
|
||||||
} rtcio_ll_wake_type_t;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
RTCIO_LL_OUTPUT_NORMAL = 0, /*!< RTCIO output mode is normal. */
|
||||||
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
RTCIO_LL_OUTPUT_OD = 0x1, /*!< RTCIO output mode is open-drain. */
|
||||||
@@ -345,8 +341,9 @@ static inline void rtcio_ll_force_unhold_all(void)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @param type Wakeup on high level or low level.
|
* @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)
|
static inline void rtcio_ll_wakeup_enable(int rtcio_num, gpio_int_type_t type)
|
||||||
{
|
{
|
||||||
|
HAL_ASSERT(type == GPIO_INTR_LOW_LEVEL || type == GPIO_INTR_HIGH_LEVEL);
|
||||||
RTCIO.pin[rtcio_num].wakeup_enable = 1;
|
RTCIO.pin[rtcio_num].wakeup_enable = 1;
|
||||||
RTCIO.pin[rtcio_num].int_type = type;
|
RTCIO.pin[rtcio_num].int_type = type;
|
||||||
}
|
}
|
||||||
@@ -359,7 +356,7 @@ static inline void rtcio_ll_wakeup_enable(int rtcio_num, rtcio_ll_wake_type_t ty
|
|||||||
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
static inline void rtcio_ll_wakeup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
RTCIO.pin[rtcio_num].wakeup_enable = 0;
|
RTCIO.pin[rtcio_num].wakeup_enable = 0;
|
||||||
RTCIO.pin[rtcio_num].int_type = RTCIO_LL_WAKEUP_DISABLE;
|
RTCIO.pin[rtcio_num].int_type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -38,14 +38,16 @@ typedef enum {
|
|||||||
#endif
|
#endif
|
||||||
} lp_io_num_t;
|
} lp_io_num_t;
|
||||||
|
|
||||||
typedef enum {
|
/** @cond */
|
||||||
LP_IO_INTR_DISABLE = 0, /*!< Disable GPIO interrupt */
|
/// for backward compatible
|
||||||
LP_IO_INTR_POSEDGE = 1, /*!< GPIO interrupt type : rising edge */
|
typedef gpio_int_type_t lp_io_intr_type_t;
|
||||||
LP_IO_INTR_NEGEDGE = 2, /*!< GPIO interrupt type : falling edge */
|
#define LP_IO_INTR_DISABLE GPIO_INTR_DISABLE
|
||||||
LP_IO_INTR_ANYEDGE = 3, /*!< GPIO interrupt type : both rising and falling edge */
|
#define LP_IO_INTR_POSEDGE GPIO_INTR_POSEDGE
|
||||||
LP_IO_INTR_LOW_LEVEL = 4, /*!< GPIO interrupt type : input low level trigger */
|
#define LP_IO_INTR_NEGEDGE GPIO_INTR_NEGEDGE
|
||||||
LP_IO_INTR_HIGH_LEVEL = 5, /*!< GPIO interrupt type : input high level trigger */
|
#define LP_IO_INTR_ANYEDGE GPIO_INTR_ANYEDGE
|
||||||
} lp_io_intr_type_t;
|
#define LP_IO_INTR_LOW_LEVEL GPIO_INTR_LOW_LEVEL
|
||||||
|
#define LP_IO_INTR_HIGH_LEVEL GPIO_INTR_HIGH_LEVEL
|
||||||
|
/** @endcond */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialize a rtcio pin
|
* @brief Initialize a rtcio pin
|
||||||
@@ -184,7 +186,7 @@ static inline void ulp_lp_core_gpio_pulldown_disable(lp_io_num_t lp_io_num)
|
|||||||
* @param lp_io_num The lp io pin to enable interrupt for
|
* @param lp_io_num The lp io pin to enable interrupt for
|
||||||
* @param intr_type The interrupt type to enable
|
* @param intr_type The interrupt type to enable
|
||||||
*/
|
*/
|
||||||
static inline void ulp_lp_core_gpio_intr_enable(lp_io_num_t lp_io_num, lp_io_intr_type_t intr_type)
|
static inline void ulp_lp_core_gpio_intr_enable(lp_io_num_t lp_io_num, gpio_int_type_t intr_type)
|
||||||
{
|
{
|
||||||
rtcio_ll_intr_enable(lp_io_num, intr_type);
|
rtcio_ll_intr_enable(lp_io_num, intr_type);
|
||||||
}
|
}
|
||||||
|
@@ -44,7 +44,7 @@ int main (void)
|
|||||||
{
|
{
|
||||||
lp_core_printf("LP Core pulse counter started\n");
|
lp_core_printf("LP Core pulse counter started\n");
|
||||||
ulp_lp_core_intr_enable();
|
ulp_lp_core_intr_enable();
|
||||||
ulp_lp_core_gpio_intr_enable(CONFIG_EXAMPLE_PULSE_COUNT_PIN, LP_IO_INTR_POSEDGE);
|
ulp_lp_core_gpio_intr_enable(CONFIG_EXAMPLE_PULSE_COUNT_PIN, GPIO_INTR_POSEDGE);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user