VSF Documented
Data Structures | Macros | Typedefs | Functions
gpio.c File Reference
#include "../driver.h"
#include "hal/vsf_hal.h"
#include "./i_reg_gpio.h"
#include "../vendor/plf/aic8800/src/driver/iomux/reg_iomux.h"
#include "../vendor/plf/aic8800/src/driver/aic1000lite_regs/aic1000Lite_iomux.h"
#include "../vendor/plf/aic8800/src/driver/pmic/pmic_api.h"
#include "hal/driver/common/gpio/gpio_template.inc"

Data Structures

struct  vsf_hw_gpio_t
 

Macros

#define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY   ENABLED
 
#define VSF_GPIO_CFG_CHANGE_DIR_FIRST   ENABLED
 
#define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR   1
 
#define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET   1
 
#define VSF_HW_GPIO_CFG_MULTI_CLASS   VSF_GPIO_CFG_MULTI_CLASS
 
#define VSF_HW_EXTI_GPIO_CFG_MULTI_CLASS   VSF_GPIO_CFG_MULTI_CLASS
 
#define VSF_HW_GPIO_CFG_PROTECT_LEVEL   interrupt
 
#define __vsf_gpio_protect   vsf_protect(VSF_HW_GPIO_CFG_PROTECT_LEVEL)
 
#define __vsf_gpio_unprotect   vsf_unprotect(VSF_HW_GPIO_CFG_PROTECT_LEVEL)
 
#define __AIC8800_GPIO_IS_VAILID_PIN(__P)
 
#define __AIC8800_GPIO_FUNCTION_MASK   IOMUX_GPIO_CONFIG_SEL_MASK
 
#define VSF_GPIO_CFG_IMP_PREFIX   vsf_hw
 
#define VSF_GPIO_CFG_IMP_UPCASE_PREFIX   VSF_HW
 
#define VSF_GPIO_CFG_IMP_LV0(__IDX, __HAL_OP)
 

Typedefs

typedef struct vsf_hw_gpio_t vsf_hw_gpio_t
 

Functions

void __vsf_hw_aic8800_gpio_init (void)
 To ensure that the GPIO is working properly, it needs to be called inside vsf_driver_init()
 
vsf_err_t vsf_hw_gpio_port_config_pins (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_cfg_t *cfg_ptr)
 
void vsf_hw_gpio_set_direction (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t direction_mask)
 
vsf_gpio_pin_mask_t vsf_hw_gpio_get_direction (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_pin_mask_t pin_mask)
 
vsf_gpio_pin_mask_t vsf_hw_gpio_read (vsf_hw_gpio_t *hw_gpio_ptr)
 
void vsf_hw_gpio_write (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t value)
 
void vsf_hw_gpio_toggle (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_pin_mask_t pin_mask)
 
vsf_gpio_capability_t vsf_hw_gpio_capability (vsf_hw_gpio_t *hw_gpio_ptr)
 
vsf_err_t vsf_hw_gpio_exti_irq_config (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_exti_irq_cfg_t *irq_cfg_ptr)
 
vsf_err_t vsf_hw_gpio_exti_irq_enable (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_pin_mask_t pin_mask)
 
vsf_err_t vsf_hw_gpio_exti_irq_disable (vsf_hw_gpio_t *hw_gpio_ptr, vsf_gpio_pin_mask_t pin_mask)
 
void __vsf_hw_gpio_irq_handler (vsf_hw_gpio_t *hw_gpio_ptr)
 

Macro Definition Documentation

◆ VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY

#define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY   ENABLED

◆ VSF_GPIO_CFG_CHANGE_DIR_FIRST

#define VSF_GPIO_CFG_CHANGE_DIR_FIRST   ENABLED

◆ VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR

#define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR   1

◆ VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET

#define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET   1

◆ VSF_HW_GPIO_CFG_MULTI_CLASS

#define VSF_HW_GPIO_CFG_MULTI_CLASS   VSF_GPIO_CFG_MULTI_CLASS

◆ VSF_HW_EXTI_GPIO_CFG_MULTI_CLASS

#define VSF_HW_EXTI_GPIO_CFG_MULTI_CLASS   VSF_GPIO_CFG_MULTI_CLASS

◆ VSF_HW_GPIO_CFG_PROTECT_LEVEL

#define VSF_HW_GPIO_CFG_PROTECT_LEVEL   interrupt

◆ __vsf_gpio_protect

#define __vsf_gpio_protect   vsf_protect(VSF_HW_GPIO_CFG_PROTECT_LEVEL)

◆ __vsf_gpio_unprotect

#define __vsf_gpio_unprotect   vsf_unprotect(VSF_HW_GPIO_CFG_PROTECT_LEVEL)

◆ __AIC8800_GPIO_IS_VAILID_PIN

#define __AIC8800_GPIO_IS_VAILID_PIN (   __P)
Value:
(((__P & VSF_HW_GPIO_PIN_MASK) != 0) && \
((__P & ~VSF_HW_GPIO_PIN_MASK) == 0))

◆ __AIC8800_GPIO_FUNCTION_MASK

#define __AIC8800_GPIO_FUNCTION_MASK   IOMUX_GPIO_CONFIG_SEL_MASK

◆ VSF_GPIO_CFG_IMP_PREFIX

#define VSF_GPIO_CFG_IMP_PREFIX   vsf_hw

◆ VSF_GPIO_CFG_IMP_UPCASE_PREFIX

#define VSF_GPIO_CFG_IMP_UPCASE_PREFIX   VSF_HW

◆ VSF_GPIO_CFG_IMP_LV0

#define VSF_GPIO_CFG_IMP_LV0 (   __IDX,
  __HAL_OP 
)
Value:
static const uint8_t __vsf_hw_gpio ## __IDX ## funs[] = \
VSF_HW_GPIO ## __IDX ## _MAP; \
vsf_hw_gpio_t vsf_hw_gpio ## __IDX = { \
.GPIO = (GPIO_REG_T *)VSF_HW_GPIO ## __IDX ## _BASE_ADDRESS, \
.IOMUX = ((AIC_IOMUX_TypeDef *)VSF_HW_GPIO ## __IDX ## _IOMUX_REG_BASE),\
.irqn = VSF_HW_GPIO ## __IDX ## _IRQ_IDX, \
.is_pmic = VSF_HW_GPIO ## __IDX ## _IS_PMIC, \
.gpio_pin_mask = VSF_HW_GPIO ## __IDX ## _GPIO_PIN_MASK, \
.funs = __vsf_hw_gpio ## __IDX ## funs, \
__HAL_OP \
}; \
void VSF_HW_GPIO ## __IDX ## _IRQ(void) \
{ \
__vsf_hw_gpio_irq_handler(&vsf_hw_gpio ## __IDX); \
vsf_hal_irq_leave(ctx); \
}
uint32_t uintptr_t
Definition stdint.h:38
unsigned char uint8_t
Definition stdint.h:5
Definition i_reg_gpio.h:72
Definition gpio.c:64
GPIO_REG_T * GPIO
Definition gpio.c:69
uintptr_t vsf_hal_irq_enter(void)
Definition vsf_hal.c:59

Typedef Documentation

◆ vsf_hw_gpio_t

typedef struct vsf_hw_gpio_t vsf_hw_gpio_t

Function Documentation

◆ __vsf_hw_aic8800_gpio_init()

void __vsf_hw_aic8800_gpio_init ( void  )

To ensure that the GPIO is working properly, it needs to be called inside vsf_driver_init()

◆ vsf_hw_gpio_port_config_pins()

vsf_err_t vsf_hw_gpio_port_config_pins ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_pin_mask_t  pin_mask,
vsf_gpio_cfg_t cfg_ptr 
)

◆ vsf_hw_gpio_set_direction()

void vsf_hw_gpio_set_direction ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_pin_mask_t  pin_mask,
vsf_gpio_pin_mask_t  direction_mask 
)

◆ vsf_hw_gpio_get_direction()

vsf_gpio_pin_mask_t vsf_hw_gpio_get_direction ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_pin_mask_t  pin_mask 
)

◆ vsf_hw_gpio_read()

vsf_gpio_pin_mask_t vsf_hw_gpio_read ( vsf_hw_gpio_t hw_gpio_ptr)

◆ vsf_hw_gpio_write()

void vsf_hw_gpio_write ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_pin_mask_t  pin_mask,
vsf_gpio_pin_mask_t  value 
)

◆ vsf_hw_gpio_toggle()

void vsf_hw_gpio_toggle ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_pin_mask_t  pin_mask 
)

◆ vsf_hw_gpio_capability()

vsf_gpio_capability_t vsf_hw_gpio_capability ( vsf_hw_gpio_t hw_gpio_ptr)

◆ vsf_hw_gpio_exti_irq_config()

vsf_err_t vsf_hw_gpio_exti_irq_config ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_exti_irq_cfg_t irq_cfg_ptr 
)

◆ vsf_hw_gpio_exti_irq_enable()

vsf_err_t vsf_hw_gpio_exti_irq_enable ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_pin_mask_t  pin_mask 
)

◆ vsf_hw_gpio_exti_irq_disable()

vsf_err_t vsf_hw_gpio_exti_irq_disable ( vsf_hw_gpio_t hw_gpio_ptr,
vsf_gpio_pin_mask_t  pin_mask 
)

◆ __vsf_hw_gpio_irq_handler()

void __vsf_hw_gpio_irq_handler ( vsf_hw_gpio_t hw_gpio_ptr)