Merge branch 'feat/fix_h2_gpio_ll' into 'master'

Fix H2 gpio_num_t to uint32_t on gpio_ll.h

See merge request espressif/esp-idf!37446
This commit is contained in:
Gao Xu
2025-03-24 18:10:05 +08:00
3 changed files with 91 additions and 72 deletions

View File

@@ -70,7 +70,7 @@ static inline void gpio_ll_get_io_config(gpio_dev_t *hw, uint32_t gpio_num, gpio
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
REG_SET_BIT(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_PU); REG_SET_BIT(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_PU);
} }
@@ -82,7 +82,7 @@ static inline void gpio_ll_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pullup_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
// The pull-up value of the USB pins are controlled by the pins pull-up value together with USB pull-up value // The pull-up value of the USB pins are controlled by the pins pull-up value together with USB pull-up value
// USB DP pin is default to PU enabled // USB DP pin is default to PU enabled
@@ -102,7 +102,7 @@ static inline void gpio_ll_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pulldown_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
REG_SET_BIT(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_PD); REG_SET_BIT(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_PD);
} }
@@ -114,7 +114,7 @@ static inline void gpio_ll_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
REG_CLR_BIT(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_PD); REG_CLR_BIT(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_PD);
@@ -127,7 +127,7 @@ static inline void gpio_ll_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number. If you want to set the trigger type of e.g. of GPIO16, gpio_num should be GPIO_NUM_16 (16); * @param gpio_num GPIO number. If you want to set the trigger type of e.g. of GPIO16, gpio_num should be GPIO_NUM_16 (16);
* @param intr_type Interrupt type, select from gpio_int_type_t * @param intr_type Interrupt type, select from gpio_int_type_t
*/ */
static inline void gpio_ll_set_intr_type(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_int_type_t intr_type) static inline void gpio_ll_set_intr_type(gpio_dev_t *hw, uint32_t gpio_num, gpio_int_type_t intr_type)
{ {
hw->pin[gpio_num].int_type = intr_type; hw->pin[gpio_num].int_type = intr_type;
} }
@@ -191,7 +191,7 @@ static inline void gpio_ll_clear_intr_status_high(gpio_dev_t *hw, uint32_t mask)
* @param gpio_num GPIO number. If you want to enable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16); * @param gpio_num GPIO number. If you want to enable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_intr_enable_on_core(gpio_dev_t *hw, uint32_t core_id, gpio_num_t gpio_num) static inline void gpio_ll_intr_enable_on_core(gpio_dev_t *hw, uint32_t core_id, uint32_t gpio_num)
{ {
HAL_ASSERT(core_id == 0 && "target SoC only has a single core"); HAL_ASSERT(core_id == 0 && "target SoC only has a single core");
GPIO.pin[gpio_num].int_ena = GPIO_LL_PRO_CPU_INTR_ENA; //enable pro cpu intr GPIO.pin[gpio_num].int_ena = GPIO_LL_PRO_CPU_INTR_ENA; //enable pro cpu intr
@@ -204,7 +204,7 @@ static inline void gpio_ll_intr_enable_on_core(gpio_dev_t *hw, uint32_t core_id,
* @param gpio_num GPIO number. If you want to disable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16); * @param gpio_num GPIO number. If you want to disable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_intr_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_intr_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pin[gpio_num].int_ena = 0; //disable GPIO intr hw->pin[gpio_num].int_ena = 0; //disable GPIO intr
} }
@@ -216,7 +216,7 @@ static inline void gpio_ll_intr_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_input_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_INPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_INPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -228,7 +228,7 @@ static inline void gpio_ll_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_input_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_input_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_INPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_INPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -306,7 +306,7 @@ static inline void gpio_ll_pin_input_hysteresis_disable(gpio_dev_t *hw, uint32_t
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_output_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->enable_w1tc.enable_w1tc = (0x1 << gpio_num); hw->enable_w1tc.enable_w1tc = (0x1 << gpio_num);
} }
@@ -318,7 +318,7 @@ static inline void gpio_ll_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_output_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->enable_w1ts.enable_w1ts = (0x1 << gpio_num); hw->enable_w1ts.enable_w1ts = (0x1 << gpio_num);
} }
@@ -329,7 +329,7 @@ static inline void gpio_ll_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_od_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_od_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pin[gpio_num].pad_driver = 0; hw->pin[gpio_num].pad_driver = 0;
} }
@@ -340,7 +340,7 @@ static inline void gpio_ll_od_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_od_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_od_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pin[gpio_num].pad_driver = 1; hw->pin[gpio_num].pad_driver = 1;
} }
@@ -365,7 +365,7 @@ static inline void gpio_ll_matrix_out_default(gpio_dev_t *hw, uint32_t gpio_num)
* @param level Output level. 0: low ; 1: high * @param level Output level. 0: low ; 1: high
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_set_level(gpio_dev_t *hw, gpio_num_t gpio_num, uint32_t level) static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t level)
{ {
if (level) { if (level) {
hw->out_w1ts.val = 1 << gpio_num; hw->out_w1ts.val = 1 << gpio_num;
@@ -387,7 +387,7 @@ static inline void gpio_ll_set_level(gpio_dev_t *hw, gpio_num_t gpio_num, uint32
* - 1 the GPIO input level is 1 * - 1 the GPIO input level is 1
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline int gpio_ll_get_level(gpio_dev_t *hw, gpio_num_t gpio_num) static inline int gpio_ll_get_level(gpio_dev_t *hw, uint32_t gpio_num)
{ {
return (hw->in.in_data_next >> gpio_num) & 0x1; return (hw->in.in_data_next >> gpio_num) & 0x1;
} }
@@ -399,7 +399,7 @@ static inline int gpio_ll_get_level(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number. * @param gpio_num GPIO number.
* @param intr_type GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used. * @param intr_type GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used.
*/ */
static inline void gpio_ll_wakeup_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_wakeup_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pin[gpio_num].wakeup_enable = 1; hw->pin[gpio_num].wakeup_enable = 1;
} }
@@ -410,7 +410,7 @@ static inline void gpio_ll_wakeup_enable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_wakeup_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pin[gpio_num].wakeup_enable = 0; hw->pin[gpio_num].wakeup_enable = 0;
} }
@@ -422,7 +422,7 @@ static inline void gpio_ll_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
* @param strength Drive capability of the pad * @param strength Drive capability of the pad
*/ */
static inline void gpio_ll_set_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_drive_cap_t strength) static inline void gpio_ll_set_drive_capability(gpio_dev_t *hw, uint32_t gpio_num, gpio_drive_cap_t strength)
{ {
SET_PERI_REG_BITS(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_DRV_V, strength, FUN_DRV_S); SET_PERI_REG_BITS(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_DRV_V, strength, FUN_DRV_S);
} }
@@ -434,7 +434,7 @@ static inline void gpio_ll_set_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
* @param strength Pointer to accept drive capability of the pad * @param strength Pointer to accept drive capability of the pad
*/ */
static inline void gpio_ll_get_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_drive_cap_t *strength) static inline void gpio_ll_get_drive_capability(gpio_dev_t *hw, uint32_t gpio_num, gpio_drive_cap_t *strength)
{ {
*strength = (gpio_drive_cap_t)GET_PERI_REG_BITS2(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_DRV_V, FUN_DRV_S); *strength = (gpio_drive_cap_t)GET_PERI_REG_BITS2(IO_MUX_GPIO0_REG + (gpio_num * 4), FUN_DRV_V, FUN_DRV_S);
} }
@@ -446,7 +446,7 @@ static inline void gpio_ll_get_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_hold_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_hold_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
LP_AON.gpio_hold0.gpio_hold0 |= GPIO_HOLD_MASK[gpio_num]; LP_AON.gpio_hold0.gpio_hold0 |= GPIO_HOLD_MASK[gpio_num];
} }
@@ -458,7 +458,7 @@ static inline void gpio_ll_hold_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_hold_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_hold_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
LP_AON.gpio_hold0.gpio_hold0 &= ~GPIO_HOLD_MASK[gpio_num]; LP_AON.gpio_hold0.gpio_hold0 &= ~GPIO_HOLD_MASK[gpio_num];
} }
@@ -604,7 +604,7 @@ static inline void gpio_ll_force_unhold_all(void)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_SEL_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_SEL_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -617,7 +617,7 @@ static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_SEL_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_SEL_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -629,7 +629,7 @@ static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLUP_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLUP_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -641,7 +641,7 @@ static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLUP_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLUP_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -653,7 +653,7 @@ static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLDOWN_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLDOWN_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -665,7 +665,7 @@ static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLDOWN_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLDOWN_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -677,7 +677,7 @@ static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_nu
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_INPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_INPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -689,7 +689,7 @@ static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, gpio_num_t gpio_n
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_INPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_INPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -701,7 +701,7 @@ static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, gpio_num_t gpio_nu
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_OUTPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_OUTPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -713,7 +713,7 @@ static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, gpio_num_t gpio_
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_OUTPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_OUTPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
} }
@@ -725,7 +725,7 @@ static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, gpio_num_t gpio_n
* @param gpio_num GPIO number. * @param gpio_num GPIO number.
* @param intr_type GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used. * @param intr_type GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used.
*/ */
static inline void gpio_ll_deepsleep_wakeup_enable(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_int_type_t intr_type) static inline void gpio_ll_deepsleep_wakeup_enable(gpio_dev_t *hw, uint32_t gpio_num, gpio_int_type_t intr_type)
{ {
HAL_ASSERT((gpio_num >= GPIO_NUM_7 && gpio_num <= GPIO_NUM_14) && HAL_ASSERT((gpio_num >= GPIO_NUM_7 && gpio_num <= GPIO_NUM_14) &&
"only gpio7~14 support deep sleep wake-up function"); "only gpio7~14 support deep sleep wake-up function");
@@ -752,7 +752,7 @@ static inline void gpio_ll_deepsleep_wakeup_enable(gpio_dev_t *hw, gpio_num_t gp
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_deepsleep_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_deepsleep_wakeup_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
HAL_ASSERT((gpio_num >= GPIO_NUM_7 && gpio_num <= GPIO_NUM_14) && HAL_ASSERT((gpio_num >= GPIO_NUM_7 && gpio_num <= GPIO_NUM_14) &&
"only gpio7~14 support deep sleep wake-up function"); "only gpio7~14 support deep sleep wake-up function");

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -7,7 +7,6 @@
/******************************************************************************* /*******************************************************************************
* NOTICE * NOTICE
* The hal is not public api, don't use in application code. * The hal is not public api, don't use in application code.
* See readme.md in soc/include/hal/readme.md
******************************************************************************/ ******************************************************************************/
// The LL layer for ESP32-H21 GPIO register operations // The LL layer for ESP32-H21 GPIO register operations
@@ -23,8 +22,8 @@
#include "soc/pmu_struct.h" #include "soc/pmu_struct.h"
#include "soc/pcr_struct.h" #include "soc/pcr_struct.h"
#include "soc/clk_tree_defs.h" #include "soc/clk_tree_defs.h"
#include "soc/io_mux_struct.h"
#include "soc/usb_serial_jtag_struct.h" #include "soc/usb_serial_jtag_struct.h"
#include "soc/io_mux_struct.h"
#include "hal/gpio_types.h" #include "hal/gpio_types.h"
#include "hal/misc.h" #include "hal/misc.h"
#include "hal/assert.h" #include "hal/assert.h"
@@ -70,7 +69,7 @@ static inline void gpio_ll_get_io_config(gpio_dev_t *hw, uint32_t gpio_num, gpio
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].fun_wpu = 1; IO_MUX.gpio[gpio_num].fun_wpu = 1;
} }
@@ -82,7 +81,7 @@ static inline void gpio_ll_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pullup_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
// The pull-up value of the USB pins are controlled by the pins pull-up value together with USB pull-up value // The pull-up value of the USB pins are controlled by the pins pull-up value together with USB pull-up value
// USB DP pin is default to PU enabled // USB DP pin is default to PU enabled
@@ -102,7 +101,7 @@ static inline void gpio_ll_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pulldown_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].fun_wpd = 1; IO_MUX.gpio[gpio_num].fun_wpd = 1;
} }
@@ -114,7 +113,7 @@ static inline void gpio_ll_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].fun_wpd = 0; IO_MUX.gpio[gpio_num].fun_wpd = 0;
} }
@@ -126,7 +125,7 @@ static inline void gpio_ll_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number. If you want to set the trigger type of e.g. of GPIO16, gpio_num should be GPIO_NUM_16 (16); * @param gpio_num GPIO number. If you want to set the trigger type of e.g. of GPIO16, gpio_num should be GPIO_NUM_16 (16);
* @param intr_type Interrupt type, select from gpio_int_type_t * @param intr_type Interrupt type, select from gpio_int_type_t
*/ */
static inline void gpio_ll_set_intr_type(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_int_type_t intr_type) static inline void gpio_ll_set_intr_type(gpio_dev_t *hw, uint32_t gpio_num, gpio_int_type_t intr_type)
{ {
hw->pinn[gpio_num].pinn_int_type = intr_type; hw->pinn[gpio_num].pinn_int_type = intr_type;
} }
@@ -190,7 +189,7 @@ static inline void gpio_ll_clear_intr_status_high(gpio_dev_t *hw, uint32_t mask)
* @param gpio_num GPIO number. If you want to enable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16); * @param gpio_num GPIO number. If you want to enable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_intr_enable_on_core(gpio_dev_t *hw, uint32_t core_id, gpio_num_t gpio_num) static inline void gpio_ll_intr_enable_on_core(gpio_dev_t *hw, uint32_t core_id, uint32_t gpio_num)
{ {
HAL_ASSERT(core_id == 0 && "target SoC only has a single core"); HAL_ASSERT(core_id == 0 && "target SoC only has a single core");
GPIO.pinn[gpio_num].pinn_int_ena = GPIO_LL_PRO_CPU_INTR_ENA; //enable pro cpu intr GPIO.pinn[gpio_num].pinn_int_ena = GPIO_LL_PRO_CPU_INTR_ENA; //enable pro cpu intr
@@ -203,7 +202,7 @@ static inline void gpio_ll_intr_enable_on_core(gpio_dev_t *hw, uint32_t core_id,
* @param gpio_num GPIO number. If you want to disable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16); * @param gpio_num GPIO number. If you want to disable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_intr_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_intr_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pinn[gpio_num].pinn_int_ena = 0; //disable GPIO intr hw->pinn[gpio_num].pinn_int_ena = 0; //disable GPIO intr
} }
@@ -215,7 +214,7 @@ static inline void gpio_ll_intr_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_input_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].fun_ie = 0; IO_MUX.gpio[gpio_num].fun_ie = 0;
} }
@@ -227,7 +226,7 @@ static inline void gpio_ll_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_input_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_input_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].fun_ie = 1; IO_MUX.gpio[gpio_num].fun_ie = 1;
} }
@@ -289,7 +288,7 @@ static inline void gpio_ll_pin_input_hysteresis_disable(gpio_dev_t *hw, uint32_t
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_output_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->enable_w1tc.enable_w1tc = (0x1 << gpio_num); hw->enable_w1tc.enable_w1tc = (0x1 << gpio_num);
} }
@@ -301,7 +300,7 @@ static inline void gpio_ll_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_output_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->enable_w1ts.enable_w1ts = (0x1 << gpio_num); hw->enable_w1ts.enable_w1ts = (0x1 << gpio_num);
} }
@@ -312,7 +311,7 @@ static inline void gpio_ll_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_od_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_od_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pinn[gpio_num].pinn_pad_driver = 0; hw->pinn[gpio_num].pinn_pad_driver = 0;
} }
@@ -323,7 +322,7 @@ static inline void gpio_ll_od_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_od_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_od_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pinn[gpio_num].pinn_pad_driver = 1; hw->pinn[gpio_num].pinn_pad_driver = 1;
} }
@@ -351,12 +350,12 @@ static inline void gpio_ll_matrix_out_default(gpio_dev_t *hw, uint32_t gpio_num)
* @param level Output level. 0: low ; 1: high * @param level Output level. 0: low ; 1: high
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_set_level(gpio_dev_t *hw, gpio_num_t gpio_num, uint32_t level) static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t level)
{ {
if (level) { if (level) {
hw->out_w1ts.out_w1ts = (1 << gpio_num); hw->out_w1ts.val = 1 << gpio_num;
} else { } else {
hw->out_w1tc.out_w1tc = (1 << gpio_num); hw->out_w1tc.val = 1 << gpio_num;
} }
} }
@@ -373,7 +372,7 @@ static inline void gpio_ll_set_level(gpio_dev_t *hw, gpio_num_t gpio_num, uint32
* - 1 the GPIO input level is 1 * - 1 the GPIO input level is 1
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline int gpio_ll_get_level(gpio_dev_t *hw, gpio_num_t gpio_num) static inline int gpio_ll_get_level(gpio_dev_t *hw, uint32_t gpio_num)
{ {
return (hw->in.in_data_next >> gpio_num) & 0x1; return (hw->in.in_data_next >> gpio_num) & 0x1;
} }
@@ -383,9 +382,8 @@ static inline int gpio_ll_get_level(gpio_dev_t *hw, gpio_num_t gpio_num)
* *
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number. * @param gpio_num GPIO number.
* @param intr_type GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used.
*/ */
static inline void gpio_ll_wakeup_enable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_wakeup_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pinn[gpio_num].pinn_wakeup_enable = 1; hw->pinn[gpio_num].pinn_wakeup_enable = 1;
} }
@@ -396,7 +394,7 @@ static inline void gpio_ll_wakeup_enable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_wakeup_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
hw->pinn[gpio_num].pinn_wakeup_enable = 0; hw->pinn[gpio_num].pinn_wakeup_enable = 0;
} }
@@ -408,7 +406,7 @@ static inline void gpio_ll_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
* @param strength Drive capability of the pad * @param strength Drive capability of the pad
*/ */
static inline void gpio_ll_set_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_drive_cap_t strength) static inline void gpio_ll_set_drive_capability(gpio_dev_t *hw, uint32_t gpio_num, gpio_drive_cap_t strength)
{ {
IO_MUX.gpio[gpio_num].fun_drv = strength; IO_MUX.gpio[gpio_num].fun_drv = strength;
} }
@@ -420,7 +418,7 @@ static inline void gpio_ll_set_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
* @param strength Pointer to accept drive capability of the pad * @param strength Pointer to accept drive capability of the pad
*/ */
static inline void gpio_ll_get_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_drive_cap_t *strength) static inline void gpio_ll_get_drive_capability(gpio_dev_t *hw, uint32_t gpio_num, gpio_drive_cap_t *strength)
{ {
*strength = (gpio_drive_cap_t)(IO_MUX.gpio[gpio_num].fun_drv); *strength = (gpio_drive_cap_t)(IO_MUX.gpio[gpio_num].fun_drv);
} }
@@ -432,7 +430,7 @@ static inline void gpio_ll_get_drive_capability(gpio_dev_t *hw, gpio_num_t gpio_
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_hold_en(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_hold_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
LP_AON.gpio_hold0.gpio_hold0 |= GPIO_HOLD_MASK[gpio_num]; LP_AON.gpio_hold0.gpio_hold0 |= GPIO_HOLD_MASK[gpio_num];
} }
@@ -444,7 +442,7 @@ static inline void gpio_ll_hold_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param gpio_num GPIO number, only support output GPIOs * @param gpio_num GPIO number, only support output GPIOs
*/ */
__attribute__((always_inline)) __attribute__((always_inline))
static inline void gpio_ll_hold_dis(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_hold_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
LP_AON.gpio_hold0.gpio_hold0 &= ~GPIO_HOLD_MASK[gpio_num]; LP_AON.gpio_hold0.gpio_hold0 &= ~GPIO_HOLD_MASK[gpio_num];
} }
@@ -579,7 +577,8 @@ static inline void gpio_ll_force_unhold_all(void)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].slp_sel = 1; IO_MUX.gpio[gpio_num].slp_sel = 1;
} }
@@ -591,7 +590,8 @@ static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].slp_sel = 0; IO_MUX.gpio[gpio_num].slp_sel = 0;
} }
@@ -602,7 +602,8 @@ static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_wpu = 0; IO_MUX.gpio[gpio_num].mcu_wpu = 0;
} }
@@ -613,7 +614,8 @@ static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_wpu = 1; IO_MUX.gpio[gpio_num].mcu_wpu = 1;
} }
@@ -624,7 +626,8 @@ static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_wpd = 1; IO_MUX.gpio[gpio_num].mcu_wpd = 1;
} }
@@ -635,17 +638,20 @@ static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_wpd = 0; IO_MUX.gpio[gpio_num].mcu_wpd = 0;
} }
/** /**
* @brief Disable GPIO input in sleep mode. * @brief Disable GPIO input in sleep mode.
* *
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_ie = 0; IO_MUX.gpio[gpio_num].mcu_ie = 0;
} }
@@ -656,7 +662,8 @@ static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, gpio_num_t gpio_n
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_ie = 1; IO_MUX.gpio[gpio_num].mcu_ie = 1;
} }
@@ -667,7 +674,8 @@ static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, gpio_num_t gpio_nu
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_oe = 0; IO_MUX.gpio[gpio_num].mcu_oe = 0;
} }
@@ -678,7 +686,8 @@ static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, gpio_num_t gpio_
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num) __attribute__((always_inline))
static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
IO_MUX.gpio[gpio_num].mcu_oe = 1; IO_MUX.gpio[gpio_num].mcu_oe = 1;
} }
@@ -690,7 +699,7 @@ static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, gpio_num_t gpio_n
* @param gpio_num GPIO number. * @param gpio_num GPIO number.
* @param intr_type GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used. * @param intr_type GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used.
*/ */
static inline void gpio_ll_deepsleep_wakeup_enable(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_int_type_t intr_type) static inline void gpio_ll_deepsleep_wakeup_enable(gpio_dev_t *hw, uint32_t gpio_num, gpio_int_type_t intr_type)
{ {
HAL_ASSERT((gpio_num >= GPIO_NUM_5 && gpio_num <= GPIO_NUM_11) && HAL_ASSERT((gpio_num >= GPIO_NUM_5 && gpio_num <= GPIO_NUM_11) &&
"only gpio5~11 support deep sleep wake-up function"); "only gpio5~11 support deep sleep wake-up function");
@@ -717,7 +726,7 @@ static inline void gpio_ll_deepsleep_wakeup_enable(gpio_dev_t *hw, gpio_num_t gp
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
static inline void gpio_ll_deepsleep_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num) static inline void gpio_ll_deepsleep_wakeup_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
HAL_ASSERT((gpio_num >= GPIO_NUM_5 && gpio_num <= GPIO_NUM_11) && HAL_ASSERT((gpio_num >= GPIO_NUM_5 && gpio_num <= GPIO_NUM_11) &&
"only gpio5~11 support deep sleep wake-up function"); "only gpio5~11 support deep sleep wake-up function");

View File

@@ -568,6 +568,7 @@ static inline void gpio_ll_force_unhold_all(void)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_SEL_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_SEL_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -580,6 +581,7 @@ static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, uint32_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_SEL_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_SEL_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -591,6 +593,7 @@ static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, uint32_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLUP_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLUP_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -602,6 +605,7 @@ static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, uint32_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLUP_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLUP_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -613,6 +617,7 @@ static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLDOWN_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLDOWN_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -624,6 +629,7 @@ static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, uint32_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_PULLDOWN_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_PULLDOWN_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -635,6 +641,7 @@ static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_INPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_INPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -646,6 +653,7 @@ static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, uint32_t gpio_num
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_INPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_INPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -657,6 +665,7 @@ static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, uint32_t gpio_num)
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_OUTPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_OUTPUT_DISABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));
@@ -668,6 +677,7 @@ static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, uint32_t gpio_nu
* @param hw Peripheral GPIO hardware instance address. * @param hw Peripheral GPIO hardware instance address.
* @param gpio_num GPIO number * @param gpio_num GPIO number
*/ */
__attribute__((always_inline))
static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, uint32_t gpio_num) static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, uint32_t gpio_num)
{ {
PIN_SLP_OUTPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4)); PIN_SLP_OUTPUT_ENABLE(IO_MUX_GPIO0_REG + (gpio_num * 4));