1 /* 2 * Copyright (C) 2020-2021 Alibaba Group Holding Limited 3 */ 4 5 #ifndef AOS_GPIO_H 6 #define AOS_GPIO_H 7 8 #include <aos/device_core.h> 9 10 #define AOS_GPIO_DIR_MASK ((uint32_t)0xF << 0) 11 #define AOS_GPIO_DIR_NONE ((uint32_t)0x0 << 0) 12 #define AOS_GPIO_DIR_INPUT ((uint32_t)0x1 << 0) 13 #define AOS_GPIO_DIR_OUTPUT ((uint32_t)0x2 << 0) 14 15 #define AOS_GPIO_INPUT_CFG_MASK ((uint32_t)0xF << 4) 16 #define AOS_GPIO_INPUT_CFG_DEFAULT ((uint32_t)0x0 << 4) 17 #define AOS_GPIO_INPUT_CFG_HI ((uint32_t)0x1 << 4) 18 #define AOS_GPIO_INPUT_CFG_PU ((uint32_t)0x2 << 4) 19 #define AOS_GPIO_INPUT_CFG_PD ((uint32_t)0x3 << 4) 20 21 #define AOS_GPIO_ICFG_MASK AOS_GPIO_INPUT_CFG_MASK 22 #define AOS_GPIO_ICFG_DEFAULT AOS_GPIO_INPUT_CFG_DEFAULT 23 #define AOS_GPIO_ICFG_HI AOS_GPIO_INPUT_CFG_HI 24 #define AOS_GPIO_ICFG_PU AOS_GPIO_INPUT_CFG_PU 25 #define AOS_GPIO_ICFG_PD AOS_GPIO_INPUT_CFG_PD 26 27 #define AOS_GPIO_IRQ_TRIG_MASK ((uint32_t)0xF << 8) 28 #define AOS_GPIO_IRQ_TRIG_NONE ((uint32_t)0x0 << 8) 29 #define AOS_GPIO_IRQ_TRIG_EDGE_RISING ((uint32_t)0x1 << 8) 30 #define AOS_GPIO_IRQ_TRIG_EDGE_FALLING ((uint32_t)0x2 << 8) 31 #define AOS_GPIO_IRQ_TRIG_EDGE_BOTH ((uint32_t)0x3 << 8) 32 #define AOS_GPIO_IRQ_TRIG_LEVEL_HIGH ((uint32_t)0x4 << 8) 33 #define AOS_GPIO_IRQ_TRIG_LEVEL_LOW ((uint32_t)0x5 << 8) 34 35 #define AOS_GPIO_IRQT_MASK AOS_GPIO_IRQ_TRIG_MASK 36 #define AOS_GPIO_IRQT_NONE AOS_GPIO_IRQ_TRIG_NONE 37 #define AOS_GPIO_IRQT_EDGE_RISING AOS_GPIO_IRQ_TRIG_EDGE_RISING 38 #define AOS_GPIO_IRQT_EDGE_FALLING AOS_GPIO_IRQ_TRIG_EDGE_FALLING 39 #define AOS_GPIO_IRQT_EDGE_BOTH AOS_GPIO_IRQ_TRIG_EDGE_BOTH 40 #define AOS_GPIO_IRQT_LEVEL_HIGH AOS_GPIO_IRQ_TRIG_LEVEL_HIGH 41 #define AOS_GPIO_IRQT_LEVEL_LOW AOS_GPIO_IRQ_TRIG_LEVEL_LOW 42 43 #define AOS_GPIO_IRQ_PRIO_MASK ((uint32_t)0xFF << 16) 44 #define AOS_GPIO_IRQ_PRIO(x) (((uint32_t)(x) & 0xFF) << 16) 45 #define AOS_GPIO_IRQ_PRIO_DEFAULT AOS_GPIO_IRQ_PRIO(0) 46 47 #define AOS_GPIO_OUTPUT_CFG_MASK ((uint32_t)0xF << 4) 48 #define AOS_GPIO_OUTPUT_CFG_DEFAULT ((uint32_t)0x0 << 4) 49 #define AOS_GPIO_OUTPUT_CFG_PP ((uint32_t)0x1 << 4) 50 #define AOS_GPIO_OUTPUT_CFG_ODNP ((uint32_t)0x2 << 4) 51 #define AOS_GPIO_OUTPUT_CFG_ODPU ((uint32_t)0x3 << 4) 52 53 #define AOS_GPIO_OCFG_MASK AOS_GPIO_OUTPUT_CFG_MASK 54 #define AOS_GPIO_OCFG_DEFAULT AOS_GPIO_OUTPUT_CFG_DEFAULT 55 #define AOS_GPIO_OCFG_PP AOS_GPIO_OUTPUT_CFG_PP 56 #define AOS_GPIO_OCFG_ODNP AOS_GPIO_OUTPUT_CFG_ODNP 57 #define AOS_GPIO_OCFG_ODPU AOS_GPIO_OUTPUT_CFG_ODPU 58 59 #define AOS_GPIO_OUTPUT_INIT_MASK ((uint32_t)0x1 << 8) 60 #define AOS_GPIO_OUTPUT_INIT_LOW ((uint32_t)0x0 << 8) 61 #define AOS_GPIO_OUTPUT_INIT_HIGH ((uint32_t)0x1 << 8) 62 63 typedef void (*aos_gpio_irq_handler_t)(int polarity, void *arg); 64 65 #endif /* AOS_GPIO_H */ 66