2024-03-24 20:52:55 +08:00
|
|
|
#ifndef __HARDWARE_GPIO_H__
|
|
|
|
|
#define __HARDWARE_GPIO_H__
|
|
|
|
|
|
|
|
|
|
#include "reg.h"
|
|
|
|
|
#include "gpio_reg.h"
|
|
|
|
|
|
2025-05-31 21:33:48 +08:00
|
|
|
#define GPIO_FUNC_XIP (0 << 0U) /* not available for GPIO0~29 */
|
|
|
|
|
#define GPIO_FUNC_SPI (1 << 0U) /* only available for GPIO0~29 */
|
|
|
|
|
#define GPIO_FUNC_UART (2 << 0U) /* only available for GPIO0~29 */
|
|
|
|
|
#define GPIO_FUNC_I2C (3 << 0U) /* only available for GPIO0~29 */
|
|
|
|
|
#define GPIO_FUNC_PWM (4 << 0U) /* only available for GPIO0~29 */
|
|
|
|
|
#define GPIO_FUNC_SIO (5 << 0U) /* available for all GPIO */
|
|
|
|
|
#define GPIO_FUNC_PIO0 (6 << 0U) /* only available for GPIO0~29 */
|
|
|
|
|
#define GPIO_FUNC_PIO1 (7 << 0U) /* only available for GPIO0~29 */
|
|
|
|
|
#define GPIO_FUNC_CLOCK (8 << 0U) /* only available for GPIO20~25 */
|
|
|
|
|
#define GPIO_FUNC_USB (9 << 0U)
|
|
|
|
|
#define GPIO_FUNC_NULL (0x1F << 0U)
|
|
|
|
|
|
|
|
|
|
#define GPIO_OVER_OUT_NORMAL (0 << 8U)
|
|
|
|
|
#define GPIO_OVER_OUT_INVERSE (1 << 8U)
|
|
|
|
|
#define GPIO_OVER_OUT_LOW (2 << 8U)
|
|
|
|
|
#define GPIO_OVER_OUT_HIGH (3 << 8U)
|
|
|
|
|
|
|
|
|
|
#define GPIO_OVER_OE_NORMAL (0 << 12U)
|
|
|
|
|
#define GPIO_OVER_OE_INVERSE (1 << 12U)
|
|
|
|
|
#define GPIO_OVER_OE_DISABLE (2 << 12U)
|
|
|
|
|
#define GPIO_OVER_OE_ENABLE (3 << 12U)
|
|
|
|
|
|
|
|
|
|
#define GPIO_OVER_IN_NORMAL (0 << 16U)
|
|
|
|
|
#define GPIO_OVER_IN_INVERSE (1 << 16U)
|
|
|
|
|
#define GPIO_OVER_IN_LOW (2 << 16U)
|
|
|
|
|
#define GPIO_OVER_IN_HIGH (3 << 16U)
|
|
|
|
|
|
|
|
|
|
#define GPIO_OVER_IRQ_NORMAL (0 << 2U)
|
|
|
|
|
#define GPIO_OVER_IRQ_INVERSE (1 << 2U)
|
|
|
|
|
#define GPIO_OVER_IRQ_LOW (2 << 2U)
|
|
|
|
|
#define GPIO_OVER_IRQ_HIGH (3 << 2U)
|
|
|
|
|
|
|
|
|
|
#define GPIO_SLEW_FAST (1ULL << (0 + 32))
|
|
|
|
|
#define GPIO_SCHMITT (1ULL << (1 + 32))
|
|
|
|
|
#define GPIO_PULL_DOWN (1ULL << (2 + 32))
|
|
|
|
|
#define GPIO_PULL_UP (1ULL << (3 + 32))
|
|
|
|
|
#define GPIO_DRIVE_2MA (0ULL << (4 + 32))
|
|
|
|
|
#define GPIO_DRIVE_4MA (1ULL << (4 + 32))
|
|
|
|
|
#define GPIO_DRIVE_8MA (2ULL << (4 + 32))
|
|
|
|
|
#define GPIO_DRIVE_12MA (3ULL << (4 + 32))
|
|
|
|
|
#define GPIO_PAD_IE (1ULL << (6 + 32))
|
|
|
|
|
#define GPIO_PAD_OD (1ULL << (7 + 32))
|
|
|
|
|
|
|
|
|
|
#define GPIO_IRQ_NULL (0)
|
|
|
|
|
#define GPIO_IRQ_LEVEL_LOW (1)
|
|
|
|
|
#define GPIO_IRQ_LEVEL_HIGH (2)
|
|
|
|
|
#define GPIO_IRQ_EDGE_FALL (4)
|
|
|
|
|
#define GPIO_IRQ_EDGE_RISE (8)
|
2024-03-24 20:52:55 +08:00
|
|
|
|
|
|
|
|
#define GPIO_PADS_VOLTAGE_3V3 (0)
|
|
|
|
|
#define GPIO_PADS_VOLTAGE_1V8 (1)
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
uint8_t gpio_read(uint8_t pin);
|
|
|
|
|
void gpio_set(uint8_t pin);
|
|
|
|
|
void gpio_clear(uint8_t pin);
|
2025-05-31 21:33:48 +08:00
|
|
|
void gpio_init(uint8_t pin, uint64_t cfg);
|
2024-03-24 20:52:55 +08:00
|
|
|
|
|
|
|
|
uint8_t gpio_irq_get_raw_status(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_raw_status_clear(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_enable_proc0(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_disable_proc0(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_force_proc0(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_deforce_proc0(uint8_t pin, uint8_t irq);
|
|
|
|
|
uint8_t gpio_irq_get_status_proc0(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_enable_proc1(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_disable_proc1(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_force_proc1(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_deforce_proc1(uint8_t pin, uint8_t irq);
|
|
|
|
|
uint8_t gpio_irq_get_status_proc1(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_enable_dormant(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_disable_dormant(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_force_dormant(uint8_t pin, uint8_t irq);
|
|
|
|
|
void gpio_irq_deforce_dormant(uint8_t pin, uint8_t irq);
|
|
|
|
|
uint8_t gpio_irq_get_status_dormant(uint8_t pin, uint8_t irq);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif /* __HARDWARE_GPIO_H__ */
|