/* * SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ /******************************************************************************* * NOTICE * 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 ESP-8684 GPIO register operations #pragma once #include "soc/soc.h" #include "soc/gpio_periph.h" #include "soc/rtc_cntl_reg.h" #include "hal/gpio_types.h" #include "stdlib.h" #ifdef __cplusplus extern "C" { #endif // Get GPIO hardware instance with giving gpio num #define GPIO_LL_GET_HW(num) (((num) == 0) ? (&GPIO) : NULL) #define GPIO_LL_PRO_CPU_INTR_ENA (BIT(0)) #define GPIO_LL_PRO_CPU_NMI_INTR_ENA (BIT(1)) /** * @brief Enable pull-up on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable pull-up on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable pull-down on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable pull-down on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief GPIO set interrupt trigger type * * @param hw Peripheral GPIO hardware instance address. * @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 */ static inline void gpio_ll_set_intr_type(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_int_type_t intr_type) { abort();// IDF-4019 } /** * @brief Get GPIO interrupt status * * @param hw Peripheral GPIO hardware instance address. * @param core_id interrupt core id * @param status interrupt status */ static inline void gpio_ll_get_intr_status(gpio_dev_t *hw, uint32_t core_id, uint32_t *status) { abort();// IDF-4019 } /** * @brief Get GPIO interrupt status high * * @param hw Peripheral GPIO hardware instance address. * @param core_id interrupt core id * @param status interrupt status high */ static inline void gpio_ll_get_intr_status_high(gpio_dev_t *hw, uint32_t core_id, uint32_t *status) { abort();// IDF-4019 } /** * @brief Clear GPIO interrupt status * * @param hw Peripheral GPIO hardware instance address. * @param mask interrupt status clear mask */ static inline void gpio_ll_clear_intr_status(gpio_dev_t *hw, uint32_t mask) { abort();// IDF-4019 } /** * @brief Clear GPIO interrupt status high * * @param hw Peripheral GPIO hardware instance address. * @param mask interrupt status high clear mask */ static inline void gpio_ll_clear_intr_status_high(gpio_dev_t *hw, uint32_t mask) { abort();// IDF-4019 } /** * @brief Enable GPIO module interrupt signal * * @param hw Peripheral GPIO hardware instance address. * @param core_id Interrupt enabled CPU to corresponding ID * @param gpio_num GPIO number. If you want to enable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16); */ static inline void gpio_ll_intr_enable_on_core(gpio_dev_t *hw, uint32_t core_id, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable GPIO module interrupt signal * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number. If you want to disable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16); */ static inline void gpio_ll_intr_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable input mode on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable input mode on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_input_enable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable output mode on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable output mode on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable open-drain mode on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_od_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable open-drain mode on GPIO. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_od_enable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief GPIO set output level * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number. If you want to set the output level of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16); * @param level Output level. 0: low ; 1: high */ static inline void gpio_ll_set_level(gpio_dev_t *hw, gpio_num_t gpio_num, uint32_t level) { abort();// IDF-4019 } /** * @brief GPIO get input level * * @warning If the pad is not configured for input (or input and output) the returned value is always 0. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number. If you want to get the logic level of e.g. pin GPIO16, gpio_num should be GPIO_NUM_16 (16); * * @return * - 0 the GPIO input level is 0 * - 1 the GPIO input level is 1 */ static inline int gpio_ll_get_level(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable GPIO wake-up function. * * @param hw Peripheral GPIO hardware instance address. * @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, gpio_int_type_t intr_type) { abort();// IDF-4019 } /** * @brief Disable GPIO wake-up function. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Set GPIO pad drive capability * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number, only support output GPIOs * @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) { abort();// IDF-4019 } /** * @brief Get GPIO pad drive capability * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number, only support output GPIOs * @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) { abort();// IDF-4019 } /** * @brief Enable all digital gpio pad hold function during Deep-sleep. * * @param hw Peripheral GPIO hardware instance address. */ static inline void gpio_ll_deep_sleep_hold_en(gpio_dev_t *hw) { abort();// IDF-4019 } /** * @brief Disable all digital gpio pad hold function during Deep-sleep. * * @param hw Peripheral GPIO hardware instance address. */ static inline void gpio_ll_deep_sleep_hold_dis(gpio_dev_t *hw) { abort();// IDF-4019 } /** * @brief Enable gpio pad hold function. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number, only support output GPIOs */ static inline void gpio_ll_hold_en(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable gpio pad hold function. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number, only support output GPIOs */ static inline void gpio_ll_hold_dis(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Set pad input to a peripheral signal through the IOMUX. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number of the pad. * @param signal_idx Peripheral signal id to input. One of the ``*_IN_IDX`` signals in ``soc/gpio_sig_map.h``. */ static inline void gpio_ll_iomux_in(gpio_dev_t *hw, uint32_t gpio, uint32_t signal_idx) { abort();// IDF-4019 } /** * @brief Select a function for the pin in the IOMUX * * @param pin_name Pin name to configure * @param func Function to assign to the pin */ static inline void gpio_ll_iomux_func_sel(uint32_t pin_name, uint32_t func) { abort();// IDF-4019 } /** * @brief Set peripheral output to an GPIO pad through the IOMUX. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num gpio_num GPIO number of the pad. * @param func The function number of the peripheral pin to output pin. * One of the ``FUNC_X_*`` of specified pin (X) in ``soc/io_mux_reg.h``. * @param oen_inv True if the output enable needs to be inverted, otherwise False. */ static inline void gpio_ll_iomux_out(gpio_dev_t *hw, uint8_t gpio_num, int func, uint32_t oen_inv) { abort();// IDF-4019 } static inline void gpio_ll_force_hold_all(gpio_dev_t *hw) { abort();// IDF-4019 } static inline void gpio_ll_force_unhold_all(void) { // abort();// IDF-4019 } /** * @brief Enable GPIO pin used for wakeup from sleep. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_sel_en(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable GPIO pin used for wakeup from sleep. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable GPIO pull-up in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_pullup_dis(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable GPIO pull-up in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable GPIO pull-down in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_pulldown_en(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable GPIO pull-down in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable GPIO input in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_input_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable GPIO input in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_input_enable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Disable GPIO output in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_output_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable GPIO output in sleep mode. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_sleep_output_enable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } /** * @brief Enable GPIO deep-sleep wake-up function. * * @param hw Peripheral GPIO hardware instance address. * @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_deepsleep_wakeup_enable(gpio_dev_t *hw, gpio_num_t gpio_num, gpio_int_type_t intr_type) { abort();// IDF-4019 } /** * @brief Disable GPIO deep-sleep wake-up function. * * @param hw Peripheral GPIO hardware instance address. * @param gpio_num GPIO number */ static inline void gpio_ll_deepsleep_wakeup_disable(gpio_dev_t *hw, gpio_num_t gpio_num) { abort();// IDF-4019 } #ifdef __cplusplus } #endif