Files
kunlun/driver/inc/gpio.h
2024-09-28 14:24:04 +08:00

103 lines
3.9 KiB
C
Executable File

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
/*
* Notice :
* This xxx.h file, belongs to HAL level, holds common structures for HW level.
* The bellows are ready for HW & HAL level, limited for CVG/MAC & APP level.
*/
#ifndef _GPIO_H_
#define _GPIO_H_
#ifdef __cplusplus
extern "C" {
#endif
/*
* @brief iot_gpio_op_t() - API table to operate GPIO hardware.
*/
typedef struct
{
/*
* @brief gpio_init() - Initialize the hardware part.
* @return ERR_OK if sucsessfully, else failed.
*/
int (*gpio_init)(void);
/*
* @brief set_gpio_mode() - Set mode of current GPIO.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @param mode: Mode of current GPIO, see enum gpio_mode.
* @return ERR_OK if sucsessfully, else failed.
*/
int (*set_gpio_mode)(int gpio, int mode);
/*
* @brief set_interrupt_mode() - Set interrupt mode of current GPIO.
* Called only if this GPIO set as GPIO_INTERRUPT.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @param mode: Interrupt mode of current GPIO, see gpio_int_trigger_mode.
* @return ERR_OK if sucsessfully, else failed.
*/
int (*set_interrupt_mode)(int gpio, int mode);
/*
* @brief set_value() - Set output value of current GPIO.
* Called only if this GPIO set as GPIO_OUTPUT.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @param value: 0 - output low, else high.
* @return ERR_OK if sucsessfully, else failed.
*/
int (*set_value)(int gpio, int value);
/*
* @brief get_value() - Get input value of current GPIO.
* Called only if this GPIO set as GPIO_INPUT.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @return value: 0 - output low, else high.
*/
int (*get_value)(int gpio);
/*
* @brief get_interrupt_status() - Get interrupt state of current GPIO.
* Called only if this GPIO set as GPIO_INTERRUPT.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @return value: 0 - No interrupt triggers, else interrupt triggers.
*/
int (*get_interrupt_status)(int gpio);
/*
* @brief clear_interrupt_status() - Clear the interrupt of current GPIO.
* Called only if this GPIO set as GPIO_INTERRUPT.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @return ERR_OK if sucsessfully, else failed.
*/
int (*clear_interrupt_status)(int gpio);
/*
* @brief set_gpio_open_drain() - Set open drain of current GPIO.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @param mode: open drain mode, see enum gpio_drain_mode.
* @return ERR_OK if sucsessfully, else failed.
*/
int (*set_gpio_open_drain)(int gpio, int mode);
/*
* @brief get_output_value() - Get output value of current GPIO.
* Called only if this GPIO set as GPIO_OUTPUT.
* @param gpio: GPIO-NO that starts from 'Zero'.
* @param pval: Pointer to get value of output. 0 - output low, else high.
* @return ERR_OK if sucsessfully, else failed.
*/
int (*get_output_value)(int gpio, int *pval);
} iot_gpio_op_t;
#ifdef __cplusplus
}
#endif
#endif